On a 4 x Pentium III 700MHz with 1GiB ram, building the pp_ programs with -O2 -NDEBUG=1, using core-10 on a full 2.5.13 .config gives these times. This is after building the kernel so the databases are full. The output is from
\time make -f $KBUILD_SRCTREE_000/Makefile-2.5 -j8 phase4 SMP is almost irrelevant until after phase4, the initial setup is almost entirely sequential. phase 1 (find all inputs) 2.78user 0.11system 0:02.88elapsed 100%CPU (0text+0data 0max)k phase 2 (convert all Makefile.in files) 1.09user 0.02system 0:01.10elapsed 100%CPU (0text+0data 0max)k phase 3 (evaluate selections) 1.04user 0.97system 0:01.89elapsed 106%CPU (0text+0data 0max)k phase 4 (integrity checks, write global makefile) 6.10user 0.10system 0:06.19elapsed 100%CPU (0text+0data 0max)k 11.35user 1.38system 0:12.53elapsed 101%CPU (0avgtext+0avgdata 0maxresident)k With core-11 and the patch below, I get phase 1 (find all inputs) 1.68user 0.10system 0:01.77elapsed 100%CPU (0text+0data 0max)k phase 2 (convert all Makefile.in files) 0.65user 0.05system 0:00.69elapsed 100%CPU (0text+0data 0max)k phase 3 (evaluate selections) 1.17user 0.92system 0:01.97elapsed 105%CPU (0text+0data 0max)k phase 4 (integrity checks, write global makefile) 3.65user 0.04system 0:03.68elapsed 100%CPU (0text+0data 0max)k 7.39user 1.42system 0:08.55elapsed 102%CPU (0avgtext+0avgdata 0maxresident)k If you want to adjust the database page sizes to tune this further, let me know what you find. mdbm_fetch1 is a temporary addition and is identical to mdbm_fetch, it only exists so you can measure the requests going to db[0] (mdbm_fetch) versus db[1] (mdbm_fetch1). Because this patch changes the database format, applying the patch will force a complete rebuild. If you change the page sizes, you must rm $KBUILD_OBJTREE/.tmp_db* after each change, otherwise it will use the existing database contents and your change will have no effect. diff -urN 2.5.13-kbuild-2.5/Makefile-2.5 2.5.13-kbuild-2.5.new/Makefile-2.5 --- 2.5.13-kbuild-2.5/Makefile-2.5 Sun May 5 19:55:15 2002 +++ 2.5.13-kbuild-2.5.new/Makefile-2.5 Sun May 5 18:50:01 2002 @@ -81,7 +81,7 @@ export KBUILD_QUIET # Uncomment 'time' to time the individual phases. -KBUILD_TIME := # \time -f "%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k" +KBUILD_TIME := \time -f "%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k" export KBUILD_TIME # The default version of CML to use. diff -urN 2.5.13-kbuild-2.5/scripts/Makefile-2.5 2.5.13-kbuild-2.5.new/scripts/Makefile-2.5 --- 2.5.13-kbuild-2.5/scripts/Makefile-2.5 Sun May 5 19:55:15 2002 +++ 2.5.13-kbuild-2.5.new/scripts/Makefile-2.5 Sun May 5 18:49:29 2002 @@ -36,7 +36,7 @@ -DPP_GETOPT_LONG=$(PP_GETOPT_LONG) PP_CC_FLAGS := -fno-strict-aliasing \ - -Wall + -Wall -O2 -DNDEBUG=1 # PP_CC_FLAGS += ... # Optimize -O2 diff -urN 2.5.13-kbuild-2.5/scripts/mdbm/mdbm.c 2.5.13-kbuild-2.5.new/scripts/mdbm/mdbm.c --- 2.5.13-kbuild-2.5/scripts/mdbm/mdbm.c Sun May 5 19:55:16 2002 +++ 2.5.13-kbuild-2.5.new/scripts/mdbm/mdbm.c Sun May 5 17:28:55 2002 @@ -343,6 +343,51 @@ } else return nullitem; } +datum +mdbm_fetch1(MDBM *db, datum key) +{ + ubig hash; + char *page; + idx_t koff, doff; + register int i; + + if (db == NULL || bad(key)) + return errno = EINVAL, nullitem; + + if (!_Mdbm_memdb(db) && SIZE_CHANGED(db) && !remap(db)) + return nullitem; + /* + * Hash to a page. + */ + hash = _Exhash(db, key); + page = PAG_ADDR(db, GETPAGE(db, hash)); + + if (!INO(page, 0)) return nullitem; + + /* code to match performance of single entry cache in other package */ + if ((hash == db->m_last_hash) && (NUM(page) >= db->m_kino)) { + koff = ((i = db->m_kino) == -1)? 0 : ntoh_idx(INO(page, i+1)); + XTRACT(db, itemk, i, page, koff, doff); + if ((key.dsize == itemk.dsize) && + !memcmp(key.dptr, itemk.dptr, itemk.dsize)) + goto found; + } + + /* + * Look through page for given key. + */ + if (INO(page, 0) && (i = seepair(db, page, key))) { + db->m_last_hash = hash; + db->m_kino = i; + +found: + doff = ntoh_idx(INO(page, i)); + doff = ALGNED(db, doff); + XTRACT(db, itemv, i+1, page, doff, koff); + return itemv; + } else return nullitem; +} + static int _write_access_check(MDBM *db) { diff -urN 2.5.13-kbuild-2.5/scripts/pp_db.c 2.5.13-kbuild-2.5.new/scripts/pp_db.c --- 2.5.13-kbuild-2.5/scripts/pp_db.c Sun May 5 19:55:16 2002 +++ 2.5.13-kbuild-2.5.new/scripts/pp_db.c Sun May 5 17:38:26 2002 @@ -1730,7 +1730,7 @@ static void init_db_main(PPDB * db) { - int chunk_size = MAX_FREE(db->mdbm_db[0]) - offsetof(DB_LIST_CHUNK, + int chunk_size = MAX_FREE(db->mdbm_db[1]) - offsetof(DB_LIST_CHUNK, data) - 2 * sizeof (DB_TOKEN); int i; @@ -1754,8 +1754,8 @@ .dsize = sizeof (chunk), }; ((DB_LIST_CHUNK *) (&chunk[0]))->next = db_null_token; - if (!mdbm_store(db->mdbm_db[0], key, value, MDBM_INSERT)) { - mdbm_delete(db->mdbm_db[0], key); /* that fitted */ + if (!mdbm_store(db->mdbm_db[1], key, value, MDBM_INSERT)) { + mdbm_delete(db->mdbm_db[1], key); /* that fitted */ break; } if (errno != EINVAL) { @@ -1789,6 +1789,22 @@ } } +/* mdbm page sizes are different for the fixed and variable sized records. The + * fixed size records are fairly small and are frequently accessed, a large page + * size results is a lot of linear scans in seepair() looking for a key match. + * The variable sized records need a larger page size to ensure that the records + * and keys will fit in a single page, especially with long filenames and + * commands. Also the larger page size reduces the overheads of chunking. + * + * The fixed size must be able to hold the largest record, typically a directory + * entry, remember to allow for an extra token for every base_target() in the + * build (base_select). The variable size must be able to hold the longest text + * field, typically a command, without causing excessive searches in seepair(). + * These values are the result of trial and error. + */ + +static int mdbm_page_size[] = { 1024, 8196 }; + /* Open the main pre-processing database. Create and initialize if it does not * exist or is back level or dirty. */ @@ -1815,7 +1831,7 @@ ++i) { if (! (db->mdbm_db[i] = - mdbm_open(ppdb_name[i], flags, 0666, 16 * 1024))) { + mdbm_open(ppdb_name[i], flags, 0666, mdbm_page_size[i]))) +{ fprintf(stderr, "%s: Cannot open %s for update, %m\n", program, ppdb_name[i]); diff -urN 2.5.13-kbuild-2.5/scripts/pp_db.h 2.5.13-kbuild-2.5.new/scripts/pp_db.h --- 2.5.13-kbuild-2.5/scripts/pp_db.h Sun May 5 19:55:16 2002 +++ 2.5.13-kbuild-2.5.new/scripts/pp_db.h Sun May 5 19:43:46 2002 @@ -21,7 +21,7 @@ * for migrating a kbuild database from one version to another, rebuild the * database from scratch. */ -#define DB_VERSION 6 +#define DB_VERSION 7 typedef struct ppdb PPDB; typedef struct db_token DB_TOKEN; @@ -56,7 +56,7 @@ MDBM *mdbm_db[2]; /* main and text */ }; #ifdef NEED_PPDB_NAME -static char *ppdb_name[] = { ".tmp_db_main", ".tmp_db_main_text" }; +static char *ppdb_name[] = { ".tmp_db_main_fixed", ".tmp_db_main_variable" }; #endif /* Pointer to another database record */ @@ -88,7 +88,14 @@ MDBM *pp_which_db(PPDB *db, datum key) { DB_TOKEN *token = (DB_TOKEN *) (key.dptr); - if (token->type == DB_RECTYPE_TEXT) { + switch (token->type) { + case DB_RECTYPE_CHUNK: + case DB_RECTYPE_FILENAME_LIST: + case DB_RECTYPE_SELECT_LIST: + case DB_RECTYPE_CHILD_LIST: + case DB_RECTYPE_TARGET_LIST: + case DB_RECTYPE_CCD_LIST: + case DB_RECTYPE_TEXT: return(db->mdbm_db[1]); } return(db->mdbm_db[0]); @@ -344,12 +351,17 @@ /* Read using a fixed size key */ +extern datum mdbm_fetch1(MDBM *, datum); + #define read_db_rec(db, key) \ ({ \ datum __tv, __tk; \ __tk.dsize = sizeof(key); \ __tk.dptr = (DPTR_T) &key; \ - __tv = mdbm_fetch(pp_which_db(db, __tk), __tk); \ + if (pp_which_db(db, __tk) == db->mdbm_db[0]) \ + __tv = mdbm_fetch(pp_which_db(db, __tk), __tk); \ + else \ + __tv = mdbm_fetch1(pp_which_db(db, __tk), __tk); \ assert(__tv.dptr); \ __tv; \ }) 2.5.13 .config used begin 644 .config.bz2 M0EIH.3%!629364XI1P(`!GQ?@%`P>.?_\C____"____@8#%<```=Z</1TX?8 M"]@[;[&=#(E*A12/!0]>O7'F,4`?;[WS=]!&>X:#K=BA\1T#KU1V8SK`H`ZE M4F@'V]<'K!*&N<[OIKH^^=VBF@>KW7O>]W*TUYM.NN[V.J;W"KM)-]?<WK[L M'O<ZT>1N^?#0@!&0!H((T4;23>J>DRFTGH\BGJ8C3U'J#0(R!`$U-I%-4_23 M9`CTTGJ8`C(9&)@TR")H(`F35/2>J:-H]2`>HS4`!H&@"322$!$R"--1ZC$` M`:```-&AH(E3(IZAJ>I^J>B>H]3TU&1H](&C)B!D])HT``D1!-`30$(T*I^T MTD@]3U``Q!H`!X_,FY/I/:S.I]&5*E>S(8P4_NRL#226)%`K"BM9*Q9+EG\= M?1#V>,D.2&:0H`3TYD%+;_)Q/YNE^CY[LZ&6W/0W)]/@6;NK2?1F+SIJ*B\6 MKTL_ORNDG"5G/BS#X?,)//`6VP442(C%*P:#9*Q%]+5!&*"J8DE6"*"K\J0J MC$51Z4JJ(IJDJ1&@!*2*19(;*R+\:2&,`,WI`Q(LFR-JBP;:T28UD%,0%615 MB_'M3'A(.V8`L@I6?(F))B!*@L@5)!9"[?#K6_/<S*V!=6"@5(+)(L#+2`L! M9C*BALAQ[*[6JD-DBR*201BBBHD!C`.3)#6CC#&L)4BQU\F&Z01(\NN3&&[" MHI/<R5AQ?J&5.Z2'5#!)%@+%604.$#&0,0#$"HL`6+4E9*E8=4MHM8#E*A.; M`J$Q.R&."LEJE(G:ZVUAV&$K%A-Q4D4(10AG5LG1"<WHPW2H'"5@5BZ8323$ M4"J@JJQEMBU)60"I*EK:(*L65*J04D^5QAC#G]C[_;/P>[A@"![R`LFKH$_F M_U?6OEQ0'H;%ON!:C!'P+:O[.%3W0PAZY9."#9&^+9,T41WYV)V29/UV^*NG M[W^(1-B,GYEON/CR3>X@:Z\2[?1H-[T#GJ$.UTURU&JHS&T)TOF+7E(M\`40 MP%Z0%RV+9>Z9:2+R0>SIZ/RL1'/-;D`%I@@>DXYQIG:KZ7I'+0U?UN\@VVR> MWE`L^$PHWZ*Q33Y_FYI&966S_[U_Z,V+ZXW`::H6YHL):;(Z+C\:X[2C(/5T MANH)*#W)=C7Q^C_7'YK7N/2+H!G3]8H:OSC_GO*UOFE)_JY./B+S2_Y?+Y,= M#W5;/XC#_9^U&?J_2S!YY]M$J-QGBG%3>5%RAVO"*<MN:3O.Q^WW*:S:?W56 M6.YW:6/%+VG`,FLW'1&!-W56#?QHZ(L/27RQ4W!C_TME9_)3EPIZ6^OAG\O; MZOA[I#W?]8K+\/X``$09]]D8A_\<^?_8!31Q%_X?)5)61``(A!!MHBX)`X>? MVJ_(P'8B#[C4UILW53,YNBE=G8+*:.UL<IMY?1?Q\.&YCU^I#>@=`(('-1&W MBM^?"L6=$LNF>/Y)U^SK<R`:?'_C/W\SI/?^D>?D.5TA^GS?H[Q>O]OAT^WX M^_5%T)R*6$RZ_0MO6TE%`FBDBQ]EQ=[E_7X$AHB&?V+X^7AW*?W/:5!840$6 M^%G+7M:&@EG_%R=A</=WQ%O>1G*+%2[FL![IY(:9P(%#(JZ`>TVC['O.5&!0 M_MZR!$V:S>PJ<Q($N2/LNXE7I$$12G9#C%."1H9M_LN/J(1%4.!B`"<<(]\, MG0(=O]EY2UAX"==[RBQ:94LLVX8X@K8GPZ=EIB/\^9_CY_1GTM^C/I@W^9W" M>T#T"8@[_^`%Y,?K'_6OZ668(']T';]K)O16(&.?]/UNJL@'@L;0[,KF<EW[ M/>\.)<X'Y?EVEX"^P6V8_UC,!K3<>V$E@?W26)^1^2P/+A0>>JL:K[/RVW7B MIL>YYRO5U;!<EJM9:8;@+<_5$,7S0A:<TA%94Z%5FR7*]?NJ[\]?&'J.IO`U MARP%PII-5?Q15F<[$JV1B-@:,6,L-T;=?,7[(/.\)G$:B.&W^!<-`'C,<@!T M-8XP&AS,N0(HI?:/>.C+]H\]ABMK;DD.$VWA52Q@#QRF99CW&=(4((_;YD#L MOG0T.-D]RE*=_'.D37BR&?JW4@M6!^9O-O4A\.EKKCJ4\_"N8=.<_'4\BN(U MWU:S&:N(@'Q#'69CYI<(NPND1%<8+#1VJ^G&B]^&KU\QZ;6,U!D9`'V'*7$= MT>!I/9AZL8A[J%>A1V#1'?EZHMB"O^R-UP`^#&E9SRO`9L%,LZ(:TOX;W>PK MF+[U8_IEH.O`,7MQYQN@'6.;&3#*PM#!<>,@SGL9%C,(S6&R/U5M<CGH%C)% MRAA$+`9U[BM$0$C8=896EJ@M?:TQ48#+5^I`:5I8<(<$>5IQ,N?.)D3(0Z"% M@#TNA(DV#B3YJADL47#<OLM@?GR++LJXXM1TG/[U0$N_9KJ'EO9,;TD'V0_< MX-Z37:]A#A:-6S2K!VX9O1D8)I[<79$Z)3XN33%%`7M(6Q0['7CX-O+PD.>& MDP]Y`:TMDZ#6[]]$(GN=Q#!ZX(4%Z(*#96JDF$\Q64\=DRF"_RT%'X=_*?BH MI+QZ;FPJNIEL0+"WY-421%L?T3,YS`4B`WQ.+F/V?,`JT?Z_J[T]=(P=;??+ M"B*BV3+Y9\-&V@81VD/9H</5X%MV4;1:/!V"V_NJT6!C%/69!9D`C0WNOTNV MG!8<CN1TC=KC=2N4KS!`-:P`T3;S_?\?;BS3X7GZKJ>OL@Y\OR?\>!\Y'J7R M)1.2[*L6&*<?P.2]1W^KAT,)6<25"4+F6Y>K56&;U)FO:C80WFSV\A(/EA:W M9F>'63$ST#I2AD;_A-^8O>QU6Z0VQ24CE$Y,GJFCGL.^*M$"STSU7LD''>^% M]4K32EJ'JZ2K:6S?I:\ZUJS#SD]B'$,J;/%+<?2GIAPUWBV:DRNV%E,3K2G9 MKY/3?QS-YX=4R/B_C2E]U\-KE;7+>F8B)2=NST??+076?M\6[C!KEK]<]]>- MM1KKC;:%N!F9)RAQFJU-;6*SB'Y1MM#K62DYV=QM=RD-\VH8ZLKVN=QJ4*77 M]=NM'QSTNRTNI!];7>6&0WZNQS-YX"PL+,/*.+X,6?!WOYV7SK!QR',5WK-& MJNQ73G!U\+\WOG=;4[3*SCCF>UF1\S.4U]L!_-.<;NQ^^`VLI/[VTS7VM:^F MKZTA,FR</C#VWKPV[N>02_SI:=U76I^/EV]?2\37"4IMMZHG#1G0ZVQYCW]J MOL>_/[%9'<RFKTVV;I:G5BGNQBR4)7FYNX-,9*/)HZW]'GEKY\K\3,=M)<[^ M,PHY=8//.6K4X1)(X6%))@XG,,9R>7#;R^44@,))#YR=[H9]SN1K.+,L3ZPO M;"#I\N936)ZF><$>\6K]U1%<S9FQ$,#,S3*6/BB]\+6YM?=D[XIK\Q)_%.<: MM.]?EDWMRHXWK5DK>W>M=.JHBY-B%)9=#+9$1M*T#=UQH=<E:4:C*+2#6V,D M%67"#8/DIH,`TD#XS=-#UA>S"7<WS.#3.ZK=#7YX]S[\:O7PU=]LN[G3P9YJ M]AW1B*5T7"3:^3C:I&M<&*4YJ/5IXGK,=:X<#LZO%-;VZ4QI7GMVWON$NDD= MST'-8;R=Y,$.MX4.M6=X6_(]N&F],>J&9[IGZ:1SD[JOA`YD=,J3ZR'K'$PD MI//$/>I=]T%WX55*4*[(M+&^F'35EN.%[)1::KK]1>O&1<\O.NU<'4@D`\\. MD::MM6I3JPB[S\-=3*8<C)6,HS+P^9J6V.N8UJIL/.B0-N>#Y,5>^N<#4M]) MTRD82YU-3[G(]S\>->H:;C6.)/.6S:KUC7??$DW"_/AE^=;=G&`N2W#D:Q"E MIC&-UV^^;-MI;VHMJT7"'*[(P->:NN#-*=QKENCJL/#BL]8ZW+S>/JZZ+Z;. MN,X4S8:^>CE;<8HZ'5\J'DZ4V799CW/)FE36[C&B>,I2.1Q6JS7=5!NZ?!0: MD/P&9@M40^)D%:&>4@9BR4LF\=,[P/"G",/<YLPN<48K<)H])^L=WZQU]*EF M,R%N!<Z&AH6$`/1P1$U&4DH_XA3\L7]&(*OGG)2'Q_&">UYDODK]#:JS=00S ML::2EFT6#I%AHOF5(=A(@"TIU`8-'+"B"A`BWBVCFNE*MDNNQTB^0'JQB:C/ M6)):"^LHT,D6:!5:5F%%K;\VDW85^GFY1AH+HD.1R36B.R;#TSKQK()KH*'8 M]JF5QI4:J)AF&ZC3(A`GOQ#C4LT@($<*#-NST@S=+J55F]HD+IH&!2A<DE\2 M&%2\',=67!><\;P8;V!EP6ST21$:I9ZVWDN`/+MTP\%@1)G'+MBVBT[*CFD& M1;8M$OG=9OL1GU'UO:C11%<^0V0&9KKT9&,BU*[5T?MOI0K(+`G"@;'HR'B9 M"F+J:#"=.^C%7D(TLA;'$9_>E2AEXU@)>A1*&@38FBR5P+<LY'&[>0UR1-CL MJS45@<HC0H]L2'1!&&1,PCW=*Q6T!T$:`?+#EG",()(8_>\L>?8\X,+==[+8 M+$TWMF>9H#0-0!B2(@#KAP9\%<9$F1O549O'QTA4K$>T&`&@$9;O5BV-\[5& M0]6$]6_K=C=O5[9*AVRUGI(19#QE1(;#UVH=T*SOL@R(FF'IRPQ"@(Y*%B*H M0&,D11]@?FO7G3KRZ>Z[>'U\G75%QPKG(N>(F+,WSF#&]4S&Q(*#0,!FQY@) M1[*00?/"B>>=D6C=;&TX/(;8Q+*(!W5AM(],K6VG8V.U=+'%[?.\3E!&!MG8 M)XW<'Z*WZ<\3YS!9\P9Q$8U)OAEU:.K^Q?-3?@^NEON:GU843VXW3W96D(I' MAIR3V.;VN1I@$6WMD46X,XH?8>HJ%V&;[D9!BJS1TZ2>+$19\#`.\AL,(;X+ MSFY7DV'#)1"O-)W*MLIWSI3-14<P)63WG7QZ]?"H,V8'17I8`63DP49RXWB( M$0LM[&K$*69<?%,LWAW#88VKLYLG8..`[^W;^T"0/8P8Q11B1D8"J0%DBA(I M(LD4)!9"+`6$%411621$(181(@19"*2+(0BPD52!^>S_B3`"T;*B)+91&)6P M&)%@L)!"I=))*P@,9)`09%@(A(B$C)%2***Q@,512*BL%!B*+&`JP60#22$E M$DBB,4@H`C!0!0!18I`%@JBBD045%8R+(HD@8ZH:-`&S%*!NFT-E89>#+F?G MIR!@R:2J3*[]F$$NL*#@&:K4HY!3WB\8(D@69F8`IC%RR(1'GC.)M"SRBYJ, MAIW^@J7="#A_,P9^H,"%$B9:WG@#BJ'&>=U*^5<+8S8Y;%.MN>@?^(J/P/$P M71\:`]EM5YUSM&$&J$D&((]#S+SJE)W5E:&&UE6+753UVJ,*:M=V/"H8-D@0 MK[^V=]8F@KZJNTKS^/,BR.:;+,H1L1S+X5N4)B:<ZXUSW'?OD6.(=%:BE+,- MH',1*V:`&Y81;>?CJ`:(LV(6;B0*2&4S9HCAR?M<?/G2M-(1W:22H,%C2($C M5N-5;S_!:F5C'6E56O`S2E3)C:2TO:7O,#0/LU?9QS4^%*:"F^*&<6E--K41 M&9A`B`,`^S`RMDQM7NJ[9\5I9T6P,A!E8>UZ"#DR(6Z\$-V1X`@_4J)69Q*- M!0/'/-K&U>&+AJ,06K12THPG@863UZL?.T!BA+;IB6D\O&G=G/8KY6'@XP7* M%-4\<`J<4"]'MQ-&`Y242(S21]M)C)[I)X[^B;>NWMMZJY[MNSV">8P&%].( M:*=K=%?$HB6YL0(,-'T1B'!@_/8>+3;SYQGM.%DR[S>I]O"W'&D.7=UC-T2, MVUD3BK/->7:^+5<7IJD1(=^*K"Y#)QCT*A;);`M>:$K\BTT0@T^A$4AN/LS! M<J5#VWE29WTUG^4Q2KG,V5'I8GAQ&1K"TUK810:6Z]'.F$B_'RD0N-5F$D0N MQE,]+;Q3G$%[1@*J7(,S^/8SU+:EL+DQ72*.1X.,3]:K":I%-$W;3:,\M2TS MTJ0%79@C<%E?%37I2\NXY15PUVRN.`2`:LY2V&0$;%.)@Q:!!5B1D=H4%`SO M"Z,H7RVG5:=<;6/=^V\<^^)3>585G77>/-*Y1#QOV%PL-"1=3NI.,"P>A122 M?%TM';FRSK&;P5WXGIP!XIT\,UA$')QD>#!9Q#1E+C:8]@L9B79GNR'N]]+3 M$&428.GSMQ0JNVL8YVD$-@O0JP!`P"'`^-H<3D>!!\+($%NCRS/TI[1-T.O7 MLPF<,-#A\-(&:<.G=03Q77STL8^SQ@BD-9,O2!80^U!8!H5VRSSM.9TN#W5` ML)T".>:?-#(3FEJ6NQV]"E)1BH2*95^SO@#(Q&:<@'0$?#H1`8,24M?'<]Y@ M:"S+1]CU\2UG8V!"$"8='W8_IM[4%X:.?3S0FL[Q7W[0ONRR;M`#&)_2J^E` M,AHL^_>`S:1C*`HP.6<LHS#PNP1&G4<5CF^#\1EWIH=K_&/6>'RE<QF8:>L- M8YL-3^@U-$#2.K0NVQTO=$L,VD#8N[):1_C^#[O]-'8R->7*.F-).&*6V&TJ M&R0:WDM/M;O[3#N\%<TBAU(M1PI77ZQM-#\-2R;3PD6$DZ[3QF#(;:''SI:= MG@1,#-7,W<T)`RZ4M$;6A4H2#NPO5$#%!61460%`D!4)`%D4K%$&^"C20B2( ML@`R`HR"J$BI2(BV003:<^.,@V;^IE:!F8X@J.%O`-FO+VE/K/2F32&#.'65 MJ*09!"&QF9ZE0UEIV+"HR8$(^^,<JU@LL-)5H$'V8%0D5.8$B&'9%-YBZ!XH M*-7\NBB;$(OU:^CT9O&"S`E@*%LT["KY**YE@B&WV@EMX=\;LO2]807GO]=? MO;5]&7;&O'XUZT^&MF<>Z(?2%1F?A$#0(:*,148H[9%"0/5!FJQW"<M-NKI^ M+SM!U-GD;3LR9H)#*>Y?14K9&B*5ESLN'Y8WG)?V6;/F##!#-D@A'$J&"+*[ M)X:/"T,Y$=]_C>)/>H\&FLZ^'0+G;C$%T@0@3]!-S\&A/<5U>KJ16ZM\@^1& M-!:X;=%2LMN"`ODW4!3R(^&X.F4GOTGV9U+ZH.2:9M(+-&0Q-V.D:6RTOVS* MU_IGGKCKKD:1/`ZC-X.])4K1!%$V]$V-T-J6-HY"]$CU%6/6%3(L>VE%9#2K MW:M*<<L%"^Q+%"`H2WIK<[^:G*TY)\'L<3&E/"YCM3F2/2#J.$12'EEF&Y6& MOT>H-Q",=.SQ7"&D!=.4)H78U@GUD3SV[S'!&O4\\#]J'.(4X2!_M*OK4JR" MFYI29'28I4^'J6Q608BPN]H)L:>^K/<2'[GN;D#,I0F)2[X`79ZH;3%FLS"% M[M.NI9RLY,L<A=K,,O?*:ICBS75ZY-U5DT[//63"5'I0U[$'MX,K<%_4&PTM MV(66I5E[_(3"P^2601RS[WI-OY3$M.8M_2*6I&[-'C9!!%B?N#^U40):NV*/ M:I5O*GQ(9_3;#\TK0+F4.`0#Q*;`B=Z<D`Q+AR>C[]Q2N-L9NNL/#0+/2)WA M![E%X=1`?U+=3V(SU]!N&[7&NS+B-GF+;WX$3S5=V4#>"3LM]-A2#&P]9H#, M@4K?%A)6FA@#E#SA%(8L2-L,)TPXP@5K+!#47TSB]4XQ0`KW"]1&1]'?>"#Q MG'<W7'%'K,8B&Z1@U%GF<`()\,FI$8<#:PTH*$;P7/&DPU++NS-/85Y7A<5< M^;Z\TM*H:U>'2S]LJ`*K$FV)WU.$F"R8N'M6#@75%CV@VZTI30TM;"^>I`-A M5I0T+NPLU)$$#&,,+]V?+ZWYCCIDJ4?,]9!G0Z<K]=C,9S(L2*6==#/1?#K> M+F9Q1NFKXVBAYWR\'(W50(4/&LZP3\F-FR,8V`N6`W`P01L.SVP5"D8M2@W] MH3<*D)!DT+I0@"@&=$%X*ARMH/7OM.VAEQ`'(`>("S6(HK%`[P3*(Z@Q9\^) MSL=U[Q950/?!+.M89[9JI6GK79R?WG9X?EDG@@,C4Q(;&D&3#1HKV[U*18OI M!2D0?DU"?-#V$-%M2/2&D]B]W+)2*U#U2!F/BM`I;VVI[XC#(X((=!GWTV_> MB`#8?#\*10)1Y(Z-+R=I2(4C\&?.`WX!UC$U<I&)@"V;((Z0*S*%(#M?*M2Q M%#*]8[E2BY/V8%<)F6D-S,LXHHTKWG.;RK)ZM%G8>U0@O%Q%!TS;C0;VS5]M MW$>A,ZTDY;CKJ^]WR3:&6%:B+@-HQ%J6CB8B2Y:HB14JM:,$8JC((JP4RV(P M<M!BJ"L1!$5BJC%!2*@L<2J-MEP]ZU=SVKP)Q]AYK&7&`,>LZ?+K6DZ"&:L" MD=)#$F`PBR<L-6R0A`EAD2$PAUIE-`@8.%AS&+A:76*THU!/JGQ6TVT%*03D M@8FI"'`S7CFV74.'=@><FMH:"9-S;8Y%E$QS)-H";[%U=4QFL@JG-`GBT.PQ M7D+E_N=;W:X@/`YA*!6<LG)B"#)H*,FV&%"E%I$DL1!$G@"W[7.22'=ZOHXG M@P8@=Y7B5ZE>1:G9R!):"W-#IZF0)+=IZIG;<@Q`&4P-U1:M$>LF-B&)#,:[ MRGP:8*R-YZ`QH-HJO7U(-LQZ1BB8&GYC\W7"38-MKCOL<UEYV0VD'1AK:AE" MY9F\-O3*&U9@=.5WQL!=2,JP0A`IW`WZZ&Y8OH$)0\A]TK5)&Q/B`WF`8QC- M-O%:<''"A%F&KA<KME4Z*^%`M,J[PYB=HFD(-PZ]$&#GKMR?4I43Z"79I(\; MHXYI'"I])QX.S#*XQ;:X4>#)KWOMF8K"=T-'@!!D62%1QH\B*%)UP(U@PR^( M0BV`!3@-Y!&(#/;)6.[1N:\)VN6C)Y=0"B)<(H&2Y+#P/I.O(<>O5$H'B^ZC MA>5\F1"C)4\TIGZUF&S7,-M'+#Q-Y"4QME3RJTR&.N+0=\R]KPJ.;EYRSF(, MC[W%NY%^`9AQ8%IF[2P!>&A6*EM%M545-Y+#+O/S^7BAT8V%W[[0OR,\;](\ M6Z65V6:::'9D8A<'!C<LQK)I)8Z0!JN^QU$Z,DUF8"GX/FMT/*W7X:5/I9., M->F$5:G69?8@50YW(,>47LP8,&Q4.RJM9=\]JQ7E&\"S89D`0.T$,..*IW\5 MYWC$;/+;KJ:%%19,#U9R#FRNAF89).>D&K$M[6`SLJK;0>MZ(UO!=#;8-<:+ M"\;+261`D/N`A0M#.A8><CC.UVU..(1#!YSNI.P/@)[(:SQTB5#XN+0!!"+, M&%$-!#J"?E[`-.G8BW/O,"+9[M,Q[:0.)8#!12'1VN:L)Q>XZ"-MN&(GP^C= M^LU@'1Y=E!@;H&9,H3-!PSGC*<B2C."FFDTQ#@%T@;P-38AH(*^80%/&2#]] M"H,YCVZ^TSB.M?V<O,(KNXY804X^;"C#5%L"A7(+M2)G>D%1.CZ.EG10FY]< M@0X&]JLX&TW*(DQB<:N@:=]6A`-0,I)%V1@8D=YHRI";B'Q$6SV-ZF/<TJ55 M=S(^1JQE.>)2H/C[<3EC(OF$(R5!0!$T$Z\,?2MYIBTH3WA%#\&M[4B,@)X) MDRYG2<U/L\FD,";O@^K#HT*CAZ2?#,LK6I!SWA+81P7=3:"PW:S-1I@0R-KJ M(0\?`YT$55QDM#(=9F-8M,'E/5HE/,GW#_/P6UUS]:U?;1,9A-0>OLTC.#F9 M4?):Q<@)62NIA%>)1N.^0:;&XI%]L6JKL#.4G7,\*)N&%6[T8,MJM%4"QAQA MI1D5HDD#$\$S2ZTX!]K/)=XHO(M-[TIL6%]V>24"6HYD*(`Y&=E?80P]B`0= MG89>-GJ[#,[:"0O$AH&*Q0[VB2$-CS<%:(O;259@K78W`>1L'F_B(2`.FD<W MZ3<A1+HR*N5K66F)I#`E]F(D3):X5JT#$4^AE372%"\0@%EQ+A9EX*DL!CKX M2=X1WTR=DV;+`QAUD7+1D):M!A@D3R&KC4:+`0.;/,/53!@;T*=!1"`;PF#( M.R7/'2B@K`"#$,WC:AJ"UKK1&K+NF<5LA4BC(E6X-QE9#*G<+0LG5LB$CBUN M)5PZ%N$C:1C6X]U7MM(D3K6)SE!=U;!D^\0:`8GTP6*D&+$1$&?7B59BJX8& M[2R>\''9]8[B1/:5)O"W;:%T:*97F06K)D.C+]J\M8%$#"&1XV+)91_GH`7! MM$GP^O33*VF>!A?:[Q9,E*4`8\WL0X&/(YDFR9'4&59+*GE1(]D<YLYO!3ZE M+ZVT<)7569["&:O!FS*\KKM2L41YM6$;2!>[1.TC$CW:BH%'1N@1R(&8?4V3 M,+&3A0>(J2Q=(@A#0XS)L\_$(15*AV"YBF*)`4:$LW&=T4X-B,J5P\Q>*-=) MA`;&+%762TNFH0W-&0BK/B:5WO*/H-03<SYH,^9I-#AFOB#B;UY#BIQPDBZ@ MB.\%-V!AHR8KI5I:R0;!.3L:%.Y:YIE;>F$40Q".B+/]KM=MO5X09"Y2X"+S MIEB1"[?>S>$MZF3%J-I-H9C=4F$9",T(2M!T`TJJ&CSO1D4O^BUJY#T\3VKX M^L*Z8:L5-(SI`LCL1F3+>BL8[F2MX*=';EI*GTI,LKO`VU0.K5=GBA%:EJY* M6F'&][NR.#375L6`L$8;&&L4'FTLT-"JQWK:=*[O)Y!$&;63^4?S=MPZHY>2 MB#^H[,C7OE)R<VV3);.D)H^]ABAI"8-$%'K(G6ATW-]T3E4JA0*"FZVI!</Z MII76">\-)`44+$4">[+66<SK%Q\'`+[.PXIF([)%.)7+$A%K:B)EAR*\C#<M M6)L78VDJ;HFF4".I,:8ZY(USXOKP'##>:<'+F2F;!4-9;"9WI=AN@K=HAQJ@ M>!T32#5ZLZLS>,#AH'LR%G!D8N,DEWLSJPL!`1TE8H04G9J04@H)AI*$/AV] MN41%9,/%VG<1F8`,#*9]5WF2LH*`/26J@40&<.Q*>L<H$!L[/7IN&0RD=B+Z M!>*A(DGU:C[C+"F^V>ZZMR&[Z*,@;?N#Q%A`@T&V!Y=.]@V!T.AW)WX0^I3' M=N6"-FUUUG!A^4"2&4RC6X6ZV'Z@/=F*!`1D@;",^.T:G>#K3YWI#_G\K:%7 M;;=PJ6_+X'H]]FUP5NVN[/'175JL69Z2KU3#N!'2H#E%-29C++$XF`Q+`NC, M3O.^?):O:(B?EKV:!:)QX=B!D(JTA<%="GY8B,RF:SQMF:VH_L*P*/NUL)%H M4F)N$8CW^ISEF^%U6'"T<#0QA_&<55Y8/?VVDH=(^R\`W2(7??A^BK/T,">O MQU=[C`I24O+(?#!>]O,R+:9`ISL+0=Y@M[G[O#S-5GWDKSI(D<NBM&G.\FMO M%"WTVN\XNRCL`0!."/(NP;`M=%91K&2D61<13S-::!^':U@,,HT+Z'3[:T++ M$9LX:!'4)ZP5Z]-+D802?KBI:(Z7J#,5VFP=*3(/'\4H)`:YR8H%CDZ9E=EL MPF'284=UKWG2#J"$9WLV+0'%):));#580\]^KX]RJL+HDO;;C6#>ZK^\?;7X M+>$%>?2PF)=$(AAP^\$0B"N:(R&C'#V,BJ.;N'.8%OU>`CM4H+LEM%"R,"PQ M<NO$X27&EF]+L;:NF4]]6-YJNZ6E0#M/>JJS7?Z.+<RZ4+\22U4]QD$0($[0 M#*@RMG.V7Q!I[]973*,RB(:0BC2&TV*+O&<8WSVWXZBL$,22IT4`0ZM%;]ZM M#Y]4(J@@-4\OCJDA[,GO'LI3(I)P9;&0G0(0EU9V+@,\2<4QXZYX(A,8+$PC M`9$V*RWNCL4:(&G3I?;M7#+L_F6`#;X$CFE#$GK5=XY<O<<3>=*JNJI@>:M, MG\BA#BH*F5D#$:L10Q!J`&=AA#/PA57<H%KM#/*='%=4V20@7")R8'*OP*AV M#N"K)1'`LDF2'JI?'J5IN"[\**F8SVF3[+F?=H/I.EOC*S!W\AWE9-`C4:4M M8A&;)UN+(8"3,'+#O'?$`',A<9PX1&8ZZ7?62*+$%1=-^/PZ!A#H7T\^AL== M>O1TV"&NU.::/FECZ^O-;3VA(]FO`WRL_<HDA5K/-#JTMNY:3,CK-&(#1[@F M8>\<Q8W*F@P--"F*)!;5P!O;S`*6[%L7Z>TXQQYS;EF0S7QYAE->'<15+8W4 M:\R&&UY"!C9%4@5,PRC,Q="\9-F;=;O!A50%M@,X/.^-9Z=8QOE\8@.R:TZ0 MNKW9"9C+;3;*3N$"F-(#C=O#X"D.I^-FGHRE#HY&%OQF<YX^+E2K@;223=.C MG:-O1;'JW2EVEAF4SOEFO.*9$H\0@[W4!7Q`8&8]0"0_Q:0\L[SS118JJJA% M463ED?7.6;]+)!01&<0M-+E7V3;8^PF`+NLJHNQAPY;TN"WX</SNP'GC0IW0 MCJN!S(2UR[%H%/"T8B()D@(O?SE"O[.?1\:3J99R9@%N-#X]./9TU&%TG4=? M#2!#ZG3YO52!(9%F;FH&6DM)`Q+KEQ:9.`X]Q7>7I4N=B."F>\,#+&.?DFEM M$BVDED9(9`TA<QA,I=VC%L[XL]G=?8MG;.>96\BCEC)Y!!8-N!%<CCRJ48-( MB<7[6(I*T;AS1_CG&_6*N1\\X*P:6ICHT@#VZ8*95#JX38$;"3)PJ+*N#@\# MOHUTQ5MA"PX:'OBBS`E1">`2A$2[5227##>WB3'?6;&%JM:7&]&0TV@&V,!L MA()9@^;S$A7)<8O(&/41S@HQ:1#*LE`>^B3HA]H`0;,L-`@W,*#W?7B':8DI MGSKMIIT0=<3:FEJMEQAGO?6IK6VXK0&E?>2UN22T_4P-LLC%YV]B(;6EWSS6 M:SJ%YMKS.#X/8P(;51::5N9D@5:WCJK'VT$,HC%L.`<IERVI^[U`U!L?)B#Y M?##@1M&3$A$>W7S%=^X]S?OVO)H[1I\9>SP:6>\.AT?/O4MB!!6?%:%!E&'I M^I@#E]'8?E:"[2I]=[&@3,2GMIQMHZ&M%3,@3S!-@_7`3/EKBR#6;`,H^8TS M5PSV5Z3E[GTY"WCAOM/SUZNCKQ4P-8JQU10-L=K!I"\;-?83Y%IB!%PP+'L+ M@#,=6?X%H<=WXWM#UQK>"!0._Y,@)OZVY_;V[-3]01#C*7'[8\H^TLX5X&T@ MG_F0A2UY^?[L9=6NVW5W,UYA&+_YH@,_[?[LE_&>.5Y'(TV^TP2'%RXXB_5: MI+5B62N'Y3A8(A`B_-<`!%8S/OY*#3)!0]!@JKD_O/Q)D0A@IR3E1$@RF#,` MY<^I0+WWLI>OM>WWP,_LL^>2""J.N<*X3$,P8,(EL2\K1G,#N8OO]AJ>.@M$ M[:1"L$&9F\3T7N?-Z#F&XBP^=).J^<Y-['ED)0Y6QTV`$BQHXXL_T>#BLEAL M=-[A_B#JA)CVOV9\)C@%G)Q%(+0R,&5Z"#`A#QR??S#U(P(0=@(EP[Q8/BK% M79P6931K"'<N&^OQB&YGJ7LK]P_T\@"`L]QP.AD&[_>/;MV:/#B<<?;U\_?M MNMW.A:@]@%@NYF9%D3$2=_OF91(@"(5$?7JE1&M@YFE#"@0*1D70,8$J5]_A MX8'L740,D,E(:$?H9K&0\DL]_XCTX?E8=W)K?%MC`9-?WMQ?DR>;\#00&A^L M+YKB7$TU@+#&FD_3_(5(P15"'^F]MOMDWFJYF2!Y,#'![E9*]T>0DH)62-0S MRS$MMCUB&R=/A=*F04H>^87`H=&E%V_K^K-@"1:J*N'B+Z4@3'0W]I^C-H_M M_=50XAYW_6!Z&5_AW\.2MEJH(#L]ZDJ\A(P#.3T18$QG%JHI1E_DS-[B_?N? M:8Z'Z`O^P(._U7\XQV/H&``1!?]5'1"?17+W#:C;XZ+*Z2CK7@?8(*7TKCBI MPT)?RQ`V8_.Z`.U^/^F09Y*R'Z]:%C8LTWI!`UE"@R_*9I0A?1_CZGJN:.;) M$,TAD'6%M1;W"/P'X:;3&FT-G0"B*_R\;D2&*@BS`0@/;C3K/3[MT51?<E'K MZL-LNLVNC5A\3ME3?WT,'5E1F[*^7$\NF5R[&`$A=SZQ=:JI&6__%@"1T<ES M2YKQ$2?"VRT#`S4O]150EY93V(L)7Y2%K(($0:WE[4WI'_WY^;TR<(!(M!&# M/BI;4^:5O?*;BV/!WKD0:79C#T'Z0=9Z44)Y8%!BI"5O&!)*W(5P*>FEC_2' M%:D,*`/B@>-OMMQ*Y]X^_9`:?O``>/B7E]>%^@*W:GUF",P!(R*89$J-V$]5 M-!M]VW3G'R9\MV<,81!NE@(7FBXPW#&!WW>F+7UZ'5TGOCK=,S;'VN.11!$[ 9VU6WX+E^SO"'S<AZ,?_B[DBG"A()Q2C@0``` ` end _______________________________________________________________ Have big pipes? SourceForge.net is looking for download mirrors. We supply the hardware. You get the recognition. Email Us: [EMAIL PROTECTED] _______________________________________________ kbuild-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/kbuild-devel