cldlod 775 146 144 260000 5151207514 5360  M$G"I#J"ga*HTHS/N"N" /NDX/N\`NVH0HzHxHzN6-@Hx Hn/N< gAv`4 n f$<Ԯ ЮЮHzbHx/./:/:/HxN-@/././:x/:x/. Ю/N&/ .Ю/N Hz"HxHzNfP-@JfX`"Hx//:/:/.֮/NDA-H-y-zlHnHx nNPL N^Nu o Hx` oHxG` o HxI` oHxN@eNu/HPHxHxHxN@/|HxN@/usr/lib/ld.so/dev/zerocrt0: no /usr/lib/ld.so %crt0: /usr/lib/ld.so mapping failure crt0: no /dev/zero N;Husage: cldlod cldfile > lodfile rbcannot open input file %sNV/ $n Hy2HxaPOrgHzHyLaRHxa Hz/*a#8POf/*HzaPOa*/98aBa $nN^Nu _END %01.*X NVa,aJ\g JdgaaJ\g Jdga /9/9HzHy8a N^Nucannot seek to symbol tablecannot read symbol table entry %d.cmt_START %s NVH80B(<;B/9\/98a5f Jg HzaXOdl\v֎/98HxHx /a(rg /HzfaPOHz~/a "POJfJf Jf(.` RdmHzUHy8a"POJmNJtgF$y6|g$/ a @GEXO 9йtb/ Hz Hy8a HzHy8a L N^Nucannot read file headerHeader has a bad magic numbercannot read optional file headercannot read linker file headerNV/98HxHxHya rg Hzba RXOA#p# d#\(Vr# fr#r#`6 fr` fr##` Hza XOAJgZJ g&/98Hx/Hya rg2Hz`(/98Hx/9Hya rgHza jrҹ#`N^Nucannot seek to string table lengthcannot read string table lengthcannot seek to string tablecannot read string tableNV/ 9d$@\B/ /98a2: Jg HzXa XO/98HxHxHyta rg y8(f HzAa pXO y8(gBt`vJtgn 9tY#t/a#BHj/98a1Jg Hza XO/98Hx/9t/9a0rgHza $nN^Nucannot seek to section headerscannot read section headersNVH0Bpllv֎B/9`/98a0 Jg Hza dXO/98HxHx4/a rg Hza cannot seek to raw data in section %scannot read raw data in section %s_BLOCKDATA X %01.*X %01.*X %01.*X _BLOCKDATA Y %01.*X %01.*X %01.*X _BLOCKDATA %s %01.*X %01.*X %01.*X _DATA %s %01.*X %01.*lX %01.*lX %01.*lX NVH88(nJgJg$, &,/ ab(XOrb2;*N4`<DLTZflrx~EX`ER`EM`EH`EC`|E@`vE=`pE9`jE6`dE3`^E0`XE-`RE*`LE&`FE#`@E `:E`4E`.E`(E`"E`E`E `E ` E`E",/a&@B/,/98a-Jg /Hza$PO/98Hx/,/ arg /HzaPO,2g LfX//9/,/9//9Hz$<8/E2N //9/,/9//9Hz/N`//9/,/9//9/ HzHy8a&`//9/ HzHy8a Blr&<8 Lf&//9/+/9Hz/aPKT`//9Hz/aR l^rDfl Hzm/aPOmHz[Hy8a~LN^Nucannot read auxiliary entry %d for symbol entry %dNVH<B/9\/98a+ Jg HzaTXOBdlzڎ/98HxHx /arg /HzaPO/a((RBXOl:/98HxHx Hnabrg//Hz*a RRmƶdmLT_NULLT_CHART_SHORTT_INTT_LONGT_FLOATT_DOUBLET_STRUCTT_UNIONT_ENUMT_MOET_UCHART_USHORTT_UINTT_ULONG_SYMBOL N %-19s %c %01.*lX _SYMBOL P %-19s I %01.*lX _SYMBOL X _SYMBOL Y _SYMBOL L NVH00$n<IJg&J`:vd &*to 9\& /HzaPO *Y&@ .g *Rvkb6; N0pvb,6; N0$$$$$$ $$$$$$$$<F"9@# @ 9@vb6; N0Zhv @gzHz`jp0v f@gHzHy8aPO/*/9/ HzHy8a`V@g*Hz`@gHz` @gHzHy8a|PO/*/9I// HzmHy8a^`#@L N^NuNV/././. /.a&DN^NuNVHxaJN^Nucannot write to output fileNVA (XH"(///a JlHzaN^Nucldlod: cldlodNVH80(9E &*Hz$<L/G5`N/ //a,Hz[/NJg#HzaXOHxaL N^NuNVH0..-n *@(@-T,-UHnHn/N[O Jk@ .f .g0-n( .r-@*BHn/N[Jlp` .L0N^NuNVNV//. /.N4rN^NuNV.../N6XO//. /.N4r..N^NuNVH0*nJg *.g EJfp`(n | ,+WDI~ag~rg&~wfJg~`~G`Jg~`~G` Jg~`~Hx//N;>O .mBGJg<<` rf|`|;F af$HxB/N;.O Jj/N[XOp`|+F+FB L0N^NuNVH *nA.0-f0-gm`p`j0-gNmA+HA+H+| HU//. NDO .HUN6XOmBB B`HU//. ND. L N^NuNVHy6NXpXON^NuNVH *n~Jgp0-g:0-f00-g~` HUN6XO.-I/N[XOJl~0-g/-N>XOBBmB+mB L N^NuNV.*n0-f&`<0-g$Jg -cHUN8zXO0-g0-gp`p*nN^NuNVH *n . 0- f< -Э c mRH+HF  fHUN8zXO~f `0-~~f0FBHxHn-I/N\V~gm p`0-~~f Jg -f$Jf 0-fHUN8XOJgp`0-f&HUN8zXOSm mRH+HF`L0-g2 D l( m  g mRH+H(`HU mp`HUp/N7PO0-gp`pL N^NuNVH0*n(m,-+L0-g~`.- *Jl~`. -Э l HUN:XXOJo /HT-I/N\Vg m p`pL0N^NuNVH *n0-~~g0-fp`hpmrA;@0-fNJf HUN9XO -f40-f(* Jl~`. -Э l HUN:XXOpL N^NuNVH *n-I,0-g yAn+H~+G `z/NDPXOJgm.<`Hn/N[POJm..n.< P/N=XO+@g m+G ` yAn+H~+G mm+mL N^NuNV"n i j#H`l"N^NuNVH *n0-f0-gm`p`n.. 0-gNmA+HA+H+| HU/./NDO .HUN6XOmBB B`HU/./ND. L N^NuN\hHxN@eNuN\hHxN@eNuHN^`J@g N^LNuHx=HzHxN\VHxcN\`MC68881 floating point not available -- program requires it o"HrJWfS NuNVH0(|*T*. ,.`d(M`I*TJf~`.- dNC.gD( GBB!F!E F (GXJgc (I*m` G . *UJf G (L0N^NuNVH0*n(U,fx` F(( .,fz` G*( gte8JghJf F (X/HyNCPO`N*X*F,fx`< F(( `4Jg0Jf G (X/HyNCPO`**G.fz` G*( fBHTNCXOL0N^NuNVH0*n UJfp` ( (P"hJf~`&., ` e*K(UJf~`., `**I"UJfr`") bвb* !IL0N^NuNVH0(.X~dx`VJfz` y*( d/NB`XOJfp`(|*T` b dI*C`eI*C`(M*E*&-Jf~` E.( Jf|` C,( dd - ~b*-HTNXOXL L0N^NuNVH8*n ~fecHUHyNCPOp`G(AH,Hx/HSNAXO ~fp`.. Xzdv`V&e//HSN?`db(|*T F*` I`(M*TJf~`.- e:.-e伇b.ޅe&HTNXO L8N^NuNVH<*. ,.$F&|`&M`G*SJf~`.- e(mfHSNXOp`FHSNXOHjN>XOp`pLXOpL N^NuNVH Jg*y y#`Jnp.< /N\xXO*@rfHyQNCXOp`\Jf#*A##Ax# 9#H߹S*y~߹ L N^NuNV n #N^NuNVr#N^NuNVH ..`#/-/ UNPO*yJfN6/N\`XOL N^NuNV..9HnHy@T/.N\&Jl #p`p..N^NuNVHyLN6XO/.Nd8XON^NuNV. n "nfJfp` I I..N^NuNVH^00xuspolihdcXUODB.B.B.B.B.B.`&|`|`|`|`|RMI| g|#g|+g|-g|0g`\JgHn/./.NSO B 2n .C -I-Q`-n/.Hn/.NU~O RM *fRMHnHUNVPO*gtJgHn/./.NSO B 2n .C -I-Q`-n/.Hn/.NU~O n,XJjD|*E`H n,XJj:D|`0|B`Iz0܆"܁܀-FHA0f .fRM *fRMHnHUNVPO(ghJgHn/./.NSO B 2n .C -I-Q`-n/.Hn/.NU~O n*X*D`6 n*X`*zHA0gIx0څ"ځڀ`z $gB-|B-|`h|`^| `|`|Jlz n(X .dg .Dg .if.Jl -|D`J.g -|`J.g-|J.g/.N;XO(Fo* .Xf&9t`&9pI.Irgrg`@Jg@p C0f`0Jg,p C0f` L| C0L|@ JfA& Ѕ-@J.gf2` lz-E`-|`-|`.IzXgzogzxg`dJlzJ.f8 n-P-hPHnHnHn R//./.NuO`6(nv֌ n(XeHnHnHn R/HnNpO(@Jg -|`J.g -|`J.g-| .9oIA& CJgR`A&Jg`x0 CRJfJ.g CR-E`JgS CRJnI .0g*.SjD` A*x`8zHnp0/NPOB.xdm l A*x`A*x-DS(Jn .0fz+`z- DS-D DJ.fz`z.Ig/.N;XOA"ЁЮЮ"-A`JlzJ.f4 n-P-hPHnHnHn//./.NvO`2(nv֌ n(XeHnHnHn/HnNFO(@Jg -|`J.g -|`J.g-| .9oIA& CJgR`A&(.n C0R`Jf C0` CRSfJ.fJo CR( -@`RJoJf C0` CRSjJ.f8|`.I" g"/.N;XOA"ЁЮ"-AI`$Jlz`JfzJ.f4 n-P-hPHn.I///./.NyO`2(nv֌ n(XeHn.I//HnNrTf0;NpzpzRzznzxusonlihgfedcXUOLGEDJlz`*.Jlx`(./.N;XO-@/.N;XO J.fz`6Sj,0+g D m'JHSN8zXO$k.S RSj`XOBp`. yA|#.<$*y`*rށ epL N^NuNV.Jf NWJg.*yd JfHxHxNcPO*XMe*nN^NuNV.JgfJf**|$0-g HU nNXOKd6`*yd&Jg U0(g / nNXOXMe*nN^NuNVH0&. o(.np`*LX(n*nJn"HUN]XO~f ڃSLCP`VSRd.`.,//-HTNcO І(@ݭJj|`, -Э l HUN:XXOf L0N^NuNVH *n&.*. ~m0-g~lvJgp0-fh(.Jf4HxB-I/N;.O .|f ` Ѕ.|̅`|0-f Jon -m ߭`|0-g+mm|//-I/N;.O .BJgv|gpSm mRH+Hp(` HUN]XO|fJ`N0-gN@eNuN\hHxYN@eNuN\hHx@N@eNuN\hHx6N@eNuN\hHxmN@eNuN\hHxnN@eNuN\hHxN@eNuHxN@#pNu /Vrй/@HxN@e 9#NuN\hHN^h / |x p////////NN^LHxN@N\hHxlN@eNuNVH *n0-f0-gm0-~PfJf HUN9XO$f409HgHy8N6XO09\gHyLN6XO+m0-g~`.- //--I/N*Sm mRH+Hp(`* gm `m0-gmBpL N^NuH 9 @f0<`$ @f0<` @f0< ` @f0<NqA`#q"XfNBLNuNa//A ( @g, 9 @fN_` @fN^` @faZNuA  @g*  @fN`X` @fN^` @fN_n/WNu(NuNu"y0)g1|c `"JijHh /<@/9N\& 3|c3|@ !Q!Q!Q !Q!Q!Q!QNu"y0)g`"JijHh$/<@/9N\& 3|c3|A"""" """"0)g3h Nu"| #"| "|#|#|#|<<Nu#,"| """"""""ؑL"|""""| (#@#h X#| AN` (AN`NuH@f@#H@f @#NuNVr#h n\ N^NuNV.Jg f~#`-|aBBHnHnHxN[O BhN@HnHnHxN[O Jhg~`~# fN~#NXJf6HybHyLN5`POHybPHyLN5`POHyLN6XON@ fp`p..N^Nu Please note: MC68881 upgrade to A93N mask may be advisable. See Floating-Point Programmer's Guide. o"o / oL" lDm@2gS" f"`"QB@Sd `QB@SdNun`QB@SdNu` QB@SdNu"o o / oL" lDmD2gS" f"`"QB@Sd `QB@Sd /Nun`QB@Sd /Nu` QB@Sd /Nu"/g"o / o0/gS @`"QB@Sd g2g /NuNVH,.L.` /N=XO.fp`//NPO LN^NuNV/.N>XON^NuNVH0(nKJg$Jg *HTN;XO+@PM*r+APM 9`d 9A(p `(|*/N;XO+@PM*r+AA R/HnHxNL0N^NuNVH"nrI.A0xfDA0xgRII.`rRII.` |+g|-gA0xfp`2|0`܆ ܀p0܀RII.A0xfJfD LN^NuNVArN^NuNVArN^NuNVArN^NuNVArN^NuNVAr@N^NuNVArN^NuNVArN^NuNVArN^NuNVAN^NuNVArN^NuNVAr N^NuNVp SDN^NuNV .rN^NuNVH n...Sk fSH `pLN^NuNVHJ9fNt(.*. fJfx~,<*<+//NDPOJfRrځ܁rmJgXHyHyNPO~,<HyHyNPO/HyNPOzޅe <` <` "DЁ `Hx//Nu8POJg6/N;XO~xn/HyNPO.<|Hy/NuPO.fp`&/HxNfPOJfp` /HxNfPOJfp`/HxNfPOJfp`/HxNfPOJflp`/HxNfPOJfTp`/HxNfPOJfmJGg0HxHnHyNcO HxHnHy8NcO JfHy+Hn/NkO .gp GJgDJg/9N>XO#Hx0AO"O0< "Q/9|NcO8JflHy:/HxHyNoO>lp`RJGg H/N[XOJf0HyIHn/NlO .g GJg4Jg/9N>XO#Hx0Hn/9|NcO JfHyX/HxHyNoO>l ByJp`JGgByJH/N[XOJfHyg/HxHyNoO>m4JGg H/N[XOJfVHyv/HxHyNoO>lp`>JGg.H/N[XO` ~b0; N<>B/NfPOLN^NuNV././.HxHyNoO.o2Hx/. /NO g /N[XO~/N[XO ..N^NuNVH /./.HxHyNoO*mJf <`Hn/N[POJf .T/N=XO.g/.//NO fb*n ,ܮ F R FBHU/NnbPO,g2Hm/NnbPO,g Hm/NnPOJg/N[XO `/N[XO/N>XOpL N^NuNVH /./.HxHyNoO,mJf <`Hn/N[POJfx .T/N=XO*gb/.//NO f>*n .ޮ G R GBHm /NnbPO.g Hm/NnbPO.gHm/NnbPO.gHm/NnbPO.gHm/NnPO.gHm /NnbPO.gHm$/NnbPO.gHm)/NnPO.g~Hm*/NoLPO.glHm+/NoLPO.gZHm,/NoLPO.gHHm-/NoLPO.g6Hm./NnPO.g$Hm//NnPOJg/N[XO <I`/N[XO/N>XOpL N^NuNV... n Hx /Nu8PO.fp` GBR ..N^NuNV."nJg n `"Jfp`*r0mr9nr0`RII.r fB ..N^NuNVH"nJg  f n `6|` r0mr9op`&܆"܁܇~0RII.r f n B LN^NuNV.*nJg\ n  f`P`@B`<"MRMIrFgrNgrTgrYgrfgrngrtgrygp`  gp`B *nN^NuNVH *n.. GJfjHUNxXO.g GJfVHyNxXO.g GJf>J9f0HyNxXO.g GJfHy`/HyNPO.< . "DЁ //NDPOJf//.NPOp`/N;XO|op`HyHnNPOHUHnNPOHyHnNPO/HnNPOBHnN;>PO,l\ fPHyHnNPOHUHnNPOHyHnNPO/HnNPOBHnN;>PO,Jm//.NPO  fHyHnNPOBHnN;>PO.rf Nt~`HxHn/NO rgNt~/N[XOp`HnHyNPO#,J0g/90N>XOJoV/.N=XO*@/.HU/NO g/N[XONt~p`#0/N[XO L N^NuB0/N[XONt~p`NV 9|N^NuNVH ,<.<*|J:fHxN=XO#:J:gz/N;XOR/N=XO#>g\//9>NPO/N;XOR/N=XO#Bg.//9BNPOHUN;XOR/N=XO#Ffp`DHU/9FNPO,9>~ y:Hpt/NnbPO,RG G m~ y:Hpt0/NnbPO,RG G m,9B~ y:Hpt`/NnbPO,RG Gm~ y:Hpt|/NnbPO,RG Gm,9F 9://NnbPO, 9://NnbPO, 9://NnbPO, 9://NnbPO, 9://NnbPO, 9://NnbPO 9:L N^NuNVHyHyNPOB,J0g/90N>XOB0B4N^NuNV.~Hy.0H"DЁ/NPORG GmHy0HyNPOHy8HyLNPO#:#>..N^NuNV n.f `JfpN^NuNV."n n `*H`gRMJfJgRIJf *nN^NuNVH ..f.9DJg/. /NuXPOЇ*@Jfp`(/. HUNPO.fBD` GBR#D L N^NuNVH0,.-y~-G-FHnHnHnHnNV n *n*. .~b|0; N. FXX .І*JoVK(EAi .ݻe`@~*Jo8*E(F0e`(B.9Xrm |` B.9T|*G(Eކݻe EB0h L0N^NuNVH *.-yB-EHnHnHnHnNV n (... .|b0; ND rJm G . ` G ~K,` FRRm DB`d GB D0:|o~ބڄ, G0RMReB5H`6 GB,9X~mz` GB,9Tz.*D܅ GRe DB0X L N^NuNVH<(n ..Nrf @ P*GJg G-R*G`r0JgƙSJ. l0RL`~l(yp`(yl`(ytJgV`Jn VDo 6|~`RKREx JfJf %0ggRMe(lSLJk+` - D(@Hnp0 /NPO~I`RRL 0g|o~`|nIxAVH.ܹc`pn6~&G` RRK Ьm&GJ4 g@l<. &Jx Rm`,0~`0R ,ЊDm~`RGx JfJf4 %0gg*RM`&$n*. ~b0; NvBL.S,Ai ,`SU FJPgHn@p06{ /NPOzA@,`RR F 0g|xn"AY @*( A@VH& D"ERRRcSk2Ay .Ah*A(/ Gp0/NPOXXUdB5h n n A .谈g /NXOL $N^NuNV@H8&n..v0B G'P& g f^(n l f l n~`0A"G0< QAC0<"Q nB`, mB` .rJlDD`~fD .RjЇ,~K`BRe|lAx.AA, GBXe`r .Rj~Ї,~K`BRe .rJlDD`rpS.xFxR.|lAx.AA, GBXeHnNhXOJg6 f.,R`.<DHnpHntHnx/HnN{0O`BpBt$.pԮtxJfJl fj ,Ro` f.,T c.<|`~,,T c,<HnhHnlHnp//HnN|O(.lخh f*.po*,~JoK Ax,Axڈ FRRe*npto*llA ,܈ F0RRef'G '@lLpd 6y xR`v0Ay x,` pd RR F 0gpd~-GJg.~-G`$JgJlov0|`.p|.Ai p,`l RR F 0gl~-G`*,Jf|Kp`RRM 0gچڮlܮl`|o* D'@lo(.l`(lK 0RRmlK l pRRm윮lhl:Jlv0`6i pRj|Ki p` hl RRM 0ghl"|-F`A ,܇` F0RRm'G/.I//.HSHTNz `6Jm Ь l~K Ax,` FRRpelK Ax, F0RRe*o*,lo(.l`(|JoK 0RRmlK l pRRmK `0RRm'G'Bl.hlJf8Jf2p`JfJfJfpLN^NuJngp`Jngp0. dp`NVH0(n |A.AA* G hXXe*n*+n+n+n~Bx X|m0.@g`0.@ @gp0.@?+@~+Gp0.+@ HxHUN:PO` ~+G`BL0N^Nup0.g~+G+|p0.+@ HUNhXO`p0.g.g~+G`~+GHxNXOp0.@+@ Hx`\NVH| n >. p0.L| p0Ҁ`L|p QLN^NuNVH8|xz(nv6. $S*n `0/ 04 /p0/NO .dRD,RTM.e&n0. ޮ L|'rL|p'LN^NuNV...g n p0ހ0.p0. Ю.L|'rL|p'LN^NuNV0. 'Ю N^NuNVH~>. rޮ L|'rL|p'LN^NuNVH.. L|'rL|p'LN^NuNVH0(n8,~|Kz:.p0(`$//p0/N O .0(z|6.Cx8`~>ޅ0tކ r2,UId n0LN^NuNVH0~|(nKz:.`$//p0/NO .0,|*.Kx8.v6`$//p0/NO *0,Ukކ Gp0/HUNPPOUd~`BHUNPPO|ކ0,H|o0,Ho0,H/HUNPOBmL0N^NuNV0.rJ@g n "n2RA@eN^NuNV.*nHUN>XO*nN^NuNV`#/. Hx/HyHyHn`NOHn`NDXONN^NuNVhH<*n(.Bn-MJm ~-G`DB`=| =y=y=y:-|-|-|:BBB-|-|-|H RjVT=@`=|=yl=y=y-|n-|-|-|x-|-|9-|-|Z-|9 Rj~ЇT=@` . ~g~ gt,.A.A*A\H( Gp0"L@ E0 Gp0L@`TTe~-GxAH(` DJPf SUJlJo2/p0./p0./p0./HyN n~ `v<-A.A*A\H( Gp0 E PA "Gp0"E"QC 0)P@TXeԼnd=FƼUb n `px8/N=XO(f nB` n p0-/Hm n \/NO n P1m n P1m n*P:BJkFp0.-@p0.-@A-HGEA-HJSgp0 R00 r2 R20-@p0--@Jl,`:0-HDj~Ї-@`$0-HDjV-@` .~g~ g nf*p0 n PA 0np0 n PA 0Hm g\ gf .~g~ g`p0/HUNPO`Bp0 n PA p0/HUNO ` .~g~ g`<-/.p0 R00  n PHp HmNO ;n .~g~ fp0/HUNPO`~Bp0/HUNO `fBn`=|' .e .Vn(.خAJBh,Ukp0.".-A6$.S(.R*p0 R00 (n(TI l*Jl~`Hn Ht HuzR/NOJngAHHhp0./N@POJngAHHhp0./N@PO`vHn Ht HuzR/NHOJngAHHhp0./NlPOJng,AHHhp0./NlPO` .rg,r gIH8>p0A Jhf>SGnc p0:`z .f@.Tp0b40,nb*p0,r2g:Jmnp0u <` SUJjl| .Ю;@p0-A JhfSm`RFp0A .JPgJFgBx8p0-//HmNO m .~g~ g` ` mRTKXXJX .o .gR @0-PbH n1m n1mp0-/Hm .\/NO n/NXO n L?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~DFGHIJKLMNL///LC_TIMELANGINFOLC_COLLATELC_MESSAGESLC_CTYPELC_NUMERICLC_MONETARYLANGLC_defaultC/etc/locale///usr/share/lib/locale//.ciJan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November DecemberSun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday%H:%M:%S %m/%d/%y %a %b %e %T %Z %Y AM PM %A, %B %e, %Y CdefaultCyesno.\`NaNInfinity|InfinityInfNaN binary exponent %d binary exponent %d decimal exponent %d decimal exponent %d libc base conversion file %s line %d: %s_XX.c _times_power failed due to exponent %d %d %d leftover: %d dhNaNInfinityInfInfinityNaNag s;.?a*c&՛ap%u ,!j`;}s`+i7$fnIou^t6n16B(y$ބgW˦,6Lٲ_ ]xce,2,yI1!(dvF# wSEwޭ-􅊘7s{yΔӴ C]L>Tܝ))h|}zOePhbhcPEI[p(/CI&@j oHA^hfC&{/j]-=' !fz P:ӑ8K֤A?(5T>xSJ)j(a5XdvUd/ޏq&&RtYUC$3Q"cdb܋1(rS5#Շ #TXc* J\f_FIP yQGp3CC y'WϞփ p}LP-o64)\ޝGLRكC Kݑ5z ٭ȩFsұEƀi^ħ@-Ze1roM˵~Eʌ(ds6PAi4IAu줭I&nUxaY9btCP\zF˜k8bڔ)슐?%khnk*Gj"*|QWiUk ;.W fi5 X7J"nVntʬVn689sbTxs5U XPzrcE\W$#ÈB1APLpdܹiM޷ZJN:fH4J1h.<>Kv=R-F> y7""9dഥX|i*1DhBY%λKG&2PJJv9_?oCb J&Bq'k|*m&u':i\ gy=o.-F&%+h v!h| 席aAHl@m $+RYI"ڤ QS:RpYzsu!LFsGfQpO1@[mblՙrh{J:*貐UVP;mƋ֫?-P9G䖖ptڭJb:IX9IClyA7tU -skje$ty6lrttAɦR;@~ JrAQܳnDSh%Rq}1sa?rlLDG6Nbjo;ڢOɤ:UR}PJ牅ض/>*35^dLJQ# 1v7\\ݻz"4#FrcAo/ejB(Gq[ .z>295I!t@52+x!7u8mj "#sTP!.m\Uy#$R&MWx=MZ!FCn8jg~3n0< owPױ8' aCzG~pʾ+!t)qyL;]u$}I`lsУ||;J\u<[ M$j\ђ9hY`"Xݎ?m%*[6ҋ t*.hdby:Gu]Cوz&a!$X7gAƼG@1QS"b4.pZ7ɇIᮓXүHwwCv EDwέBrLE`5L@A]ɜ'@WR+%A4EKђX86I[qZb#' - ;WTwҤYPE}4Н&B=ʟwP)lȿL_z' ' H"f|:Pе>P& y^|i91wԷ3 M("g2#{N+ y/375~7fJ:*ɤ `Rl5ܔ` hҖVWNjkg/啌̈́ H&4B\-diEхH5Ve s$hD|gqbZQlkE=eG3 W<$[`s4ưgͦ<.ҧ&Χ'O>"@WE7bm!#vIrw}:{Eos0 D%{F]Uw{2(Y| d56"(;FDVߏ\ 1/x߿ِ "0V8 C6xb*pkM~|ez"Xn՟ QO3F}j[FcTKpRGE#;-)',NW_"QA .hVZc8"{V)`t1> p{̮9wW]\¼O֧SgI3 >yFaz\xc (l}қ_k1 "L"vZ3gZ&LB'u3(- };]y*36̓6LisWힴ .By"pBvxa}./>hY!S15 ,C = '["ERճJzBvY.Y.4y-/KG jZ ; c#1%Xݕ=I4r^8>ָ=%!YH׼-gYR Wd( Oɢ>=룘y:ͮhCʡ,rƩhE![?DBݻOaCJLN_3>ҳ6wREM2 BxRR!$>HhHa碬a5NO~&)h ςnD s)kj@)nM RM:wpƴA`sDڙ@REz|᜾w*8uH)7tyX7Xl p$ٽHd\a;*f d {ZE]Ś|E{MQ9BF" s+:!*T sǹ|gƳUymŃaM8 Tj3(edY <ǒ7v%Jei?ߏv6?5+9w('"BZ6ɇ!/9@Χ*Z#85F&ż:0:4`1[+9tvvG)OhEQ)򶅃oa``FWѵ2ߗi+INR"ˍ3os -{ObLqQ :=A9 VWanfyH`l+Y>'KZT43as,$+&HԱ %w[rGd0~9ރe{"x-21z@A쭜)ïp,I¼{Bת,PȼOg V度x\v;#þ9y{y@% ]}8ԣ*` C3f*icpSj9Lua==hcfn}^NR3Dl]& ]sl"w2hrA F+%J+M]}KXZ2hIŽ!2E%=^/iu{nz(/(C> z!+Y5{9`Tr-g6:-(BA1~rsܝ.%TSDB4 Ho ˧y-~f[yP1N=T|x\V#P$'ТhGnz/;}糑[+N :zsnľ^Rܤ)=La0ת!Gh@:",^7!%%;LD]M{=dz<ҭ%e!b\c e+6>rQ3Cmv, {.M''XLKUO]]5"cX$TUK(h T-lhUNM?oxOۧ9C@m(CPfQ_s+vORMsD2&8ivZ1ۆ-7z&$(-iFc{d%B )7&WXS o4țM`)f%CiSR f0K/()qLJ AMc"}լp|4#6{k}{>IOSv7)0OOU|b>9&xgrJ\RQIH;\tك_?~ =Tĵ?_SE&Y  5<mK9Pv=6~яQ( /H+4j&%G@.pkKv4*dڗ#1e 9,0٪[Z8rUم<aIXOŌQrp" sh3L?i 0f mu VvtMH9¡D:u~r[o |,S )}x7 O}EJH?7@ahBb0TA_1CZw ~%T3dպVD|]5-TQh}@v;_tT#8Bn/"'SAnP+yAFN7P(9IB_9Ezr6 `#cAUsЄ^Va? z!Ķ &$%u)d~K]] V~ UW&C:X1Pz9* Rav_#ĉv ԡ(KP4]=߶NvZ q eS]"Or/k[Q2k 2>i6ix]/jO!C x@nޭW){z͢%Xj8hz0'w4Oc' :+>Xg?m֏GRP΀9$V/ǘ(lChs,dS'y&1L=Jf, 6P 0J!Kuc| OP%T= wK' |IVTm d \y tarr+M$B~zr;Epbe)&dy$@h} alq7LO_d)U6&$6-z1*xh% |§L(2PX0M=kJ%L& ̡KA SM oN& '[Ȋ ,'! J7V; ?=ԍccsЫ*-\OKETS)(i!w^Ƃ=8T+kaU&WF73V7?-_)wEàc@5q F?y 0M y2x慠79&%W tڥܨ >י^g~xA_[Jua.`KdRZ7/Aiklr",0ypVgmCvKwtdIW~Toα⿕Z栰y^KrrL'Z0RC8=ulMro=W^߉BPZ7F>7avF#%U=1&+1T4o=HZ)-gLd43֤rE8GJaF!w +vauwWbUuaA%x`$5aY]J6RXю/ spL Caj!kgϓT悎DDHn,f/UMkURudlXUh[E}#BXaO ?X%fcJDY7Ǣ,>uv m #3*H' #$sX,gz,w[uF@ ՙHT]^?]-eb! )һ]y'q,(c̍R+wBO6׹ـWIG:@]FjKuϝISuhrj)Ëj0kc';Y O!:3b.j*!h(Lb(ןe*I| }{,0'E3$!(eSX#^~oFjyi6o^=vZh/Eö/.i@_g fs(ԌhGܤ'2 v,0& >y-NWLVʼn~8ZQyG7y쮦GVpk x<;_{=V]ib恻Z$a='5ϊ?P/GM̓{ϥo+HRїqBfK|"HXV6[rf$<,9sTe$DIؽ|7xPA!n?C 9M۩yyЏ LJ68RAݚA ?Oؾ.Hj氼=o .Oum$3 )poxvO>u %Ƽj@!}N%"Zuy^wO 8@a' 0 @{I/t4P=8Ck((uItrX`-Iyu#!~n1-79]GNJh%w" -1!WH I w4U{=JI[ujcǢ¼h@,]턥i9-\>Wr N"?ߵ!(Kl;3p>Hu>\.d O#)l缌.j' \fіPcDѮ xakBh&(&/ jcG$wN끱.]TSOd"p34Yɼ$Cz)t )6=N_ 6 A -CZp$ c J  fDBF % %{ ) f# "s-$$ 0$ Z%L!3 0 Kg6$ ,"ll W a` ! "|$ {&0"djz  =%# # /&d f% Shz&UY%D !D%o& FF%<h&cf j= sqW |&|P!<q  s (!e!rl{!#v 7?  "&#"/L C%1s yJ T!c!^#o  H '&Q#w n&z] !{p|" &pg #2   !0 X n Fc#Gx / hP#m  / L&n! k *#u!& !   b!\T?I pV%c T| &T~"# xYHlDC1< '1l C+ ve$ (UJ*$ /R#%"+ Y @i9X'&z G=,# 9  |}|% z#+& "2! %{< "g8]? j# i( q rk& H{"+$ v&l "4 [I!" "j$L  I /&U!&   D 1 %8V. V`!"  $~ %-!F& c@) &x 3 T, )9$GN & mu%%%~&:&<n!C% !%!41%"P # " -$@$} Sh%- P$ ]%"&; .$:! e"H )"sZ"&#% ` Q!#P 3$ r "&c'j> %W"7&W "9 (&}&@ #:~ ' e8I%fw& rn- a& 2c%>& ^< 2a&/  'V`jh%^("  $4{O%S|" >' N 6%m4 N%F "  @%P!FL 1!2 (bK j$# <o7E"l$%I!,  !1 q/K"$G ;"{&k " l yP.$:$"$ , !%  \u$ h  &,5& '%b"$ g  z W &| #Oz k A  M?U3* - <&&jM#{!n$& r s"s=&iG m&:#$/$ p" V , FO-- 9% $ E  Q)L "J{3Wz"e%=7Gw # " N [ v U . R! H 1!$ G {=ukI"_i i}f e#"; "' c  i &]Y "tZ -#&`d:@#O$! `#%     &A 0*M#z v v#A & L m #!Mf!&*!%L%  # =&R % i&i $.!a 3 >$&2  #m[(@o  e l4!Np6 "&\  & 6N%A^a ! :%J` <$; (!v /^;"!< d H}%"";| n 0"6A# o  rh Bm2@e Q@" %%! D$:$<" mH$"iz& @_'&#M %%RB{}"= &bw!51 `j&$&jgs%e/%!p$S#} wt#,#"#" (v,E0)D%7""Z%m gL  #C  $&P=_  $$v&4 B $T$ 1#<2Q&+ u MU\  EtK H i  < L N ;$ "]! !U#q ~  ;#"; HaB$"_W#< c !bi($3 j &>>$ ! %A &eh!& %x" !~ "9*Ny"#&D $1$. "L2! w   zX" m W5 z:*G`"M #H hMk y+ @!| #a o("  $tf%J`#   $&f3 y  # g"p\C 'j $oTDK_h$= @ }JD#C mOD%! i gid&%!]8$WM d&3 $A v$K8!ot& :% ( "/ f) -^$D5 o "SW #!_%" G=%@h&h= q !!B$,#^Sr \& E!g Q&rP$ $3oB ` &#M2! q i&; 0r#],lK  3 @ =" ! %&K ^!; v!Kh/ 9& +$t})!W "D$+$v*"$ n,C"  c%"u N$K2! p;"z> ] S ,m$A~#s#,%HN "[")V "Q!U ? !Lz%l=w"#$; *y% _@ " ,8"=  {$ > v0a&&Gas #' X B#L!,I#aG #[ 9 <U A #W !%+8%:" $  S ~"rZJ '#f*.&({  DIfY!)%.c<=}!Lh&U&:$%M &s #6 X#?F G  KT U 3 & T}cd hQ#6F":!X  pV8 PP#  # 9{m% D'  S?_ %E[ ! W%!n& &u #?t#P !")[i" /$lHW o!"!}#Ay@ B%    _#!I d!I `r&, |azv q\fI $$'WFq 8"^ 1 !7"#q- m d ;& &24 !4%D li %Svl&[&]"F-= ; `&% DF"Nd RM# \t% &'#^ sS R `Jc"+dL. Q#)  VX%65 B |&1h> : ( %$%b- k%&W&>+  , b\ a$f#Z8"= >#l "&  " i%3 ObcA hUs$xS% !&_%Kfr R#$'H?U% #]!> }j!"a&Y i"u 3l  C", gQr+% o + %n-_"! ~%G#I ,!c  F$|  "[]&C|wfj%u i&? %5I% L\"L:}ps S K  |Fx 8$ ZV 3M %T    0  U&# =5#"o&T? 3 M / & B 3 \$# | w     %&}#4&< l! &u4#NxG&#X}$ 9 {  0 %([ 4  91 !o""!   & !O $ !g=#"w&&%e ?i, 2&"V!G % #<  $%SS  fU  $W@ U @,Y$ e _0'"ss&= V !: X$=@w !t\&&x ] g!+"(  < %?Y G$!& I~!H#k&"\A$$&# "} $x ;f% z f   3CJ w/ G%k9\,&%"u}%k C% $m&" "  B?Wfk'",>   ##CR%w#X#v!+%A%""D!]$eR@ eb*?%BQ#r "O y Dd !q*% >!e"t D f"G$8"U B%n&#-!:&d@!F#G}  8}Gq A T$( #r &C%Q#at@ (%#"j !& "%& :K&: H$ [O\sn: U#9!b 3jE! k# %z" &H<$ 4! " IQ% )%% \ G;&q%&!O .$&d&a G0_q\PR A[` &- mk"f  2 !"U l  \>! %s  )$4,D"% :[9 J D&nE% }q$S )"@a!  HEP* uY"d%d6)%{ DP$#  )P K v&s  # $ $a&U!q$#%8 cDy )V!  K$!J"G 5WJ7 " ##%G ,  W ^#*I60 !"$ ^<K?&7[H$} ! W%w" $}KW# Y %$I& v!H%$ Ej%OT %bME! " ! d")  zV%i ? Sd`i  s$hb$6E >U%& "b]E-  h$ v /h /G"!F V n#}%J" f& 30T; xs @ v#3"6"B%= )d%$&f& ! Hb} F!e 3 *#;P; #@ V. ):  ' $s&J!Pd%c.% !y; h Q&=@ #^ ?/"c& "*$[J 3 A ` h m %0&w|k  |c%Y!-!(` &CX az!]!$W ] &i\  ## k%J z Hr >$_g#l: jh<!|  #?Z@l Ab"U 2<n+!P L P!( :$] :,-6!2Q"''#s'(  ?gzr54 != ~N   oLf .$| Q"2 #%&y ACG"vdy%"x  Gj!P(K c&j!i%xi $N% l4#r &Z|! Q j0#\k fZ j k v%a5N 3$a; &  !_"uE"# \Y ) `}#W9#9 !g [;/  )"#6 /"5 @%7$&0E %4%o&%t u WL#%# s#jIcs[w a&#QyJ%(< "C"5 L G##D ZO !t$m&vi r # ]b^%&o(%^ ~! s#7 8 " [ & U$ 6 3J 3#$_" v "Dou#~__# Nlw ;["#c"h Bs/`{"$ Hq '+} %& % BPz;t K u Z$l y#zn O 3' _ $Q594&G M!"? I!:`om;< RXA&'h% 8n kU| B&% :H & $#P  ;3$ &3$-b&  u ;2Ko}:l  hf! \M %IX?#g$ $ 9!"L_[$&aa!m d#PP g0 r "$ HZ M -M!%"_0}'Q" . mA<) %5" _S$!!   `-# $|! %D!= ! !Y % Vh2"#5# ;# 8#5 $"R %~}!!pcF c *( ~P 37Q(Xx z  !U2A ; ` "&     c#D 6 e I!8v gsA9X  ##$T ~ U X& " gb z%)kf ;#wu;! $.3 S$# F"n  N'! %;J M#EY K  w !z'"ora#3,$ >q  P " Hdt$:@ #,c ;Y # s \   " w  %>e@"(!|k2 5#. X%; # " f \GH$(! Za M:"qk" c!a yT )Q]0$i # "[&% ."u%Cf#f`#Y!&tmMF %(# ,~$..kqfo&!f&?j  UMFIM&c eRa ;#^+C +#Ob    #A$#Z"& z%j $BE jg #  $%s$!  X$ H&0 )j' ;&~@ /&;M wtV' 1% G#  T4Kzs  $6 -2B&f#C %`%T n' ^ rJ  & i5YVL=g "&~"8 N..y vk  (^ U=6? !  M4 ;~&l&r62%w#&J^ /l( ]p%?  5&s.%?u ,#q !2$&d##3 #"#z"!3  N!$$N&@,.% w "@l!t }X&/4$" t#%m?& =j!Jaa#jX )A!OO U  c$* (w  * "&" &w!g Gynilh k #s3  k R q%mI$j&  1a&& H <Z! %   q OE|tH!# :$ lXn2M$P#K ,# ."D =; r" %:! c H!j&6Q 3 $ Ed#0!r"$H \P%!t#`\|@zHY7Y !"`n !!PN@$ _ 0mPsX#l# d" t [S  -% Ks %& " "M"4&#~"Z H" 2N# C!#y$U" `  %$^"7!9 $91SHj6"\;$!i<"`V"1& [&E =$& K &$' j Z6  0& %K&9!aqW!U!c !: p !K% #UE n!& <_#&v&: b [-l Yt ;/K"@m>" y `*$M!_% \X" 'U xN# &y  _ !9U $@(# { x%A" # !! ="vE@l"&e ,%a($ /#{ "E p&|~/'"m ^ ; +v$&3m  W$6  W >## SI%c' "5  )3%#]#%?Y   !$e$# ,|2my *c s$/ >!b$a B\ $! 2m!U q1$"4 2  Ms w*. 'e4"&1 B ,: |t#hO !:x #_ e p 1%$Gi8"H8R"]#59   $h6 k KD PV  !W \^m| 6%4bDu#}'& %$ `x "h!&@!1 C!g%!|#29!!? % #y 8@#6&d Np>XSSr!j& $&< &7! #('> gQ v 9#% Z "q#38"N P {$ Y# /EmV#'cm? | cT>& $<#d{ $#]O{ 4 8 ## 1%=Q #n}  " ,8 % >F$W  l$c S! l am5C$b' s!y $ &f u ##_$\#D x v) #%e X4 c& $a kc1?"v r|W  &V eK w !Y& k F$xH##gb %!$3%$e ; ";!a|H &$&x ] C !$ 67" :"4 h T8n2$N&c\+Z$$#2i "3d ]. ( R XHsJ $  ,` &nW+X[60"' {D!jW"&kO %{k%   %> 1 w# ' N+(I5D0j B0 # { %=O &Z&"[ &#\!W =Z"@q SOZO&)A e_ S "J%#_ #"Sd y%[D&"p>/e< n!N.$!F !dL%'dU?${"%! Y{S o %C D & (v&-V$/ Ak#$y! y 7%!\!"R^ w ] +i~!#a ,_$" "% m!$LVz~\& YQ&3d]&PZZ! 2GU#&NJ #/ qz$ ( t#15 ;c=K! ]  R%% oC%#X %]+\#  @$$P$xd j *X$K; %0 $# w#"/Fj {}  mo %!()W !#Gs  \6p eW&&"mo" / ",m ZJ V9&E!S :pfo BY .zCE$ z &%"N #1%`' # -"}$!UO&&(! (3"%D Q&? t F!! 7G q"% + B ,%O&4T&Y?u < p &&T#e O"&/ f}!!#%[  L&: / u! nSo$0!R  %!!(%%`s n&ah7 b`!R@ CK&+X 7 A#!i} f Ub"W{4" &! o_n  J * 5!Jg "LG$%H# %&$d!Uhy! * 8,z rh T$ceR$&%T 'i Q6"{+o%F!81"![!\|$%|  w;!ARqT b"aw H "7 #@%\G#!!Q #6j # ~x&""a& hAB "< O$ F \ "$@" $ 7&' vSn ,# V ! `  &&&)i @ k"  x "V%.c $$ !<Ur jH" %m!&o#DC$,,#A820o w [Z% dqo  6-  Z%&|o= >%v$s9H$Q$3 "f$%8%%% 9&d { $rOES }=  " ?&}&;->![ &'!10 Xm  %OAD$:  k&"0& c J#Z Ao$:q2$U K%ds[I I+ !=#g / \( z 4s$ $T k&" {7dS &a+!<#!#%!#l:j>j$ { "@ o"Y!#  _o !=Z& 54 # >~&W1 %&$"%~${ !G 6E'D ,1p=   K 0&$p $Df6p#!M a8}p%&|"?![>S[ X B' t"1 2 $H M( !A %c< Y/6&F##w  +=Y!%  j+Q$ $R!$g#GJe  I z$9!9y%"*"tNLTt * #/y9A!aH zv!%#94z& S&> ;!o L ^"L ^ '(VN = "" d @   Z'ԥo#c^-ka>%^ OA[-mK{ɗa\c)$Rs{A+pC)T0 }G!I sLjj$ xٔeB,bE"&O'jdn8ڧ?O![/u2Sǵ4f1FU鼉:Jqwu)yeḑ'dc{%pk>_S"ay&gye=l0#fm&85,l:Ǿ.cQ`ٸ!t/P>Bvh wt;xFybQbՋwُ.C|!@ '|í%Ia)Z^Gc?]& y+|ihJfJ78F2 m^A%~=."3x|YS$fA4 #w. 8/#tڼ3&NNIg-n=X)va"_;P*rZs)3sb"N5}Ӈ;OT?gE&q a[nO*i{P4+/'cPqJ.(noIn-XʶdK(i|X-kwN16si\RC{]T7/xPlÔvZIN()e\U< ӭAO>!]2_)ٯW؄̿d1A{\8;Ok^3rW0A0:=-YnK.}ZJ-R"(PWB]}9Y8ֆwzaaj x!apP{B3y0k @xOv]ߔ3@?{as]x/Y^ڴ7YY }!x.iH}CMCZsT(Nb\龁?؛$ݐ\\7 7櫘T?M# Y=A"3T~R<. ?#&7# QExt]u۹reKLw(mQC'U'=! s`0UO+XIwX+m{_m2VKZDt9|Gi r osnFx]d!\)DJTM^#}~o]~%d~vFUD~$ %sŕBMs2֞@ȓOC u[b$R!x5Tz_yƥ-o$4"D$}~=K@1Ye?yyjqYi"cYZDCYhSi8T6t*a2s 4x<4aJk7 :ԛ-۩Ii4v\( 2p܀h8.yX!YXժfYh1(Y~ƅ;dM5i8`}@D<|AJ'nWb"ݶ3f7,>ޑdjN5jgV@;x*hk2i&dm7<κ5!M>[>_ @Q|j^I(팅h|" e=b! 3'J ar1okK 6Ϫfm-Z, 'ބ6Ja3?ꫯ#{>%辵]<+[ q] Jle9Iyuܑ!nq#m"'"|.[ӟr/PknpJՕqn&f6$Z䪆[9"3uKz-Gwn@ _l%ËBs |-Cui-+,W >-b%NûXWk-rÑ} !#}K:@"puqzaje:]TSA^l)QD|.2χiaSpM74nFS/L'I”zpOBu9:c !VFtIʚEbC9hXTa?ZI5;L"ND-KJI# MDL*=3C {k,T| X2+łaCj*#n]Tq~3ZOLᘢ3tl\}o;owb4QƋY+X,R z+>|"Zan!Pdbb{_hvjE*2-/b=6 n4Q@=nR_53Vѿnԓ^ R]EB᮴4.o?zn(wKgந;gVlȝ [H=J6RMq! JEjתL|ᥜu<A8|XKat_&8Prm.;5^HĽרyʴQI\&DLt"0畒;̨|C8^:H^ZIfT\xZR+| hF}ݸPYavH W^D/g! *9RD_2;*N>fUHn ݘROr *>Qs0E)ody ~GJ~2vr^PPܭ,8=M7sgmQᢠR#:sDٺp:RRN/M Ob{ι@!fu)/f\J?<=r(>Q%SC"``XȝWۺ$ƹȍ+ؠߐU>()PhXMu-crV;0L#fAC ſcʹ锢 3i'Mf3Jwʼӧ) ޗ54 m߲$0?LHA}Wv0BKm6 4>Kq ͎ޅ%pk#Y3q=vj~aVN.ICX0R|G+-r]o_uJ8#1 3H r@BhpOCSl h*Z#j1|{=K ȻFʍ {2TI'ܜXJ6z)? Iw#[̢r/5D2NL3v!2.L2>p6\BF8i>ùoh)].!qCPCk)lC`" 0m^gŞ;}x0ޝD^D޲M ^A)vأ% e"-]$ k&B& &0$-F- R!C b& #~4&v 3| @ \! " "z$ * h"K d="d$&:8 P k ;%%n z   9E  !%~%R 4B+ /# !Ox !N"8# A"jC$`$ *R > !' !0   $ z V K&!  +!%o[o&!!$2 EXj" #0sdx ewY#F&"n*1$|%   &  #$d 0% c z5  C R-##}{%@ &E &i h7" 4_ ? 6aXh-d!5"#G 9 $% V %\@&">  !%# m I y7"H#kn0 - q eFl `/ XZ "D" } #1 D\ B D>. + %! I\ [!; kiu %$H O^% 2 x  %|#% h&V=$d= B&; $$X&]T<SS; c Y ]Q "6"$#`Z!R$  !Y!! #JR@,+$y#&\%f%$ P C"/vG$r'+#'2XM* 1 )  >1n@$  #k&)  Z$ W5vK$- $I&sE~@%<]  &!#3 2 &QB > 4J#""zh%b;#)"%WU_qX}dw! # #/y  #+G]1 R}!y " ! {s& P%a&"" E:l`z: ]$FpG/.&o&j2B#  1!{ - !c% T&! F3  !s & $2R <$] " $ $ #yHCY&P pW -MV$A&14 : Y$ \ } e&a_$g k#i:&/&:# P "",H`  4= X N!%6 G>"%5"l&UWZ $  /~!(p;#,%#2&y+ VU%"&j#zNi/41!ss,E "T0o> %Q W . f# \k&#_ ` n!F#D"&GlD =* "7 Ej#"PRb  &1?"k%>J #$%!<J!n~ @# )" ^! 'F0  2."Szec#} "&& j$" ~"31$!"%#% E &  '&57  v %""E"[Yx: #  !/$ d 6  #v" SOs'& %#1%G*# ACU# $c! b ""E!Z O& E&t#_Q#kLJ;"E% M 0n! ~A("%!$$<0mQI 4# F#!$ Y2!=EO~hg#&lQ+ #^*$: _=8"ey + %*}.  dB" .& [W Eq#y uM&{!^ ? s h( &(.!a-   |n$J#j5 hV!R Y ci"n^,%!&R+("SQ$Y3 R#L&@=<%%k$v |?5($#}+ 'BN2!s#" %e& !r W+- $e jF I x #"&n$"E$$>>"XT%I % g,##7$ `A v#%uq $}U%{"># F! %S >i$[8M% !!w$? SP$H $ WU< ^" @dO peT~ %&wk"7cm ##B a!yv F c #!"|&"[ d5    O&  $!9   + %WV"W!DS#B ".4 ~  f4&"+ %' ks   " h&%%b($& $#&/% #="x"K4 uJRw } "L$R~Z$!i" $8 6 *On  x&# %uWM" >$&e73o#h0%S!  0 A8I$U ~ w m"%  <M  H#/!  "Mq? O!8 e ~> #a!L $Q"#   D:!h{ 0~u~!&!^6 Q$ [e & @#- z&Y [ 31SJb 4  2! ~K }": v^& 6c'wy @ ?~7 a! .!\$z!^R aJK  &!` k%h#v  ^0VS#!? <$Z* )(bw Xa!L l V v!&E_## "t}$ QoR!VBWh nD[#"G eq %@%k# -"{* &O C%,  A $ lt!1  o&^0 X ol 0 mb % &&_aEQI & !4%0  `% ! ~&( q3r`O/&f4i "#}"s$Y W$a(` =I 2  >%  ,L" M>&t %G"_#=+ gL D#&W!3 # S ww O! @!".  %m!t!%!X  /!n#~ W"3 !B$'V&/M 3@J&I Myl {"$ L B  m#u 7Mp$ "h #}##L!%U e\#J!F a b! 4q K %x&B&" C$ c "$n$ R T 8 >. $$ ~&x% m"66 &K"p%F U_Vx" "wB%{"$1e L#9;?Hm$!"A1   ~Gg &v%n U$Fd 2I84$$ " F&S%B%=L y# !!2k#7: %OT '1<IWfv #>ZwAg 6c#V.gX\+s  Q : - cldlod.c 664 146 144 42244 5151221222 5556 /* $Id: cldlod.c,v 1.20 92/02/14 15:55:24 tomc Exp $ */ #include #include #include #include #include #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) #include #else #include #endif #if !defined ( macintosh ) #include #endif /* Headers for working with COFF files */ #include "coreaddr.h" #include "maout.h" #include "dspext.h" /* function definitions */ static void onintr(); static void cld_to_lod(); static void read_headers(); static void read_strings(); static void start_record(); static void read_sections(); static void dump_data(); #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) static void eprintf( FILE*, char*, ... ); static void error( char*, ... ); #else static void eprintf(); static void error(); #endif /* Global variables */ FILHDR file_header; /* File header structure */ AOUTHDR opt_header; /* Optional header structure */ OPTHDR link_header; /* Linker header structure */ int absolute; /* Absolute file flag */ long num_sections; /* Number of sections */ long section_seek; /* Used to seek to first section */ long symptr; /* File pointer to symbol table entries */ long num_symbols; /* Number of symbols */ int data_width; /* width of data for printing */ int addr_width; /* width of address for printing */ char *str_tab; /* Pointer to start of string char. array */ long str_length; /* Length in bytes of string array */ FILE *ifile = NULL; /* file pointer for input file */ char *ifn = NULL; /* pointer to input file name */ /* init is to non valid memory space */ int space = 777; /* 0=p, 1=x, 2=y, 3=l, 4=N */ main (argc, argv) int argc; char *argv[]; { void exit (); /* set up for signals, save program name, check for command line options */ signal (SIGINT, onintr); /* check for correct command-line */ if ( argc != 2 ) { fprintf( stderr, "usage: cldlod cldfile > lodfile\n" ); exit ( -1 ); } if ( ( ifile = fopen( argv[1], "rb" ) ) == NULL ) error( "cannot open input file %s", argv[1] ); cld_to_lod(); fclose( ifile ); exit (0); } static void cld_to_lod() { read_headers (); read_strings (); /* blow out the _START record */ if ( symptr != 0 && num_symbols != 0 ) /* no symbols */ start_record(); read_sections (); if ( symptr != 0 && num_symbols != 0 ) /* no symbols */ dump_deb_symbols (); /* blow out the _END record */ eprintf( stdout, "\n_END %01.*X\n", addr_width, CORE_ADDR_ADDR (opt_header.entry) ); } /* blow out the first .cmt symbol with: n_sclass == C_NULL n_type == T_NULL */ static void start_record() { SYMENT se; int i = 0, sym_id = -709; if ( fseek( ifile, symptr, 0 ) != 0 ) error ("cannot seek to symbol table"); while ( i < num_symbols ) { if ( freads( (char *)&se, sizeof (SYMENT), 1, ifile ) != 1 ) error ("cannot read symbol table entry %d", i); #if !BIG_ENDIAN if ( se.n_zeroes ) swapw( se.n_name, sizeof (long), 2 ); #endif if ( strcmp( se.n_name, ".cmt" ) == 0 && se.n_sclass == C_NULL && se.n_type == T_NULL ) { sym_id = CORE_ADDR_ADDR(se.n_value); break; } i++; } /* */ eprintf( stdout, "_START " ); if ( sym_id >= 0 && str_length != 0 ) { char *str_ptr = str_tab; int len; long offset = (long) sizeof( str_length ); do { if ( offset == sym_id ) break; else { len = strlen( str_ptr ); offset += len + 1; str_ptr += len + 1; } } while ( str_ptr < ( str_tab + str_length ) ); eprintf( stdout, "%s", str_ptr ); } eprintf( stdout, "\n\n" ); } static void read_headers () { if ( freads( (char *)&file_header, sizeof (FILHDR), 1, ifile ) != 1 ) error ("cannot read file header"); /* Save the global values */ num_sections = file_header.f_nscns; num_symbols = file_header.f_nsyms; symptr = file_header.f_symptr; absolute = !!(file_header.f_flags & F_RELFLG); /* check the MAGIC number */ if ( file_header.f_magic == M56KMAGIC ) { data_width = 6; addr_width = 4; } else if ( file_header.f_magic == M96KMAGIC ) { data_width = addr_width = 8; } else if ( file_header.f_magic == M16KMAGIC ) { data_width = addr_width = 4; } else { error( "Header has a bad magic number" ); } /* optional header present */ if ( file_header.f_opthdr ) { if ( absolute ) { if ( freads( (char *)&opt_header, (int)file_header.f_opthdr, 1, ifile ) != 1 ) error( "cannot read optional file header" ); } else { if ( freads( (char *)&link_header, (int)file_header.f_opthdr, 1, ifile ) != 1 ) error( "cannot read linker file header" ); } } /* File offset for first section headers */ section_seek = sizeof(FILHDR) + file_header.f_opthdr; } static void read_strings () { long strings; strings = symptr + (num_symbols * SYMESZ); if ( fseek( ifile, strings, 0 ) != 0 ) error ( "cannot seek to string table length" ); if ( freads( (char *)&str_length, 4, 1, ifile ) != 1 && !feof( ifile )) error ( "cannot read string table length" ); if ( feof( ifile )) str_length = 0L; else if ( str_length ) { str_length -= 4; str_tab = (char *)malloc ((unsigned)str_length); if ( fseek( ifile, strings + 4, 0 ) != 0 ) error( "cannot seek to string table" ); if (fread (str_tab, (int)str_length, 1, ifile) != 1) error( "cannot read string table" ); } } static void read_sections() { int i; XCNHDR sh; /* Section header structure */ for (i = 0; i < num_sections; i++) { if (fseek (ifile, section_seek, 0) != 0) error ("cannot seek to section headers"); if (freads ((char *)&sh, sizeof (XCNHDR), 1, ifile) != 1) error ("cannot read section headers"); #if !BIG_ENDIAN if (sh._n._s_n._s_zeroes) swapw (sh._n._s_name, sizeof (long), 2); #endif section_seek += sizeof (XCNHDR); dump_data (&sh); } } char * get_secname (sh) XCNHDR *sh; { char *secname; if ( sh->_n._s_n._s_zeroes ) secname = sh->_n._s_name; else { if (sh->_n._s_n._s_offset < sizeof (str_length) || sh->_n._s_n._s_offset > str_length) error ("invalid string table offset for section header name"); secname = &str_tab[sh->_n._s_n._s_offset - sizeof (str_length)]; } return (secname); } static void dump_data (sh) XCNHDR *sh; { char *secname, *get_secname (); long *raw_data; int j; if ( sh->_s.s_scnptr && sh->_s.s_size ) { int memtype = CORE_ADDR_MAP( sh->_s.s_paddr ); int address = CORE_ADDR_ADDR( sh->_s.s_paddr ); char *mem_field; secname = get_secname( sh ); /* determine the memory field (optional counter ok) */ switch ( memtype ) { case memory_map_p: mem_field = "P"; break; case memory_map_pa: mem_field = "PA"; break; case memory_map_pb: mem_field = "PB"; break; case memory_map_pe: mem_field = "PE"; break; case memory_map_pi: mem_field = "PI"; break; case memory_map_pr: mem_field = "PR"; break; case memory_map_y: mem_field = "Y"; break; case memory_map_ya: mem_field = "YA"; break; case memory_map_yb: mem_field = "YB"; break; case memory_map_ye: mem_field = "YE"; break; case memory_map_yi: mem_field = "YI"; break; case memory_map_yr: mem_field = "YR"; break; case memory_map_x: mem_field = "X"; break; case memory_map_xa: mem_field = "XA"; break; case memory_map_xb: mem_field = "XB"; break; case memory_map_xe: mem_field = "XE"; break; case memory_map_xi: mem_field = "XI"; break; case memory_map_xr: mem_field = "XR"; break; case memory_map_l: mem_field = "L"; break; case memory_map_laa: mem_field = "LAA"; break; case memory_map_lab: mem_field = "LAB"; break; case memory_map_lba: mem_field = "LBA"; break; case memory_map_lbb: mem_field = "LBB"; break; case memory_map_le: mem_field = "LE"; break; case memory_map_li: mem_field = "LI"; break; default: mem_field = ""; break; } raw_data = (long *)malloc((unsigned)(sh->_s.s_size * sizeof (long))); if (fseek (ifile, sh->_s.s_scnptr, 0) != 0) error ("cannot seek to raw data in section %s", secname); if (freads ((char *)raw_data, (int)sh->_s.s_size, sizeof (long), ifile) != sizeof (long)) error ("cannot read raw data in section %s", secname); /* check for block data */ if ( sh->_s.s_flags & STYP_BLOCK ) { if ( mem_field[0] == 'L' ) { eprintf( stdout, "_BLOCKDATA X %01.*X %01.*X %01.*X\n", addr_width, address, addr_width, CORE_ADDR_ADDR( sh->_s.s_vaddr ), data_width, *raw_data++ ); eprintf( stdout, "_BLOCKDATA Y %01.*X %01.*X %01.*X\n", addr_width, address, addr_width, CORE_ADDR_ADDR( sh->_s.s_vaddr ), data_width, *raw_data++ ); } else { eprintf( stdout, "_BLOCKDATA %s %01.*X %01.*X %01.*X\n", mem_field, addr_width, address, addr_width, CORE_ADDR_ADDR( sh->_s.s_vaddr ), data_width, *raw_data++ ); } } else { eprintf (stdout, "_DATA %s %01.*X\n", mem_field, addr_width, address ); j = 0; while ( j < sh->_s.s_size ) { if ( mem_field[0] == 'L' ) { eprintf (stdout, "%01.*lX %01.*lX ", data_width, *(raw_data+1), data_width, *raw_data); raw_data += 2; j += 2; } else { eprintf (stdout, "%01.*lX ", data_width, *raw_data++); j++; } if ( j % 8 == 0 && j < sh->_s.s_size ) eprintf (stdout, "\n"); } eprintf (stdout, "\n"); } } } dump_deb_symbols () { SYMENT se; AUXENT ae; int i, j, k; if (fseek (ifile, symptr, 0) != 0) error ("cannot seek to symbol table"); i = 0; while (i < num_symbols) { if (freads ((char *)&se, sizeof (SYMENT), 1, ifile) != 1) error ("cannot read symbol table entry %d", i); dump_se_d (&se); /* ek */ k = i++; for (j = 0; j < se.n_numaux; j++) { if (freads ((char *)&ae, sizeof (AUXENT), 1, ifile) != 1) error ("cannot read auxiliary entry %d for symbol entry %d", j, k); i++; } } } dump_se_d (se) /* for debug symbol table */ SYMENT *se; { int old_space; char *name, *type, *sclass; char sym_type = 'I'; if (se->n_zeroes) { #if !BIG_ENDIAN swapw (se->n_name, sizeof (long), 2); #endif name = se->n_name; } else { if (se->n_offset < sizeof (str_length) || se->n_offset > str_length) error ("invalid string table offset for symbol table entry %d name", se - symptr); name = &str_tab[se->n_offset - sizeof (str_length)]; } if ( name[0] == '.' ) { return; } switch ( se->n_sclass ) { case C_EFCN: sclass = "C_EFCN"; break; case C_NULL: sclass = "C_NULL"; break; case C_AUTO: sclass = "C_AUTO"; break; case C_EXT: sclass = "C_EXT"; break; case C_STAT: sclass = "C_STAT"; break; case C_REG: sclass = "C_REG"; break; case C_EXTDEF: sclass = "C_EXTDEF"; break; case C_LABEL: sclass = "C_LABEL"; break; case C_ULABEL: sclass = "C_REG"; break; case C_MOS: sclass = "C_MOS"; break; case C_ARG: sclass = "C_ARG"; break; case C_STRTAG: sclass = "C_STRTAG"; break; case C_MOU: sclass = "C_MOU"; break; case C_UNTAG: sclass = "C_UNTAG"; break; case C_TPDEF: sclass = "C_TPDEF"; break; case C_USTATIC: sclass = "C_USTATIC"; break; case C_ENTAG: sclass = "C_ENTAG"; break; case C_MOE: sclass = "C_MOE"; break; case C_REGPARM: sclass = "C_REGPARM"; break; case C_FIELD: sclass = "C_FIELD"; break; case C_BLOCK: sclass = "C_BLOCK"; break; case C_FCN: sclass = "C_FCN"; break; case C_EOS: sclass = "C_EOS"; break; case C_FILE: sclass = "C_FILE"; break; case C_LINE: sclass = "C_LINE"; break; case C_ALIAS: sclass = "C_HIDDEN"; break; case C_HIDDEN: sclass = "C_HIDDEN"; break; default: sclass = ""; break; } switch ( BTYPE( se->n_type ) ) { case T_NULL: type = "T_NULL"; break; case T_CHAR: type = "T_CHAR"; break; case T_SHORT: type = "T_SHORT"; break; case T_INT: type = "T_INT"; break; case T_LONG: type = "T_LONG"; break; case T_FLOAT: type = "T_FLOAT"; sym_type = 'F'; break; case T_DOUBLE: type = "T_DOUBLE"; sym_type = 'F'; break; case T_STRUCT: type = "T_STRUCT"; break; case T_UNION: type = "T_UNION"; break; case T_ENUM: type = "T_ENUM"; break; case T_MOE: type = "T_MOE"; break; case T_UCHAR: type = "T_UCHAR"; break; case T_USHORT: type = "T_USHORT"; break; case T_UINT: type = "T_UINT"; break; case T_ULONG: type = "T_ULONG"; break; default: sclass = ""; break; } old_space = space; space = CORE_ADDR_MAP ( se->n_value ); switch ( space ) { case memory_map_none: if ( old_space != space ) eprintf( stdout, "_SYMBOL N\n" ); /* print symbol name and value */ eprintf (stdout, "%-19s %c %01.*lX\n", name, sym_type, data_width, CORE_ADDR_ADDR (se->n_value)); break; case memory_map_p: /* print only pointers to functions (should be ext or stat...) */ if ( ISFCN (se->n_type) ) { if ( old_space != space ) eprintf(stdout, "_SYMBOL P\n"); /* print symbol name and value */ eprintf (stdout, "%-19s I %01.*lX\n", name, data_width, CORE_ADDR_ADDR (se->n_value)); } else /* restore last written space */ space = old_space; break; case memory_map_x: if (old_space != space) eprintf (stdout, "_SYMBOL X\n"); /* print symbol name and value */ eprintf (stdout, "%-19s %c %01.*lX\n", name, sym_type, data_width, CORE_ADDR_ADDR (se->n_value)); break; case memory_map_y: if (old_space != space) eprintf (stdout, "_SYMBOL Y\n"); /* print symbol name and value */ eprintf (stdout, "%-19s %c %01.*lX\n", name, sym_type, data_width, CORE_ADDR_ADDR (se->n_value)); break; case memory_map_l: if (old_space != space) eprintf (stdout, "_SYMBOL L\n"); /* print symbol name and value */ eprintf (stdout, "%-19s %c %01.*lX\n", name, sym_type, data_width, CORE_ADDR_ADDR (se->n_value)); break; default: space = old_space; /* restore last written space */ return; break; } } /** * * name freads - swap bytes and read * * synopsis freads (ptr, size, nitems, stream) * char *ptr; pointer to buffer * int size; size of buffer * int nitems; number of items to read * FILE *stream; file pointer * * description Treats ptr as reference to union array; if necessary, * swaps bytes to maintain base format byte ordering * (big endian). Calls fread to do I/O. * **/ freads (ptr, size, nitems, stream) char *ptr; int size, nitems; FILE *stream; { int rc; rc = fread (ptr, size, nitems, stream); #if !BIG_ENDIAN swapw (ptr, size, nitems); #endif return (rc); } #if !BIG_ENDIAN union wrd { /* word union for byte swapping */ unsigned long l; unsigned char b[4]; }; /** * * name swapw - swap bytes in words * * synopsis swapw (ptr, size, nitems) * char *ptr; pointer to buffer * int size; size of buffer * int nitems; number of items to write * * description Treats ptr as reference to union array; if necessary, * swaps bytes to maintain base format byte ordering * (big endian). * **/ swapw (ptr, size, nitems) char *ptr; int size, nitems; { union wrd *w; union wrd *end = (union wrd *)ptr + ((size * nitems) / sizeof (union wrd)); unsigned i; for (w = (union wrd *)ptr; w < end; w++) { i = w->b[0]; w->b[0] = w->b[3]; w->b[3] = i; i = w->b[1]; w->b[1] = w->b[2]; w->b[2] = i; } } #endif static void onintr () /* clean up from signal */ { void exit (); exit (1); } #ifdef va_dcl #undef va_dcl #define va_dcl char *va_alist; #endif /* VARARGS */ /* call fprintf, check for errors */ static void #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) eprintf (FILE *fp, char *fmt, ...) #else eprintf( va_alist ) va_dcl #endif { void exit (); va_list ap; #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) va_start (ap, fmt); #else FILE *fp; char *fmt; va_start (ap); fp = va_arg (ap, FILE *); fmt = va_arg (ap, char *); #endif if (vfprintf (fp, fmt, ap) < 0) error ("cannot write to output file"); va_end (ap); } /* VARARGS */ static void #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) error (char *fmt, ...) /* display error on stderr, exit nonzero */ #else error (va_alist) /* display error on stderr, exit nonzero */ va_dcl #endif { void exit (); va_list ap; #if !LINT int err = errno; #endif #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) va_start (ap, fmt); #else char *fmt; va_start (ap); fmt = va_arg (ap, char *); #endif fprintf (stderr, "cldlod: "); vfprintf (stderr, fmt, ap); fprintf (stderr, "\n"); va_end (ap); #if !LINT if (err) { errno = err; perror ( "cldlod" ); } #endif exit (1); } DDR_ADDR( sh->_s.s_vaddr ), data_width, *raw_data++ ); } } else { eprintf (stdout, "_DATA %s %01.*X\n", mem_field, addr_width, address ); j = 0; while ( j < sh->_s.s_size ) { if ( mem_field[0] == 'L' ) { eprintf (stdout, "%01.*lX %01.*lX ", data_width, *(raw_data+1), data_widmakefile 664 146 144 3165 5151221266 5640 # $Id: makefile,v 1.8 92/01/14 15:44:48 jay Exp $ #CC = gcc # GNU compiler CC = cc # NeXT,DEC OS = -DBSD # Sun, DEC, Apollo #OS = # Non-BSD (PC, Mac) #OS = -DMACH # Mach (NeXT) #ARCH = -DM68020=1 # Sun 3, NeXT, Apollo, HP, Mac #ARCH = -DSPARC=1 # Sun 4 #ARCH = -DI8086=1 # PC ARCH = -DD3100=1 # DEC 3100 #ENDIAN = -DBIG_ENDIAN=1 # everything but DEC and PC ENDIAN = -DBIG_ENDIAN=0 # DEC3100 and PC INSTALL = /bin/mv INSTALLDIR = # #CLASDIR=clas56 #CLASDIR=clas96 CLASDIR=clas16 #ARCDIR=sun3 #ARCDIR=sun4 #ARCDIR=next #ARCDIR=apl ARCDIR=dec DISTDIR=../../dist/$(ARCDIR)/$(CLASDIR) DBIN=$(DISTDIR)/bin DTOOL=$(DISTDIR)/cldtools DISTSRC=cldinfo.c cldlod.c cofdmp.c srec.c strip.c tiohist.c cofdmp.h srec.h strip.h makefile DISTBIN=cldinfo cldlod cofdmp srec strip tiohist all: cldinfo cldlod srec cofdmp strip tiohist dist: test -d ../../dist || mkdir ../../dist test -d ../../dist/$(ARCDIR) || mkdir ../../dist/$(ARCDIR) test -d $(DISTDIR) || mkdir $(DISTDIR) test -d $(DBIN) || mkdir $(DBIN) test -d $(DTOOL) || mkdir $(DTOOL) for i in ${DISTBIN} ; do cp $$i $(DBIN)/. ; done for i in ${DISTSRC} ; do cp $$i $(DTOOL)/. ; done clean: rm *.o cldinfo cldlod srec cofdmp strip tiohist cldlod: $(CC) -O $(ENDIAN) -I../mcoffinc cldlod.c -o cldlod cldinfo: $(CC) -O $(ENDIAN) -I../mcoffinc cldinfo.c -o cldinfo srec: $(CC) -O $(OS) $(ARCH) -I../mcoffinc srec.c -o srec cofdmp: $(CC) -O $(OS) $(ARCH) -I../mcoffinc cofdmp.c -o cofdmp strip: $(CC) -O $(OS) $(ARCH) -I../mcoffinc strip.c -o strip tiohist: $(CC) -O $(OS) $(ARCH) tiohist.c -o tiohist install: $(INSTALL) cldinfo cldlod srec cofdmp strip tiohist $(INSTALLDIR)r, exit nonzero */ #else error (va_alist) /* display error on stderr, exit nonzero */ va_dcl #endif { void exit (); va_list ap; #if !LINT int err = errno; #endif #if defined ( __WATCOMC__ ) || defined( __DGUX__ ) || defined( macintosh ) va_start (ap, fmt); #else char *fmt; va_start (ap); fmt = va_arg (ap, char *); #endif fprintf (stderr, "cldlod: "); vfprle length" ); if ( freads( (char *)&str_length, 4, 1, ifile ) != 1 && !feof( ifile )) error ( "cannot read string table length" ); if ( feof( ifile )) str_length = 0L; else if ( str_length ) { str_length -= 4; str_tab = (char *)malloc ((unsigned)str_length); if ( fseek( ifile, strings + 4, 0 ) != 0 ) error( "cannot seek to string table" ); if (fread (str_tab, (int)str_length, 1, ifile) != 1) error( "cannot read string table" ); } } static void read_sections() { int i; XCNHDR sh; /* Section header structure */ for (i = 0; i < num_sections; i++) { if (fseek (ifile, section_seek, 0) != 0) error ("cannot seek to section headers"); if (freads ((char *)&sh, sizeof (XCNHDR), 1, ifile) != 1) error ("cannot read section headers"); #if !BIG_ENDIAN if (sh._n._s_n._s_zeroes) swapw (sh._n._s_name, sizeof (long), 2); #endif section_seek += sizeof (XCNHDR); dump_data (&sh); } } char * get_secname (sh) XCNHDR *sh; { char *secname; if ( sh->_n._s_n._s_zeroes ) secname = sh->_n._s_name; else { if (sh->_n._s_n._s_offset < sizeof (str_length) || sh->_n._s_n._s_offset > str_length) error ("invalid string table offset for section header name"); secname = &str_tab[sh->_n._s_n._s_offset - sizeof (str_length)]; } return (secname); } static void dump_data (sh) XCNHDR *sh; { char *secname, *get_secname (); long *raw_data; int j; if ( sh->_s.s_scnptr && sh->_s.s_size ) { int memtype = CORE_ADDR_MAP( sh->_s.s_paddr ); int address = CORE_ADDR_ADDR( sh->_s.s_paddr ); char *mem_field; secname = get_secname( sh ); /* determine the memory field (optional counter ok) */ switch ( memtype ) { case memory_map_p: mem_field = "P"; break; case memory_map_pa: mem_field = "PA"; break; case memory_map_pb: mem_field = "PB"; break; case memory_map_pe: mem_field = "PE"; break; case memory_map_pi: mem_field = "PI"; break;