--- eglibc-2.13.orig/locale/C-translit.h +++ eglibc-2.13/locale/C-translit.h @@ -1,4 +1,4 @@ -#define NTRANSLIT 1353 +#define NTRANSLIT 1355 static const uint32_t translit_from_idx[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, @@ -113,7 +113,7 @@ 2616, 2618, 2620, 2622, 2624, 2626, 2628, 2630, 2632, 2634, 2636, 2638, 2640, 2642, 2644, 2646, 2648, 2650, 2652, 2654, 2656, 2658, 2660, 2662, 2664, 2666, 2668, 2670, 2672, 2674, 2676, 2678, 2680, 2682, 2684, 2686, - 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704 + 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704, 2706, 2708 }; static const wchar_t translit_from_tbl[] = L"\x00a0" L"\0" L"\x00a9" L"\0" L"\x00ab" L"\0" L"\x00ad" L"\0" L"\x00ae" @@ -134,334 +134,334 @@ L"\0" L"\x2035" L"\0" L"\x2036" L"\0" L"\x2037" L"\0" L"\x2039" L"\0" L"\x203a" L"\0" L"\x203c" L"\0" L"\x2044" L"\0" L"\x2047" L"\0" L"\x2048" L"\0" L"\x2049" L"\0" L"\x205f" L"\0" L"\x2060" L"\0" L"\x2061" L"\0" - L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x2100" - L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" L"\x2106" L"\0" - L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" L"\0" L"\x210e" - L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" L"\x2113" L"\0" - L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" L"\0" L"\x211b" - L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" L"\x2122" L"\0" - L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" L"\0" L"\x212d" - L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" L"\x2131" L"\0" - L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" L"\0" L"\x2146" - L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" L"\x2153" L"\0" - L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" L"\0" L"\x2158" - L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" L"\x215c" L"\0" - L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" L"\0" L"\x2161" - L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" L"\x2165" L"\0" - L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" L"\0" L"\x216a" - L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" L"\x216e" L"\0" - L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" L"\0" L"\x2173" - L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" L"\x2177" L"\0" - L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" L"\0" L"\x217c" - L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" L"\x2190" L"\0" - L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" L"\0" L"\x21d4" - L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" L"\x2217" L"\0" - L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" L"\0" L"\x2265" - L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" L"\x22d9" L"\0" - L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" L"\0" L"\x2404" - L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" L"\x2408" L"\0" - L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" L"\0" L"\x240d" - L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" L"\x2411" L"\0" - L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" L"\0" L"\x2416" - L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" L"\x241a" L"\0" - L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" L"\0" L"\x241f" - L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" L"\x2424" L"\0" - L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" L"\0" L"\x2464" - L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" L"\x2468" L"\0" - L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" L"\0" L"\x246d" - L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" L"\x2471" L"\0" - L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" L"\0" L"\x2476" - L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" L"\x247a" L"\0" - L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" L"\0" L"\x247f" - L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" L"\x2483" L"\0" - L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" L"\0" L"\x2488" - L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" L"\x248c" L"\0" - L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" L"\0" L"\x2491" - L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" L"\x2495" L"\0" - L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" L"\0" L"\x249a" - L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" L"\x249e" L"\0" - L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" L"\0" L"\x24a3" - L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" L"\x24a7" L"\0" - L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" L"\0" L"\x24ac" - L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" L"\x24b0" L"\0" - L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" L"\0" L"\x24b5" - L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" L"\x24b9" L"\0" - L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" L"\0" L"\x24be" - L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" L"\x24c2" L"\0" - L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" L"\0" L"\x24c7" - L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" L"\x24cb" L"\0" - L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" L"\0" L"\x24d0" - L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" L"\x24d4" L"\0" - L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" L"\0" L"\x24d9" - L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" L"\x24dd" L"\0" - L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" L"\0" L"\x24e2" - L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" L"\x24e6" L"\0" - L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" L"\0" L"\x2500" - L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" L"\x2514" L"\0" - L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" L"\0" L"\x2534" - L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" L"\x2a75" L"\0" - L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" L"\0" L"\x3252" - L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" L"\x3256" L"\0" - L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" L"\0" L"\x325b" - L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" L"\x325f" L"\0" - L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" L"\0" L"\x32b5" - L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" L"\x32b9" L"\0" - L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" L"\0" L"\x32be" - L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" L"\x3373" L"\0" - L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" L"\0" L"\x3381" - L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" L"\x3385" L"\0" - L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" L"\0" L"\x338a" - L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" L"\x338e" L"\0" - L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" L"\0" L"\x3393" - L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" L"\x3397" L"\0" - L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" L"\0" L"\x339c" - L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" L"\x33a0" L"\0" - L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" L"\0" L"\x33a5" - L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" L"\x33a9" L"\0" - L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" L"\0" L"\x33ae" - L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" L"\x33b2" L"\0" - L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" L"\0" L"\x33b7" - L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" L"\x33bb" L"\0" - L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" L"\0" L"\x33c2" - L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" L"\x33c6" L"\0" - L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" L"\0" L"\x33cb" - L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" L"\x33cf" L"\0" - L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" L"\0" L"\x33d4" - L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" L"\x33d8" L"\0" - L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" L"\0" L"\x33dd" - L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" L"\xfb03" L"\0" - L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" L"\0" L"\xfe01" - L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" L"\xfe05" L"\0" - L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" L"\0" L"\xfe0a" - L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" L"\xfe0e" L"\0" - L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" L"\0" L"\xfe50" - L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" L"\xfe56" L"\0" - L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" L"\0" L"\xfe5c" - L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" L"\xfe62" L"\0" - L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" L"\0" L"\xfe68" - L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" L"\xfeff" L"\0" - L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" L"\0" L"\xff05" - L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" L"\xff09" L"\0" - L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" L"\0" L"\xff0e" - L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" L"\xff12" L"\0" - L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" L"\0" L"\xff17" - L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" L"\xff1b" L"\0" - L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" L"\0" L"\xff20" - L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" L"\xff24" L"\0" - L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" L"\0" L"\xff29" - L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" L"\xff2d" L"\0" - L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" L"\0" L"\xff32" - L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" L"\xff36" L"\0" - L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" L"\0" L"\xff3b" - L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" L"\xff3f" L"\0" - L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" L"\0" L"\xff44" - L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" L"\xff48" L"\0" - L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" L"\0" L"\xff4d" - L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" L"\xff51" L"\0" - L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" L"\0" L"\xff56" - L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" L"\xff5a" L"\0" - L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" L"\0" - L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" L"\x0001d403" - L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" L"\0" - L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" L"\x0001d40a" - L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" L"\0" - L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" L"\x0001d411" - L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" L"\0" - L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" L"\x0001d418" - L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" L"\0" - L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" L"\x0001d41f" - L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" L"\0" - L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" L"\x0001d426" - L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" L"\0" - L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" L"\x0001d42d" - L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" L"\0" - L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" L"\x0001d434" - L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" L"\0" - L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" L"\x0001d43b" - L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" L"\0" - L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" L"\x0001d442" - L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" L"\0" - L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" L"\x0001d449" - L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" L"\0" - L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" L"\x0001d450" - L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" L"\0" - L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" L"\x0001d458" - L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" L"\0" - L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" L"\x0001d45f" - L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" L"\0" - L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" L"\x0001d466" - L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" L"\0" - L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" L"\x0001d46d" - L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" L"\0" - L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" L"\x0001d474" - L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" L"\0" - L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" L"\x0001d47b" - L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" L"\0" - L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" L"\x0001d482" - L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" L"\0" - L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" L"\x0001d489" - L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" L"\0" - L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" L"\x0001d490" - L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" L"\0" - L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" L"\x0001d497" - L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" L"\0" - L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" L"\x0001d49f" - L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" L"\0" - L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" L"\x0001d4ac" - L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" L"\0" - L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" L"\x0001d4b4" - L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" L"\0" - L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" L"\x0001d4bd" - L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" L"\0" - L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" L"\x0001d4c6" - L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" L"\0" - L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" L"\x0001d4cd" - L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" L"\0" - L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" L"\x0001d4d4" - L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" L"\0" - L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" L"\x0001d4db" - L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" L"\0" - L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" L"\x0001d4e2" - L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" L"\0" - L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" L"\x0001d4e9" - L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" L"\0" - L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" L"\x0001d4f0" - L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" L"\0" - L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" L"\x0001d4f7" - L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" L"\0" - L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" L"\x0001d4fe" - L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" L"\0" - L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" L"\x0001d505" - L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" L"\0" - L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" L"\x0001d50f" - L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" L"\0" - L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" L"\x0001d517" - L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" L"\0" - L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" L"\x0001d51f" - L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" L"\0" - L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" L"\x0001d526" - L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" L"\0" - L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" L"\x0001d52d" - L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" L"\0" - L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" L"\x0001d534" - L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" L"\0" - L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" L"\x0001d53c" - L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" L"\0" - L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" L"\x0001d544" - L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" L"\0" - L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" L"\x0001d54f" - L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" L"\0" - L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" L"\x0001d557" - L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" L"\0" - L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" L"\x0001d55e" - L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" L"\0" - L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" L"\x0001d565" - L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" L"\0" - L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" L"\x0001d56c" - L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" L"\0" - L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" L"\x0001d573" - L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" L"\0" - L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" L"\x0001d57a" - L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" L"\0" - L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" L"\x0001d581" - L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" L"\0" - L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" L"\x0001d588" - L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" L"\0" - L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" L"\x0001d58f" - L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" L"\0" - L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" L"\x0001d596" - L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" L"\0" - L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" L"\x0001d59d" - L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" L"\0" - L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" L"\x0001d5a4" - L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" L"\0" - L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" L"\x0001d5ab" - L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" L"\0" - L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" L"\x0001d5b2" - L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" L"\0" - L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" L"\x0001d5b9" - L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" L"\0" - L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" L"\x0001d5c0" - L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" L"\0" - L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" L"\x0001d5c7" - L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" L"\0" - L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" L"\x0001d5ce" - L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" L"\0" - L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" L"\x0001d5d5" - L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" L"\0" - L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" L"\x0001d5dc" - L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" L"\0" - L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" L"\x0001d5e3" - L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" L"\0" - L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" L"\x0001d5ea" - L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" L"\0" - L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" L"\x0001d5f1" - L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" L"\0" - L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" L"\x0001d5f8" - L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" L"\0" - L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" L"\x0001d5ff" - L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" L"\0" - L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" L"\x0001d606" - L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" L"\0" - L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" L"\x0001d60d" - L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" L"\0" - L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" L"\x0001d614" - L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" L"\0" - L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" L"\x0001d61b" - L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" L"\0" - L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" L"\x0001d622" - L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" L"\0" - L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" L"\x0001d629" - L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" L"\0" - L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" L"\x0001d630" - L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" L"\0" - L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" L"\x0001d637" - L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" L"\0" - L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" L"\x0001d63e" - L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" L"\0" - L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" L"\x0001d645" - L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" L"\0" - L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" L"\x0001d64c" - L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" L"\0" - L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" L"\x0001d653" - L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" L"\0" - L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" L"\x0001d65a" - L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" L"\0" - L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" L"\x0001d661" - L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" L"\0" - L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" L"\x0001d668" - L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" L"\0" - L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" L"\x0001d66f" - L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" L"\0" - L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" L"\x0001d676" - L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" L"\0" - L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" L"\x0001d67d" - L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" L"\0" - L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" L"\x0001d684" - L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" L"\0" - L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" L"\x0001d68b" - L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" L"\0" - L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" L"\x0001d692" - L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" L"\0" - L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" L"\x0001d699" - L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" L"\0" - L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" L"\x0001d6a0" - L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" L"\0" - L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" L"\x0001d7d1" - L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" L"\0" - L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" L"\x0001d7d8" - L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" L"\0" - L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" L"\x0001d7df" - L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" L"\0" - L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" L"\x0001d7e6" - L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" L"\0" - L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" L"\x0001d7ed" - L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" L"\0" - L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" L"\x0001d7f4" - L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" L"\0" - L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" L"\x0001d7fb" - L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" L"\0" - L"\x0001d7ff"; + L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a1" L"\0" L"\x20a8" L"\0" L"\x20ac" + L"\0" L"\x20b9" L"\0" L"\x2100" L"\0" L"\x2101" L"\0" L"\x2102" L"\0" + L"\x2105" L"\0" L"\x2106" L"\0" L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" + L"\0" L"\x210d" L"\0" L"\x210e" L"\0" L"\x2110" L"\0" L"\x2111" L"\0" + L"\x2112" L"\0" L"\x2113" L"\0" L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" + L"\0" L"\x211a" L"\0" L"\x211b" L"\0" L"\x211c" L"\0" L"\x211d" L"\0" + L"\x2121" L"\0" L"\x2122" L"\0" L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" + L"\0" L"\x212c" L"\0" L"\x212d" L"\0" L"\x212e" L"\0" L"\x212f" L"\0" + L"\x2130" L"\0" L"\x2131" L"\0" L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" + L"\0" L"\x2145" L"\0" L"\x2146" L"\0" L"\x2147" L"\0" L"\x2148" L"\0" + L"\x2149" L"\0" L"\x2153" L"\0" L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" + L"\0" L"\x2157" L"\0" L"\x2158" L"\0" L"\x2159" L"\0" L"\x215a" L"\0" + L"\x215b" L"\0" L"\x215c" L"\0" L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" + L"\0" L"\x2160" L"\0" L"\x2161" L"\0" L"\x2162" L"\0" L"\x2163" L"\0" + L"\x2164" L"\0" L"\x2165" L"\0" L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" + L"\0" L"\x2169" L"\0" L"\x216a" L"\0" L"\x216b" L"\0" L"\x216c" L"\0" + L"\x216d" L"\0" L"\x216e" L"\0" L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" + L"\0" L"\x2172" L"\0" L"\x2173" L"\0" L"\x2174" L"\0" L"\x2175" L"\0" + L"\x2176" L"\0" L"\x2177" L"\0" L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" + L"\0" L"\x217b" L"\0" L"\x217c" L"\0" L"\x217d" L"\0" L"\x217e" L"\0" + L"\x217f" L"\0" L"\x2190" L"\0" L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" + L"\0" L"\x21d2" L"\0" L"\x21d4" L"\0" L"\x2212" L"\0" L"\x2215" L"\0" + L"\x2216" L"\0" L"\x2217" L"\0" L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" + L"\0" L"\x2264" L"\0" L"\x2265" L"\0" L"\x226a" L"\0" L"\x226b" L"\0" + L"\x22d8" L"\0" L"\x22d9" L"\0" L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" + L"\0" L"\x2403" L"\0" L"\x2404" L"\0" L"\x2405" L"\0" L"\x2406" L"\0" + L"\x2407" L"\0" L"\x2408" L"\0" L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" + L"\0" L"\x240c" L"\0" L"\x240d" L"\0" L"\x240e" L"\0" L"\x240f" L"\0" + L"\x2410" L"\0" L"\x2411" L"\0" L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" + L"\0" L"\x2415" L"\0" L"\x2416" L"\0" L"\x2417" L"\0" L"\x2418" L"\0" + L"\x2419" L"\0" L"\x241a" L"\0" L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" + L"\0" L"\x241e" L"\0" L"\x241f" L"\0" L"\x2420" L"\0" L"\x2421" L"\0" + L"\x2423" L"\0" L"\x2424" L"\0" L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" + L"\0" L"\x2463" L"\0" L"\x2464" L"\0" L"\x2465" L"\0" L"\x2466" L"\0" + L"\x2467" L"\0" L"\x2468" L"\0" L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" + L"\0" L"\x246c" L"\0" L"\x246d" L"\0" L"\x246e" L"\0" L"\x246f" L"\0" + L"\x2470" L"\0" L"\x2471" L"\0" L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" + L"\0" L"\x2475" L"\0" L"\x2476" L"\0" L"\x2477" L"\0" L"\x2478" L"\0" + L"\x2479" L"\0" L"\x247a" L"\0" L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" + L"\0" L"\x247e" L"\0" L"\x247f" L"\0" L"\x2480" L"\0" L"\x2481" L"\0" + L"\x2482" L"\0" L"\x2483" L"\0" L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" + L"\0" L"\x2487" L"\0" L"\x2488" L"\0" L"\x2489" L"\0" L"\x248a" L"\0" + L"\x248b" L"\0" L"\x248c" L"\0" L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" + L"\0" L"\x2490" L"\0" L"\x2491" L"\0" L"\x2492" L"\0" L"\x2493" L"\0" + L"\x2494" L"\0" L"\x2495" L"\0" L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" + L"\0" L"\x2499" L"\0" L"\x249a" L"\0" L"\x249b" L"\0" L"\x249c" L"\0" + L"\x249d" L"\0" L"\x249e" L"\0" L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" + L"\0" L"\x24a2" L"\0" L"\x24a3" L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" + L"\x24a6" L"\0" L"\x24a7" L"\0" L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" + L"\0" L"\x24ab" L"\0" L"\x24ac" L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" + L"\x24af" L"\0" L"\x24b0" L"\0" L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" + L"\0" L"\x24b4" L"\0" L"\x24b5" L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" + L"\x24b8" L"\0" L"\x24b9" L"\0" L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" + L"\0" L"\x24bd" L"\0" L"\x24be" L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" + L"\x24c1" L"\0" L"\x24c2" L"\0" L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" + L"\0" L"\x24c6" L"\0" L"\x24c7" L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" + L"\x24ca" L"\0" L"\x24cb" L"\0" L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" + L"\0" L"\x24cf" L"\0" L"\x24d0" L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" + L"\x24d3" L"\0" L"\x24d4" L"\0" L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" + L"\0" L"\x24d8" L"\0" L"\x24d9" L"\0" L"\x24da" L"\0" L"\x24db" L"\0" + L"\x24dc" L"\0" L"\x24dd" L"\0" L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" + L"\0" L"\x24e1" L"\0" L"\x24e2" L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" + L"\x24e5" L"\0" L"\x24e6" L"\0" L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" + L"\0" L"\x24ea" L"\0" L"\x2500" L"\0" L"\x2502" L"\0" L"\x250c" L"\0" + L"\x2510" L"\0" L"\x2514" L"\0" L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" + L"\0" L"\x252c" L"\0" L"\x2534" L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" + L"\x2a74" L"\0" L"\x2a75" L"\0" L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" + L"\0" L"\x3251" L"\0" L"\x3252" L"\0" L"\x3253" L"\0" L"\x3254" L"\0" + L"\x3255" L"\0" L"\x3256" L"\0" L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" + L"\0" L"\x325a" L"\0" L"\x325b" L"\0" L"\x325c" L"\0" L"\x325d" L"\0" + L"\x325e" L"\0" L"\x325f" L"\0" L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" + L"\0" L"\x32b4" L"\0" L"\x32b5" L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" + L"\x32b8" L"\0" L"\x32b9" L"\0" L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" + L"\0" L"\x32bd" L"\0" L"\x32be" L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" + L"\x3372" L"\0" L"\x3373" L"\0" L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" + L"\0" L"\x3380" L"\0" L"\x3381" L"\0" L"\x3382" L"\0" L"\x3383" L"\0" + L"\x3384" L"\0" L"\x3385" L"\0" L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" + L"\0" L"\x3389" L"\0" L"\x338a" L"\0" L"\x338b" L"\0" L"\x338c" L"\0" + L"\x338d" L"\0" L"\x338e" L"\0" L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" + L"\0" L"\x3392" L"\0" L"\x3393" L"\0" L"\x3394" L"\0" L"\x3395" L"\0" + L"\x3396" L"\0" L"\x3397" L"\0" L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" + L"\0" L"\x339b" L"\0" L"\x339c" L"\0" L"\x339d" L"\0" L"\x339e" L"\0" + L"\x339f" L"\0" L"\x33a0" L"\0" L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" + L"\0" L"\x33a4" L"\0" L"\x33a5" L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" + L"\x33a8" L"\0" L"\x33a9" L"\0" L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" + L"\0" L"\x33ad" L"\0" L"\x33ae" L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" + L"\x33b1" L"\0" L"\x33b2" L"\0" L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" + L"\0" L"\x33b6" L"\0" L"\x33b7" L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" + L"\x33ba" L"\0" L"\x33bb" L"\0" L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" + L"\0" L"\x33bf" L"\0" L"\x33c2" L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" + L"\x33c5" L"\0" L"\x33c6" L"\0" L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" + L"\0" L"\x33ca" L"\0" L"\x33cb" L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" + L"\x33ce" L"\0" L"\x33cf" L"\0" L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" + L"\0" L"\x33d3" L"\0" L"\x33d4" L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" + L"\x33d7" L"\0" L"\x33d8" L"\0" L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" + L"\0" L"\x33dc" L"\0" L"\x33dd" L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" + L"\xfb02" L"\0" L"\xfb03" L"\0" L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" + L"\0" L"\xfe00" L"\0" L"\xfe01" L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" + L"\xfe04" L"\0" L"\xfe05" L"\0" L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" + L"\0" L"\xfe09" L"\0" L"\xfe0a" L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" + L"\xfe0d" L"\0" L"\xfe0e" L"\0" L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" + L"\0" L"\xfe4f" L"\0" L"\xfe50" L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" + L"\xfe55" L"\0" L"\xfe56" L"\0" L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" + L"\0" L"\xfe5b" L"\0" L"\xfe5c" L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" + L"\xfe61" L"\0" L"\xfe62" L"\0" L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" + L"\0" L"\xfe66" L"\0" L"\xfe68" L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" + L"\xfe6b" L"\0" L"\xfeff" L"\0" L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" + L"\0" L"\xff04" L"\0" L"\xff05" L"\0" L"\xff06" L"\0" L"\xff07" L"\0" + L"\xff08" L"\0" L"\xff09" L"\0" L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" + L"\0" L"\xff0d" L"\0" L"\xff0e" L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" + L"\xff11" L"\0" L"\xff12" L"\0" L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" + L"\0" L"\xff16" L"\0" L"\xff17" L"\0" L"\xff18" L"\0" L"\xff19" L"\0" + L"\xff1a" L"\0" L"\xff1b" L"\0" L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" + L"\0" L"\xff1f" L"\0" L"\xff20" L"\0" L"\xff21" L"\0" L"\xff22" L"\0" + L"\xff23" L"\0" L"\xff24" L"\0" L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" + L"\0" L"\xff28" L"\0" L"\xff29" L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" + L"\xff2c" L"\0" L"\xff2d" L"\0" L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" + L"\0" L"\xff31" L"\0" L"\xff32" L"\0" L"\xff33" L"\0" L"\xff34" L"\0" + L"\xff35" L"\0" L"\xff36" L"\0" L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" + L"\0" L"\xff3a" L"\0" L"\xff3b" L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" + L"\xff3e" L"\0" L"\xff3f" L"\0" L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" + L"\0" L"\xff43" L"\0" L"\xff44" L"\0" L"\xff45" L"\0" L"\xff46" L"\0" + L"\xff47" L"\0" L"\xff48" L"\0" L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" + L"\0" L"\xff4c" L"\0" L"\xff4d" L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" + L"\xff50" L"\0" L"\xff51" L"\0" L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" + L"\0" L"\xff55" L"\0" L"\xff56" L"\0" L"\xff57" L"\0" L"\xff58" L"\0" + L"\xff59" L"\0" L"\xff5a" L"\0" L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" + L"\0" L"\xff5e" L"\0" L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" + L"\0" L"\x0001d403" L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" + L"\x0001d406" L"\0" L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" + L"\0" L"\x0001d40a" L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" + L"\x0001d40d" L"\0" L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" + L"\0" L"\x0001d411" L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" + L"\x0001d414" L"\0" L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" + L"\0" L"\x0001d418" L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" + L"\x0001d41b" L"\0" L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" + L"\0" L"\x0001d41f" L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" + L"\x0001d422" L"\0" L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" + L"\0" L"\x0001d426" L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" + L"\x0001d429" L"\0" L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" + L"\0" L"\x0001d42d" L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" + L"\x0001d430" L"\0" L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" + L"\0" L"\x0001d434" L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" + L"\x0001d437" L"\0" L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" + L"\0" L"\x0001d43b" L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" + L"\x0001d43e" L"\0" L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" + L"\0" L"\x0001d442" L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" + L"\x0001d445" L"\0" L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" + L"\0" L"\x0001d449" L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" + L"\x0001d44c" L"\0" L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" + L"\0" L"\x0001d450" L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" + L"\x0001d453" L"\0" L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" + L"\0" L"\x0001d458" L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" + L"\x0001d45b" L"\0" L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" + L"\0" L"\x0001d45f" L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" + L"\x0001d462" L"\0" L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" + L"\0" L"\x0001d466" L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" + L"\x0001d469" L"\0" L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" + L"\0" L"\x0001d46d" L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" + L"\x0001d470" L"\0" L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" + L"\0" L"\x0001d474" L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" + L"\x0001d477" L"\0" L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" + L"\0" L"\x0001d47b" L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" + L"\x0001d47e" L"\0" L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" + L"\0" L"\x0001d482" L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" + L"\x0001d485" L"\0" L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" + L"\0" L"\x0001d489" L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" + L"\x0001d48c" L"\0" L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" + L"\0" L"\x0001d490" L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" + L"\x0001d493" L"\0" L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" + L"\0" L"\x0001d497" L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" + L"\x0001d49a" L"\0" L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" + L"\0" L"\x0001d49f" L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" + L"\x0001d4a6" L"\0" L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" + L"\0" L"\x0001d4ac" L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" + L"\x0001d4b0" L"\0" L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" + L"\0" L"\x0001d4b4" L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" + L"\x0001d4b7" L"\0" L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" + L"\0" L"\x0001d4bd" L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" + L"\x0001d4c0" L"\0" L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" + L"\0" L"\x0001d4c6" L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" + L"\x0001d4c9" L"\0" L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" + L"\0" L"\x0001d4cd" L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" + L"\x0001d4d0" L"\0" L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" + L"\0" L"\x0001d4d4" L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" + L"\x0001d4d7" L"\0" L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" + L"\0" L"\x0001d4db" L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" + L"\x0001d4de" L"\0" L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" + L"\0" L"\x0001d4e2" L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" + L"\x0001d4e5" L"\0" L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" + L"\0" L"\x0001d4e9" L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" + L"\x0001d4ec" L"\0" L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" + L"\0" L"\x0001d4f0" L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" + L"\x0001d4f3" L"\0" L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" + L"\0" L"\x0001d4f7" L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" + L"\x0001d4fa" L"\0" L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" + L"\0" L"\x0001d4fe" L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" + L"\x0001d501" L"\0" L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" + L"\0" L"\x0001d505" L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" + L"\x0001d509" L"\0" L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" + L"\0" L"\x0001d50f" L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" + L"\x0001d512" L"\0" L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" + L"\0" L"\x0001d517" L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" + L"\x0001d51a" L"\0" L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" + L"\0" L"\x0001d51f" L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" + L"\x0001d522" L"\0" L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" + L"\0" L"\x0001d526" L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" + L"\x0001d529" L"\0" L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" + L"\0" L"\x0001d52d" L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" + L"\x0001d530" L"\0" L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" + L"\0" L"\x0001d534" L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" + L"\x0001d537" L"\0" L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" + L"\0" L"\x0001d53c" L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" + L"\x0001d540" L"\0" L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" + L"\0" L"\x0001d544" L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" + L"\x0001d54b" L"\0" L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" + L"\0" L"\x0001d54f" L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" + L"\x0001d553" L"\0" L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" + L"\0" L"\x0001d557" L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" + L"\x0001d55a" L"\0" L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" + L"\0" L"\x0001d55e" L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" + L"\x0001d561" L"\0" L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" + L"\0" L"\x0001d565" L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" + L"\x0001d568" L"\0" L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" + L"\0" L"\x0001d56c" L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" + L"\x0001d56f" L"\0" L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" + L"\0" L"\x0001d573" L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" + L"\x0001d576" L"\0" L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" + L"\0" L"\x0001d57a" L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" + L"\x0001d57d" L"\0" L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" + L"\0" L"\x0001d581" L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" + L"\x0001d584" L"\0" L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" + L"\0" L"\x0001d588" L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" + L"\x0001d58b" L"\0" L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" + L"\0" L"\x0001d58f" L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" + L"\x0001d592" L"\0" L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" + L"\0" L"\x0001d596" L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" + L"\x0001d599" L"\0" L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" + L"\0" L"\x0001d59d" L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" + L"\x0001d5a0" L"\0" L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" + L"\0" L"\x0001d5a4" L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" + L"\x0001d5a7" L"\0" L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" + L"\0" L"\x0001d5ab" L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" + L"\x0001d5ae" L"\0" L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" + L"\0" L"\x0001d5b2" L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" + L"\x0001d5b5" L"\0" L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" + L"\0" L"\x0001d5b9" L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" + L"\x0001d5bc" L"\0" L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" + L"\0" L"\x0001d5c0" L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" + L"\x0001d5c3" L"\0" L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" + L"\0" L"\x0001d5c7" L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" + L"\x0001d5ca" L"\0" L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" + L"\0" L"\x0001d5ce" L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" + L"\x0001d5d1" L"\0" L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" + L"\0" L"\x0001d5d5" L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" + L"\x0001d5d8" L"\0" L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" + L"\0" L"\x0001d5dc" L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" + L"\x0001d5df" L"\0" L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" + L"\0" L"\x0001d5e3" L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" + L"\x0001d5e6" L"\0" L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" + L"\0" L"\x0001d5ea" L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" + L"\x0001d5ed" L"\0" L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" + L"\0" L"\x0001d5f1" L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" + L"\x0001d5f4" L"\0" L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" + L"\0" L"\x0001d5f8" L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" + L"\x0001d5fb" L"\0" L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" + L"\0" L"\x0001d5ff" L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" + L"\x0001d602" L"\0" L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" + L"\0" L"\x0001d606" L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" + L"\x0001d609" L"\0" L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" + L"\0" L"\x0001d60d" L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" + L"\x0001d610" L"\0" L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" + L"\0" L"\x0001d614" L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" + L"\x0001d617" L"\0" L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" + L"\0" L"\x0001d61b" L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" + L"\x0001d61e" L"\0" L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" + L"\0" L"\x0001d622" L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" + L"\x0001d625" L"\0" L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" + L"\0" L"\x0001d629" L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" + L"\x0001d62c" L"\0" L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" + L"\0" L"\x0001d630" L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" + L"\x0001d633" L"\0" L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" + L"\0" L"\x0001d637" L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" + L"\x0001d63a" L"\0" L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" + L"\0" L"\x0001d63e" L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" + L"\x0001d641" L"\0" L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" + L"\0" L"\x0001d645" L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" + L"\x0001d648" L"\0" L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" + L"\0" L"\x0001d64c" L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" + L"\x0001d64f" L"\0" L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" + L"\0" L"\x0001d653" L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" + L"\x0001d656" L"\0" L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" + L"\0" L"\x0001d65a" L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" + L"\x0001d65d" L"\0" L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" + L"\0" L"\x0001d661" L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" + L"\x0001d664" L"\0" L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" + L"\0" L"\x0001d668" L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" + L"\x0001d66b" L"\0" L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" + L"\0" L"\x0001d66f" L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" + L"\x0001d672" L"\0" L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" + L"\0" L"\x0001d676" L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" + L"\x0001d679" L"\0" L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" + L"\0" L"\x0001d67d" L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" + L"\x0001d680" L"\0" L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" + L"\0" L"\x0001d684" L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" + L"\x0001d687" L"\0" L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" + L"\0" L"\x0001d68b" L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" + L"\x0001d68e" L"\0" L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" + L"\0" L"\x0001d692" L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" + L"\x0001d695" L"\0" L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" + L"\0" L"\x0001d699" L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" + L"\x0001d69c" L"\0" L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" + L"\0" L"\x0001d6a0" L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" + L"\x0001d6a3" L"\0" L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" + L"\0" L"\x0001d7d1" L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" + L"\x0001d7d4" L"\0" L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" + L"\0" L"\x0001d7d8" L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" + L"\x0001d7db" L"\0" L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" + L"\0" L"\x0001d7df" L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" + L"\x0001d7e2" L"\0" L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" + L"\0" L"\x0001d7e6" L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" + L"\x0001d7e9" L"\0" L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" + L"\0" L"\x0001d7ed" L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" + L"\x0001d7f0" L"\0" L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" + L"\0" L"\x0001d7f4" L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" + L"\x0001d7f7" L"\0" L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" + L"\0" L"\x0001d7fb" L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" + L"\x0001d7fe" L"\0" L"\x0001d7ff"; static const uint32_t translit_to_idx[] = { 0, 3, 8, 12, 15, 20, 23, 26, 30, 37, 44, 51, @@ -471,22 +471,22 @@ 180, 183, 186, 189, 192, 196, 199, 202, 205, 208, 211, 214, 217, 221, 224, 227, 230, 233, 237, 242, 245, 248, 252, 257, 260, 263, 267, 270, 274, 278, 282, 285, 287, 289, 291, 293, - 297, 302, 307, 312, 315, 320, 325, 328, 331, 334, 337, 340, - 343, 346, 349, 352, 355, 359, 362, 365, 368, 371, 374, 379, - 385, 388, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, - 423, 426, 429, 432, 435, 438, 445, 452, 459, 466, 473, 480, - 487, 494, 501, 508, 515, 522, 527, 530, 534, 539, 543, 546, - 550, 555, 561, 565, 568, 572, 577, 580, 583, 586, 589, 592, - 596, 601, 605, 608, 612, 617, 623, 627, 630, 634, 639, 642, - 645, 648, 651, 655, 659, 664, 668, 672, 677, 680, 683, 686, - 689, 692, 695, 698, 702, 706, 710, 714, 719, 724, 729, 734, - 739, 744, 749, 754, 759, 764, 768, 772, 776, 780, 784, 788, - 792, 796, 801, 806, 811, 816, 821, 826, 831, 836, 841, 845, - 850, 855, 859, 863, 867, 871, 875, 880, 883, 887, 892, 897, - 902, 907, 912, 917, 922, 927, 932, 938, 944, 950, 956, 962, - 968, 974, 980, 986, 992, 998, 1003, 1008, 1013, 1018, 1023, 1028, - 1033, 1038, 1043, 1049, 1055, 1061, 1067, 1073, 1079, 1085, 1091, 1097, - 1103, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137, 1141, 1145, 1150, + 298, 302, 307, 312, 317, 322, 325, 330, 335, 338, 341, 344, + 347, 350, 353, 356, 359, 362, 365, 369, 372, 375, 378, 381, + 384, 389, 395, 398, 403, 406, 409, 412, 415, 418, 421, 424, + 427, 430, 433, 436, 439, 442, 445, 448, 455, 462, 469, 476, + 483, 490, 497, 504, 511, 518, 525, 532, 537, 540, 544, 549, + 553, 556, 560, 565, 571, 575, 578, 582, 587, 590, 593, 596, + 599, 602, 606, 611, 615, 618, 622, 627, 633, 637, 640, 644, + 649, 652, 655, 658, 661, 665, 669, 674, 678, 682, 687, 690, + 693, 696, 699, 702, 705, 708, 712, 716, 720, 724, 729, 734, + 739, 744, 749, 754, 759, 764, 769, 774, 778, 782, 786, 790, + 794, 798, 802, 806, 811, 816, 821, 826, 831, 836, 841, 846, + 851, 855, 860, 865, 869, 873, 877, 881, 885, 890, 893, 897, + 902, 907, 912, 917, 922, 927, 932, 937, 942, 948, 954, 960, + 966, 972, 978, 984, 990, 996, 1002, 1008, 1013, 1018, 1023, 1028, + 1033, 1038, 1043, 1048, 1053, 1059, 1065, 1071, 1077, 1083, 1089, 1095, + 1101, 1107, 1113, 1119, 1123, 1127, 1131, 1135, 1139, 1143, 1147, 1151, 1155, 1160, 1165, 1170, 1175, 1180, 1185, 1190, 1195, 1200, 1205, 1210, 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265, 1270, 1275, 1280, 1285, 1290, 1295, 1300, 1305, 1310, 1315, 1320, 1325, 1330, @@ -494,89 +494,89 @@ 1395, 1400, 1405, 1410, 1415, 1420, 1425, 1430, 1435, 1440, 1445, 1450, 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1505, 1510, 1515, 1520, 1525, 1530, 1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, - 1575, 1580, 1585, 1590, 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616, - 1619, 1622, 1625, 1628, 1631, 1636, 1640, 1645, 1648, 1651, 1657, 1663, - 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717, 1723, 1729, 1735, - 1741, 1747, 1753, 1759, 1765, 1771, 1777, 1783, 1789, 1795, 1801, 1807, - 1813, 1819, 1825, 1831, 1836, 1840, 1844, 1849, 1853, 1857, 1861, 1865, - 1869, 1873, 1877, 1881, 1885, 1889, 1894, 1900, 1904, 1908, 1912, 1916, - 1920, 1924, 1928, 1933, 1938, 1943, 1948, 1952, 1956, 1960, 1964, 1968, - 1972, 1976, 1980, 1984, 1988, 1994, 2000, 2005, 2011, 2017, 2023, 2028, - 2034, 2039, 2046, 2050, 2055, 2060, 2065, 2070, 2077, 2086, 2090, 2094, - 2098, 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, 2142, - 2146, 2150, 2156, 2160, 2164, 2168, 2174, 2179, 2183, 2187, 2191, 2195, - 2199, 2203, 2207, 2211, 2215, 2219, 2224, 2228, 2232, 2237, 2242, 2246, - 2252, 2257, 2261, 2265, 2269, 2273, 2277, 2281, 2285, 2290, 2295, 2299, - 2302, 2304, 2306, 2308, 2310, 2312, 2314, 2316, 2318, 2320, 2322, 2324, - 2326, 2328, 2330, 2332, 2334, 2337, 2340, 2343, 2346, 2349, 2352, 2355, - 2358, 2361, 2364, 2367, 2370, 2373, 2376, 2379, 2382, 2385, 2388, 2391, - 2394, 2397, 2400, 2403, 2406, 2409, 2411, 2414, 2417, 2420, 2423, 2426, - 2429, 2432, 2435, 2438, 2441, 2444, 2447, 2450, 2453, 2456, 2459, 2462, - 2465, 2468, 2471, 2474, 2477, 2480, 2483, 2486, 2489, 2492, 2495, 2498, - 2501, 2504, 2507, 2510, 2513, 2516, 2519, 2522, 2525, 2528, 2531, 2534, - 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570, - 2573, 2576, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600, 2603, 2606, - 2609, 2612, 2615, 2618, 2621, 2624, 2627, 2630, 2633, 2636, 2639, 2642, - 2645, 2648, 2651, 2654, 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, - 2681, 2684, 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, - 2717, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, - 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, - 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, - 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, - 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2888, 2891, 2894, - 2897, 2900, 2903, 2906, 2909, 2912, 2915, 2918, 2921, 2924, 2927, 2930, - 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957, 2960, 2963, 2966, - 2969, 2972, 2975, 2978, 2981, 2984, 2987, 2990, 2993, 2996, 2999, 3002, - 3005, 3008, 3011, 3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, - 3041, 3044, 3047, 3050, 3053, 3056, 3059, 3062, 3065, 3068, 3071, 3074, - 3077, 3080, 3083, 3086, 3089, 3092, 3095, 3098, 3101, 3104, 3107, 3110, - 3113, 3116, 3119, 3122, 3125, 3128, 3131, 3134, 3137, 3140, 3143, 3146, - 3149, 3152, 3155, 3158, 3161, 3164, 3167, 3170, 3173, 3176, 3179, 3182, - 3185, 3188, 3191, 3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, - 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3245, 3248, 3251, 3254, - 3257, 3260, 3263, 3266, 3269, 3272, 3275, 3278, 3281, 3284, 3287, 3290, - 3293, 3296, 3299, 3302, 3305, 3308, 3311, 3314, 3317, 3320, 3323, 3326, - 3329, 3332, 3335, 3338, 3341, 3344, 3347, 3350, 3353, 3356, 3359, 3362, - 3365, 3368, 3371, 3374, 3377, 3380, 3383, 3386, 3389, 3392, 3395, 3398, - 3401, 3404, 3407, 3410, 3413, 3416, 3419, 3422, 3425, 3428, 3431, 3434, - 3437, 3440, 3443, 3446, 3449, 3452, 3455, 3458, 3461, 3464, 3467, 3470, - 3473, 3476, 3479, 3482, 3485, 3488, 3491, 3494, 3497, 3500, 3503, 3506, - 3509, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536, 3539, 3542, - 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566, 3569, 3572, 3575, 3578, - 3581, 3584, 3587, 3590, 3593, 3596, 3599, 3602, 3605, 3608, 3611, 3614, - 3617, 3620, 3623, 3626, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, - 3653, 3656, 3659, 3662, 3665, 3668, 3671, 3674, 3677, 3680, 3683, 3686, - 3689, 3692, 3695, 3698, 3701, 3704, 3707, 3710, 3713, 3716, 3719, 3722, - 3725, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, - 3761, 3764, 3767, 3770, 3773, 3776, 3779, 3782, 3785, 3788, 3791, 3794, - 3797, 3800, 3803, 3806, 3809, 3812, 3815, 3818, 3821, 3824, 3827, 3830, - 3833, 3836, 3839, 3842, 3845, 3848, 3851, 3854, 3857, 3860, 3863, 3866, - 3869, 3872, 3875, 3878, 3881, 3884, 3887, 3890, 3893, 3896, 3899, 3902, - 3905, 3908, 3911, 3914, 3917, 3920, 3923, 3926, 3929, 3932, 3935, 3938, - 3941, 3944, 3947, 3950, 3953, 3956, 3959, 3962, 3965, 3968, 3971, 3974, - 3977, 3980, 3983, 3986, 3989, 3992, 3995, 3998, 4001, 4004, 4007, 4010, - 4013, 4016, 4019, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043, 4046, - 4049, 4052, 4055, 4058, 4061, 4064, 4067, 4070, 4073, 4076, 4079, 4082, - 4085, 4088, 4091, 4094, 4097, 4100, 4103, 4106, 4109, 4112, 4115, 4118, - 4121, 4124, 4127, 4130, 4133, 4136, 4139, 4142, 4145, 4148, 4151, 4154, - 4157, 4160, 4163, 4166, 4169, 4172, 4175, 4178, 4181, 4184, 4187, 4190, - 4193, 4196, 4199, 4202, 4205, 4208, 4211, 4214, 4217, 4220, 4223, 4226, - 4229, 4232, 4235, 4238, 4241, 4244, 4247, 4250, 4253, 4256, 4259, 4262, - 4265, 4268, 4271, 4274, 4277, 4280, 4283, 4286, 4289, 4292, 4295, 4298, - 4301, 4304, 4307, 4310, 4313, 4316, 4319, 4322, 4325, 4328, 4331, 4334, - 4337, 4340, 4343, 4346, 4349, 4352, 4355, 4358, 4361, 4364, 4367, 4370, - 4373, 4376, 4379, 4382, 4385, 4388, 4391, 4394, 4397, 4400, 4403, 4406, - 4409, 4412, 4415, 4418, 4421, 4424, 4427, 4430, 4433, 4436, 4439, 4442, - 4445, 4448, 4451, 4454, 4457, 4460, 4463, 4466, 4469, 4472, 4475, 4478, - 4481, 4484, 4487, 4490, 4493, 4496, 4499, 4502, 4505, 4508, 4511, 4514, - 4517, 4520, 4523, 4526, 4529, 4532, 4535, 4538, 4541, 4544, 4547, 4550, - 4553, 4556, 4559, 4562, 4565, 4568, 4571, 4574, 4577, 4580, 4583, 4586, - 4589, 4592, 4595, 4598, 4601, 4604, 4607, 4610, 4613, 4616, 4619, 4622, - 4625, 4628, 4631, 4634, 4637, 4640, 4643, 4646, 4649, 4652, 4655, 4658, - 4661, 4664, 4667, 4670, 4673, 4676, 4679, 4682, 4685, 4688, 4691, 4694, - 4697, 4700, 4703, 4706, 4709, 4712, 4715, 4718, 4721, 4724, 4727, 4730, - 4733, 4736, 4739, 4742, 4745, 4748, 4751, 4754, 4757, 4760, 4763, 4766, - 4769, 4772, 4775, 4778, 4781, 4784, 4787, 4790, 4793 + 1575, 1580, 1585, 1590, 1595, 1600, 1605, 1608, 1611, 1614, 1617, 1620, + 1623, 1626, 1629, 1632, 1635, 1638, 1641, 1646, 1650, 1655, 1658, 1661, + 1667, 1673, 1679, 1685, 1691, 1697, 1703, 1709, 1715, 1721, 1727, 1733, + 1739, 1745, 1751, 1757, 1763, 1769, 1775, 1781, 1787, 1793, 1799, 1805, + 1811, 1817, 1823, 1829, 1835, 1841, 1846, 1850, 1854, 1859, 1863, 1867, + 1871, 1875, 1879, 1883, 1887, 1891, 1895, 1899, 1904, 1910, 1914, 1918, + 1922, 1926, 1930, 1934, 1938, 1943, 1948, 1953, 1958, 1962, 1966, 1970, + 1974, 1978, 1982, 1986, 1990, 1994, 1998, 2004, 2010, 2015, 2021, 2027, + 2033, 2038, 2044, 2049, 2056, 2060, 2065, 2070, 2075, 2080, 2087, 2096, + 2100, 2104, 2108, 2112, 2116, 2120, 2124, 2128, 2132, 2136, 2140, 2144, + 2148, 2152, 2156, 2160, 2166, 2170, 2174, 2178, 2184, 2189, 2193, 2197, + 2201, 2205, 2209, 2213, 2217, 2221, 2225, 2229, 2234, 2238, 2242, 2247, + 2252, 2256, 2262, 2267, 2271, 2275, 2279, 2283, 2287, 2291, 2295, 2300, + 2305, 2309, 2312, 2314, 2316, 2318, 2320, 2322, 2324, 2326, 2328, 2330, + 2332, 2334, 2336, 2338, 2340, 2342, 2344, 2347, 2350, 2353, 2356, 2359, + 2362, 2365, 2368, 2371, 2374, 2377, 2380, 2383, 2386, 2389, 2392, 2395, + 2398, 2401, 2404, 2407, 2410, 2413, 2416, 2419, 2421, 2424, 2427, 2430, + 2433, 2436, 2439, 2442, 2445, 2448, 2451, 2454, 2457, 2460, 2463, 2466, + 2469, 2472, 2475, 2478, 2481, 2484, 2487, 2490, 2493, 2496, 2499, 2502, + 2505, 2508, 2511, 2514, 2517, 2520, 2523, 2526, 2529, 2532, 2535, 2538, + 2541, 2544, 2547, 2550, 2553, 2556, 2559, 2562, 2565, 2568, 2571, 2574, + 2577, 2580, 2583, 2586, 2589, 2592, 2595, 2598, 2601, 2604, 2607, 2610, + 2613, 2616, 2619, 2622, 2625, 2628, 2631, 2634, 2637, 2640, 2643, 2646, + 2649, 2652, 2655, 2658, 2661, 2664, 2667, 2670, 2673, 2676, 2679, 2682, + 2685, 2688, 2691, 2694, 2697, 2700, 2703, 2706, 2709, 2712, 2715, 2718, + 2721, 2724, 2727, 2730, 2733, 2736, 2739, 2742, 2745, 2748, 2751, 2754, + 2757, 2760, 2763, 2766, 2769, 2772, 2775, 2778, 2781, 2784, 2787, 2790, + 2793, 2796, 2799, 2802, 2805, 2808, 2811, 2814, 2817, 2820, 2823, 2826, + 2829, 2832, 2835, 2838, 2841, 2844, 2847, 2850, 2853, 2856, 2859, 2862, + 2865, 2868, 2871, 2874, 2877, 2880, 2883, 2886, 2889, 2892, 2895, 2898, + 2901, 2904, 2907, 2910, 2913, 2916, 2919, 2922, 2925, 2928, 2931, 2934, + 2937, 2940, 2943, 2946, 2949, 2952, 2955, 2958, 2961, 2964, 2967, 2970, + 2973, 2976, 2979, 2982, 2985, 2988, 2991, 2994, 2997, 3000, 3003, 3006, + 3009, 3012, 3015, 3018, 3021, 3024, 3027, 3030, 3033, 3036, 3039, 3042, + 3045, 3048, 3051, 3054, 3057, 3060, 3063, 3066, 3069, 3072, 3075, 3078, + 3081, 3084, 3087, 3090, 3093, 3096, 3099, 3102, 3105, 3108, 3111, 3114, + 3117, 3120, 3123, 3126, 3129, 3132, 3135, 3138, 3141, 3144, 3147, 3150, + 3153, 3156, 3159, 3162, 3165, 3168, 3171, 3174, 3177, 3180, 3183, 3186, + 3189, 3192, 3195, 3198, 3201, 3204, 3207, 3210, 3213, 3216, 3219, 3222, + 3225, 3228, 3231, 3234, 3237, 3240, 3243, 3246, 3249, 3252, 3255, 3258, + 3261, 3264, 3267, 3270, 3273, 3276, 3279, 3282, 3285, 3288, 3291, 3294, + 3297, 3300, 3303, 3306, 3309, 3312, 3315, 3318, 3321, 3324, 3327, 3330, + 3333, 3336, 3339, 3342, 3345, 3348, 3351, 3354, 3357, 3360, 3363, 3366, + 3369, 3372, 3375, 3378, 3381, 3384, 3387, 3390, 3393, 3396, 3399, 3402, + 3405, 3408, 3411, 3414, 3417, 3420, 3423, 3426, 3429, 3432, 3435, 3438, + 3441, 3444, 3447, 3450, 3453, 3456, 3459, 3462, 3465, 3468, 3471, 3474, + 3477, 3480, 3483, 3486, 3489, 3492, 3495, 3498, 3501, 3504, 3507, 3510, + 3513, 3516, 3519, 3522, 3525, 3528, 3531, 3534, 3537, 3540, 3543, 3546, + 3549, 3552, 3555, 3558, 3561, 3564, 3567, 3570, 3573, 3576, 3579, 3582, + 3585, 3588, 3591, 3594, 3597, 3600, 3603, 3606, 3609, 3612, 3615, 3618, + 3621, 3624, 3627, 3630, 3633, 3636, 3639, 3642, 3645, 3648, 3651, 3654, + 3657, 3660, 3663, 3666, 3669, 3672, 3675, 3678, 3681, 3684, 3687, 3690, + 3693, 3696, 3699, 3702, 3705, 3708, 3711, 3714, 3717, 3720, 3723, 3726, + 3729, 3732, 3735, 3738, 3741, 3744, 3747, 3750, 3753, 3756, 3759, 3762, + 3765, 3768, 3771, 3774, 3777, 3780, 3783, 3786, 3789, 3792, 3795, 3798, + 3801, 3804, 3807, 3810, 3813, 3816, 3819, 3822, 3825, 3828, 3831, 3834, + 3837, 3840, 3843, 3846, 3849, 3852, 3855, 3858, 3861, 3864, 3867, 3870, + 3873, 3876, 3879, 3882, 3885, 3888, 3891, 3894, 3897, 3900, 3903, 3906, + 3909, 3912, 3915, 3918, 3921, 3924, 3927, 3930, 3933, 3936, 3939, 3942, + 3945, 3948, 3951, 3954, 3957, 3960, 3963, 3966, 3969, 3972, 3975, 3978, + 3981, 3984, 3987, 3990, 3993, 3996, 3999, 4002, 4005, 4008, 4011, 4014, + 4017, 4020, 4023, 4026, 4029, 4032, 4035, 4038, 4041, 4044, 4047, 4050, + 4053, 4056, 4059, 4062, 4065, 4068, 4071, 4074, 4077, 4080, 4083, 4086, + 4089, 4092, 4095, 4098, 4101, 4104, 4107, 4110, 4113, 4116, 4119, 4122, + 4125, 4128, 4131, 4134, 4137, 4140, 4143, 4146, 4149, 4152, 4155, 4158, + 4161, 4164, 4167, 4170, 4173, 4176, 4179, 4182, 4185, 4188, 4191, 4194, + 4197, 4200, 4203, 4206, 4209, 4212, 4215, 4218, 4221, 4224, 4227, 4230, + 4233, 4236, 4239, 4242, 4245, 4248, 4251, 4254, 4257, 4260, 4263, 4266, + 4269, 4272, 4275, 4278, 4281, 4284, 4287, 4290, 4293, 4296, 4299, 4302, + 4305, 4308, 4311, 4314, 4317, 4320, 4323, 4326, 4329, 4332, 4335, 4338, + 4341, 4344, 4347, 4350, 4353, 4356, 4359, 4362, 4365, 4368, 4371, 4374, + 4377, 4380, 4383, 4386, 4389, 4392, 4395, 4398, 4401, 4404, 4407, 4410, + 4413, 4416, 4419, 4422, 4425, 4428, 4431, 4434, 4437, 4440, 4443, 4446, + 4449, 4452, 4455, 4458, 4461, 4464, 4467, 4470, 4473, 4476, 4479, 4482, + 4485, 4488, 4491, 4494, 4497, 4500, 4503, 4506, 4509, 4512, 4515, 4518, + 4521, 4524, 4527, 4530, 4533, 4536, 4539, 4542, 4545, 4548, 4551, 4554, + 4557, 4560, 4563, 4566, 4569, 4572, 4575, 4578, 4581, 4584, 4587, 4590, + 4593, 4596, 4599, 4602, 4605, 4608, 4611, 4614, 4617, 4620, 4623, 4626, + 4629, 4632, 4635, 4638, 4641, 4644, 4647, 4650, 4653, 4656, 4659, 4662, + 4665, 4668, 4671, 4674, 4677, 4680, 4683, 4686, 4689, 4692, 4695, 4698, + 4701, 4704, 4707, 4710, 4713, 4716, 4719, 4722, 4725, 4728, 4731, 4734, + 4737, 4740, 4743, 4746, 4749, 4752, 4755, 4758, 4761, 4764, 4767, 4770, + 4773, 4776, 4779, 4782, 4785, 4788, 4791, 4794, 4797, 4800, 4803 }; static const wchar_t translit_to_tbl[] = L" \0" L"\0" L"(C)\0" L"\0" L"<<\0" L"\0" L"-\0" L"\0" L"(R)\0" L"\0" L"u\0" @@ -594,153 +594,118 @@ L"\0" L"..\0" L"\0" L"...\0" L"\0" L" \0" L"\0" L"`\0" L"\0" L"``\0" L"\0" L"```\0" L"\0" L"<\0" L"\0" L">\0" L"\0" L"!!\0" L"\0" L"/\0" L"\0" L"??\0" L"\0" L"?!\0" L"\0" L"!?\0" L"\0" L" \0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" - L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"a/c\0" L"\0" L"a/s\0" L"\0" - L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" L"H\0" L"\0" L"H\0" - L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" L"\0" L"L\0" L"\0" - L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" - L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" - L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"e\0" L"\0" L"e\0" - L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" L"\0" L"i\0" L"\0" - L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L" 1/3 \0" - L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" L"\0" L" 3/5 \0" L"\0" - L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" L" 1/8 \0" L"\0" - L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" L"\0" L"I\0" - L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0" - L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0" - L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0" - L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0" - L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0" - L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0" - L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" L"<=>\0" - L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\\0" L"\0" L"*\0" L"\0" L"|\0" L"\0" - L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" L">>\0" - L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" L"STX\0" - L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" L"BEL\0" - L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" L"FF\0" L"\0" - L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" L"DC1\0" L"\0" - L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" L"SYN\0" L"\0" - L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" L"ESC\0" L"\0" - L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" L"SP\0" L"\0" - L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" - L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" - L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" - L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" - L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" L"(1)\0" - L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" - L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" - L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" - L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" - L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" L"5.\0" L"\0" - L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" L"10.\0" L"\0" - L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" L"15.\0" L"\0" - L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" L"20.\0" L"\0" + L"\0" L"\0" L"\0" L"CRC\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"INR\0" L"\0" + L"a/c\0" L"\0" L"a/s\0" L"\0" L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" + L"g\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" + L"\0" L"I\0" L"\0" L"L\0" L"\0" L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" + L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" + L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" + L"C\0" L"\0" L"e\0" L"\0" L"e\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" + L"\0" L"o\0" L"\0" L"i\0" L"\0" L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" + L"i\0" L"\0" L"j\0" L"\0" L" 1/3 \0" L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" + L" 2/5 \0" L"\0" L" 3/5 \0" L"\0" L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" + L" 5/6 \0" L"\0" L" 1/8 \0" L"\0" L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" + L" 7/8 \0" L"\0" L" 1/\0" L"\0" L"I\0" L"\0" L"II\0" L"\0" L"III\0" L"\0" + L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0" L"VII\0" L"\0" L"VIII\0" L"\0" + L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0" L"XII\0" L"\0" L"L\0" L"\0" L"C\0" + L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0" L"\0" L"ii\0" L"\0" L"iii\0" L"\0" + L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0" L"vii\0" L"\0" L"viii\0" L"\0" + L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0" L"xii\0" L"\0" L"l\0" L"\0" L"c\0" + L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0" L"\0" L"->\0" L"\0" L"<->\0" L"\0" + L"<=\0" L"\0" L"=>\0" L"\0" L"<=>\0" L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\\0" + L"\0" L"*\0" L"\0" L"|\0" L"\0" L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" + L">=\0" L"\0" L"<<\0" L"\0" L">>\0" L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" + L"NUL\0" L"\0" L"SOH\0" L"\0" L"STX\0" L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" + L"ENQ\0" L"\0" L"ACK\0" L"\0" L"BEL\0" L"\0" L"BS\0" L"\0" L"HT\0" L"\0" + L"LF\0" L"\0" L"VT\0" L"\0" L"FF\0" L"\0" L"CR\0" L"\0" L"SO\0" L"\0" + L"SI\0" L"\0" L"DLE\0" L"\0" L"DC1\0" L"\0" L"DC2\0" L"\0" L"DC3\0" L"\0" + L"DC4\0" L"\0" L"NAK\0" L"\0" L"SYN\0" L"\0" L"ETB\0" L"\0" L"CAN\0" L"\0" + L"EM\0" L"\0" L"SUB\0" L"\0" L"ESC\0" L"\0" L"FS\0" L"\0" L"GS\0" L"\0" + L"RS\0" L"\0" L"US\0" L"\0" L"SP\0" L"\0" L"DEL\0" L"\0" L"_\0" L"\0" + L"NL\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" + L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" + L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" + L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" + L"(19)\0" L"\0" L"(20)\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" + L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" + L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" + L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" + L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" L"1.\0" L"\0" L"2.\0" L"\0" + L"3.\0" L"\0" L"4.\0" L"\0" L"5.\0" L"\0" L"6.\0" L"\0" L"7.\0" L"\0" + L"8.\0" L"\0" L"9.\0" L"\0" L"10.\0" L"\0" L"11.\0" L"\0" L"12.\0" L"\0" + L"13.\0" L"\0" L"14.\0" L"\0" L"15.\0" L"\0" L"16.\0" L"\0" L"17.\0" L"\0" + L"18.\0" L"\0" L"19.\0" L"\0" L"20.\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" + L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" + L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" + L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" + L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" + L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(A)\0" L"\0" + L"(B)\0" L"\0" L"(C)\0" L"\0" L"(D)\0" L"\0" L"(E)\0" L"\0" L"(F)\0" L"\0" + L"(G)\0" L"\0" L"(H)\0" L"\0" L"(I)\0" L"\0" L"(J)\0" L"\0" L"(K)\0" L"\0" + L"(L)\0" L"\0" L"(M)\0" L"\0" L"(N)\0" L"\0" L"(O)\0" L"\0" L"(P)\0" L"\0" + L"(Q)\0" L"\0" L"(R)\0" L"\0" L"(S)\0" L"\0" L"(T)\0" L"\0" L"(U)\0" L"\0" + L"(V)\0" L"\0" L"(W)\0" L"\0" L"(X)\0" L"\0" L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" - L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" L"(D)\0" L"\0" - L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" L"(I)\0" L"\0" - L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" L"(N)\0" L"\0" - L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" L"(S)\0" L"\0" - L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" L"(X)\0" L"\0" - L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" - L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" - L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" - L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" - L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" - L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" L"-\0" L"\0" - L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" - L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"o\0" L"\0" - L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" L"\0" - L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" L"(25)\0" - L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" L"\0" - L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" L"(34)\0" - L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" L"\0" - L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" L"(43)\0" - L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" L"\0" - L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" L"\0" - L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" - L"nA\0" L"\0" L"uA\0" L"\0" L"mA\0" L"\0" L"kA\0" L"\0" L"KB\0" L"\0" - L"MB\0" L"\0" L"GB\0" L"\0" L"cal\0" L"\0" L"kcal\0" L"\0" L"pF\0" L"\0" - L"nF\0" L"\0" L"uF\0" L"\0" L"ug\0" L"\0" L"mg\0" L"\0" L"kg\0" L"\0" - L"Hz\0" L"\0" L"kHz\0" L"\0" L"MHz\0" L"\0" L"GHz\0" L"\0" L"THz\0" L"\0" - L"ul\0" L"\0" L"ml\0" L"\0" L"dl\0" L"\0" L"kl\0" L"\0" L"fm\0" L"\0" - L"nm\0" L"\0" L"um\0" L"\0" L"mm\0" L"\0" L"cm\0" L"\0" L"km\0" L"\0" - L"mm^2\0" L"\0" L"cm^2\0" L"\0" L"m^2\0" L"\0" L"km^2\0" L"\0" L"mm^3\0" - L"\0" L"cm^3\0" L"\0" L"m^3\0" L"\0" L"km^3\0" L"\0" L"m/s\0" L"\0" - L"m/s^2\0" L"\0" L"Pa\0" L"\0" L"kPa\0" L"\0" L"MPa\0" L"\0" L"GPa\0" L"\0" - L"rad\0" L"\0" L"rad/s\0" L"\0" L"rad/s^2\0" L"\0" L"ps\0" L"\0" L"ns\0" - L"\0" L"us\0" L"\0" L"ms\0" L"\0" L"pV\0" L"\0" L"nV\0" L"\0" L"uV\0" L"\0" - L"mV\0" L"\0" L"kV\0" L"\0" L"MV\0" L"\0" L"pW\0" L"\0" L"nW\0" L"\0" - L"uW\0" L"\0" L"mW\0" L"\0" L"kW\0" L"\0" L"MW\0" L"\0" L"a.m.\0" L"\0" - L"Bq\0" L"\0" L"cc\0" L"\0" L"cd\0" L"\0" L"C/kg\0" L"\0" L"Co.\0" L"\0" - L"dB\0" L"\0" L"Gy\0" L"\0" L"ha\0" L"\0" L"HP\0" L"\0" L"in\0" L"\0" - L"KK\0" L"\0" L"KM\0" L"\0" L"kt\0" L"\0" L"lm\0" L"\0" L"ln\0" L"\0" - L"log\0" L"\0" L"lx\0" L"\0" L"mb\0" L"\0" L"mil\0" L"\0" L"mol\0" L"\0" - L"PH\0" L"\0" L"p.m.\0" L"\0" L"PPM\0" L"\0" L"PR\0" L"\0" L"sr\0" L"\0" - L"Sv\0" L"\0" L"Wb\0" L"\0" L"ff\0" L"\0" L"fi\0" L"\0" L"fl\0" L"\0" - L"ffi\0" L"\0" L"ffl\0" L"\0" L"st\0" L"\0" L"+\0" L"\0" L"\0" L"\0" L"\0" + L"(z)\0" L"\0" L"(0)\0" L"\0" L"-\0" L"\0" L"|\0" L"\0" L"+\0" L"\0" L"+\0" + L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" + L"+\0" L"\0" L"+\0" L"\0" L"o\0" L"\0" L"::=\0" L"\0" L"==\0" L"\0" L"===\0" + L"\0" L" \0" L"\0" L"=\0" L"\0" L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" + L"\0" L"(24)\0" L"\0" L"(25)\0" L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" + L"(28)\0" L"\0" L"(29)\0" L"\0" L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" + L"\0" L"(33)\0" L"\0" L"(34)\0" L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" + L"(37)\0" L"\0" L"(38)\0" L"\0" L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" + L"\0" L"(42)\0" L"\0" L"(43)\0" L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" + L"(46)\0" L"\0" L"(47)\0" L"\0" L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" + L"\0" L"hPa\0" L"\0" L"da\0" L"\0" L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" + L"\0" L"pc\0" L"\0" L"pA\0" L"\0" L"nA\0" L"\0" L"uA\0" L"\0" L"mA\0" L"\0" + L"kA\0" L"\0" L"KB\0" L"\0" L"MB\0" L"\0" L"GB\0" L"\0" L"cal\0" L"\0" + L"kcal\0" L"\0" L"pF\0" L"\0" L"nF\0" L"\0" L"uF\0" L"\0" L"ug\0" L"\0" + L"mg\0" L"\0" L"kg\0" L"\0" L"Hz\0" L"\0" L"kHz\0" L"\0" L"MHz\0" L"\0" + L"GHz\0" L"\0" L"THz\0" L"\0" L"ul\0" L"\0" L"ml\0" L"\0" L"dl\0" L"\0" + L"kl\0" L"\0" L"fm\0" L"\0" L"nm\0" L"\0" L"um\0" L"\0" L"mm\0" L"\0" + L"cm\0" L"\0" L"km\0" L"\0" L"mm^2\0" L"\0" L"cm^2\0" L"\0" L"m^2\0" L"\0" + L"km^2\0" L"\0" L"mm^3\0" L"\0" L"cm^3\0" L"\0" L"m^3\0" L"\0" L"km^3\0" + L"\0" L"m/s\0" L"\0" L"m/s^2\0" L"\0" L"Pa\0" L"\0" L"kPa\0" L"\0" L"MPa\0" + L"\0" L"GPa\0" L"\0" L"rad\0" L"\0" L"rad/s\0" L"\0" L"rad/s^2\0" L"\0" + L"ps\0" L"\0" L"ns\0" L"\0" L"us\0" L"\0" L"ms\0" L"\0" L"pV\0" L"\0" + L"nV\0" L"\0" L"uV\0" L"\0" L"mV\0" L"\0" L"kV\0" L"\0" L"MV\0" L"\0" + L"pW\0" L"\0" L"nW\0" L"\0" L"uW\0" L"\0" L"mW\0" L"\0" L"kW\0" L"\0" + L"MW\0" L"\0" L"a.m.\0" L"\0" L"Bq\0" L"\0" L"cc\0" L"\0" L"cd\0" L"\0" + L"C/kg\0" L"\0" L"Co.\0" L"\0" L"dB\0" L"\0" L"Gy\0" L"\0" L"ha\0" L"\0" + L"HP\0" L"\0" L"in\0" L"\0" L"KK\0" L"\0" L"KM\0" L"\0" L"kt\0" L"\0" + L"lm\0" L"\0" L"ln\0" L"\0" L"log\0" L"\0" L"lx\0" L"\0" L"mb\0" L"\0" + L"mil\0" L"\0" L"mol\0" L"\0" L"PH\0" L"\0" L"p.m.\0" L"\0" L"PPM\0" L"\0" + L"PR\0" L"\0" L"sr\0" L"\0" L"Sv\0" L"\0" L"Wb\0" L"\0" L"ff\0" L"\0" + L"fi\0" L"\0" L"fl\0" L"\0" L"ffi\0" L"\0" L"ffl\0" L"\0" L"st\0" L"\0" + L"+\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" - L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" - L"\0" L"\0" L"\0" L"\0" L"\0" L"_\0" L"\0" L"_\0" L"\0" L"_\0" L"\0" L",\0" - L"\0" L".\0" L"\0" L";\0" L"\0" L":\0" L"\0" L"?\0" L"\0" L"!\0" L"\0" - L"(\0" L"\0" L")\0" L"\0" L"{\0" L"\0" L"}\0" L"\0" L"#\0" L"\0" L"&\0" - L"\0" L"*\0" L"\0" L"+\0" L"\0" L"-\0" L"\0" L"<\0" L"\0" L">\0" L"\0" - L"=\0" L"\0" L"\\\0" L"\0" L"$\0" L"\0" L"%\0" L"\0" L"@\0" L"\0" L"\0" - L"\0" L"!\0" L"\0" L"\"\0" L"\0" L"#\0" L"\0" L"$\0" L"\0" L"%\0" L"\0" - L"&\0" L"\0" L"'\0" L"\0" L"(\0" L"\0" L")\0" L"\0" L"*\0" L"\0" L"+\0" - L"\0" L",\0" L"\0" L"-\0" L"\0" L".\0" L"\0" L"/\0" L"\0" L"0\0" L"\0" - L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" - L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0" L"\0" L":\0" L"\0" L";\0" L"\0" - L"<\0" L"\0" L"=\0" L"\0" L">\0" L"\0" L"?\0" L"\0" L"@\0" L"\0" L"A\0" - L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" - L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" - L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" - L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" - L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"[\0" L"\0" L"\\\0" L"\0" - L"]\0" L"\0" L"^\0" L"\0" L"_\0" L"\0" L"`\0" L"\0" L"a\0" L"\0" L"b\0" - L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" - L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" - L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" - L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" - L"\0" L"y\0" L"\0" L"z\0" L"\0" L"{\0" L"\0" L"|\0" L"\0" L"}\0" L"\0" - L"~\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" - L"\0" L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" - L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" - L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" - L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" - L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" - L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" - L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" - L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" - L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" - L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"H\0" - L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" - L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"S\0" - L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" - L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" - L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" + L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" L"_\0" L"\0" + L"_\0" L"\0" L"_\0" L"\0" L",\0" L"\0" L".\0" L"\0" L";\0" L"\0" L":\0" + L"\0" L"?\0" L"\0" L"!\0" L"\0" L"(\0" L"\0" L")\0" L"\0" L"{\0" L"\0" + L"}\0" L"\0" L"#\0" L"\0" L"&\0" L"\0" L"*\0" L"\0" L"+\0" L"\0" L"-\0" + L"\0" L"<\0" L"\0" L">\0" L"\0" L"=\0" L"\0" L"\\\0" L"\0" L"$\0" L"\0" + L"%\0" L"\0" L"@\0" L"\0" L"\0" L"\0" L"!\0" L"\0" L"\"\0" L"\0" L"#\0" + L"\0" L"$\0" L"\0" L"%\0" L"\0" L"&\0" L"\0" L"'\0" L"\0" L"(\0" L"\0" + L")\0" L"\0" L"*\0" L"\0" L"+\0" L"\0" L",\0" L"\0" L"-\0" L"\0" L".\0" + L"\0" L"/\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" + L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0" + L"\0" L":\0" L"\0" L";\0" L"\0" L"<\0" L"\0" L"=\0" L"\0" L">\0" L"\0" + L"?\0" L"\0" L"@\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" + L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" + L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" + L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" + L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" + L"\0" L"[\0" L"\0" L"\\\0" L"\0" L"]\0" L"\0" L"^\0" L"\0" L"_\0" L"\0" + L"`\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" + L"\0" L"f\0" L"\0" L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" - L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" - L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" - L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" - L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" - L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" - L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" - L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" L"h\0" - L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" - L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" - L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" - L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"G\0" - L"\0" L"J\0" L"\0" L"K\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" - L"Q\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" - L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" - L"c\0" L"\0" L"d\0" L"\0" L"f\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" - L"\0" L"k\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" - L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" - L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" + L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"{\0" + L"\0" L"|\0" L"\0" L"}\0" L"\0" L"~\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"S\0" @@ -750,28 +715,54 @@ L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" - L"\0" L"A\0" L"\0" L"B\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" - L"G\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" - L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" - L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"a\0" - L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" - L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" - L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" - L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" - L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" - L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"I\0" L"\0" L"J\0" - L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"O\0" L"\0" L"S\0" L"\0" - L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" + L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" + L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" + L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" + L"Q\0" L"\0" L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" + L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" + L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" + L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" + L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" + L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" + L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" + L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" + L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" + L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" + L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" - L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" - L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" - L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" + L"C\0" L"\0" L"D\0" L"\0" L"G\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"N\0" + L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" + L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" + L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"f\0" L"\0" + L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"m\0" L"\0" L"n\0" + L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" + L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" + L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" + L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" + L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" + L"Q\0" L"\0" L"R\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" + L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" + L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" + L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" + L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" + L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" + L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" L"D\0" + L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" + L"L\0" L"\0" L"M\0" L"\0" L"N\0" L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" - L"X\0" L"\0" L"Y\0" L"\0" L"Z\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" + L"X\0" L"\0" L"Y\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" + L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" + L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" + L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" + L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" + L"\0" L"A\0" L"\0" L"B\0" L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" + L"G\0" L"\0" L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" + L"\0" L"O\0" L"\0" L"S\0" L"\0" L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" + L"W\0" L"\0" L"X\0" L"\0" L"Y\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" @@ -823,13 +814,22 @@ L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" L"\0" L"v\0" L"\0" L"w\0" L"\0" - L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" - L"\0" L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" - L"8\0" L"\0" L"9\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" L"3\0" - L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" L"8\0" L"\0" - L"9\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" L"4\0" - L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0" L"\0" + L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"A\0" L"\0" L"B\0" L"\0" L"C\0" + L"\0" L"D\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"G\0" L"\0" L"H\0" L"\0" + L"I\0" L"\0" L"J\0" L"\0" L"K\0" L"\0" L"L\0" L"\0" L"M\0" L"\0" L"N\0" + L"\0" L"O\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" L"\0" L"S\0" L"\0" + L"T\0" L"\0" L"U\0" L"\0" L"V\0" L"\0" L"W\0" L"\0" L"X\0" L"\0" L"Y\0" + L"\0" L"Z\0" L"\0" L"a\0" L"\0" L"b\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" + L"e\0" L"\0" L"f\0" L"\0" L"g\0" L"\0" L"h\0" L"\0" L"i\0" L"\0" L"j\0" + L"\0" L"k\0" L"\0" L"l\0" L"\0" L"m\0" L"\0" L"n\0" L"\0" L"o\0" L"\0" + L"p\0" L"\0" L"q\0" L"\0" L"r\0" L"\0" L"s\0" L"\0" L"t\0" L"\0" L"u\0" + L"\0" L"v\0" L"\0" L"w\0" L"\0" L"x\0" L"\0" L"y\0" L"\0" L"z\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" - L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0"; + L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" + L"2\0" L"\0" L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" + L"\0" L"8\0" L"\0" L"9\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" + L"3\0" L"\0" L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" L"8\0" + L"\0" L"9\0" L"\0" L"0\0" L"\0" L"1\0" L"\0" L"2\0" L"\0" L"3\0" L"\0" + L"4\0" L"\0" L"5\0" L"\0" L"6\0" L"\0" L"7\0" L"\0" L"8\0" L"\0" L"9\0"; --- eglibc-2.13.orig/debian/locales.bug-presubj +++ eglibc-2.13/debian/locales.bug-presubj @@ -0,0 +1,18 @@ +locales dependencies on glibc +============================= + + If at some point (in unstable) you get messages like: + + The following packages have unmet dependencies: + locales: Depends: glibc-2.6-1 which is a virtual package. + + then please check for example on [1] that the glibc of the _same_ version as + the `locales` package you are trying to upgrade is in state _installed_ for + your architecture, and for how long. + + If it's not, it is very likely that the corresponding libc has not been + built _and_ uploaded to the mirrors for your architecture yet, and that the + dependencies will be fixed soon. Please wait for the package to be installed + for more than 24 hours before reporting a bug about `locales` dependencies. + + [1] http://buildd.debian.org/~jeroen/status/package.php?p=glibc --- eglibc-2.13.orig/debian/libc6.symbols.common +++ eglibc-2.13/debian/libc6.symbols.common @@ -0,0 +1,55 @@ +libBrokenLocale.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 +#include "symbols.wildcards" +libcidn.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 + calloc@Base 2.3.6 + free@Base 2.3.6 + malloc@Base 2.3.6 + mmap64@Base 2.3.6 + mmap@Base 2.3.6 + mremap@Base 2.3.6 + munmap@Base 2.3.6 + realloc@Base 2.3.6 +#include "symbols.wildcards" +libnsl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nisplus.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpcprofile.so #PACKAGE# #MINVER# + __cyg_profile_func_enter@Base 2.3.6 + __cyg_profile_func_exit@Base 2.3.6 + __invoke_dynamic_linker__@Base 2.3.6 +#include "symbols.wildcards" +libresolv.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +librt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libutil.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libanl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpthread.so.0 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libthread_db.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6-s390x.symbols.s390 +++ eglibc-2.13/debian/libc6-s390x.symbols.s390 @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld64.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.sparc64 +++ eglibc-2.13/debian/libc6.symbols.sparc64 @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6-sparc64.symbols.sparc +++ eglibc-2.13/debian/libc6-sparc64.symbols.sparc @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.1.symbols.ia64 +++ eglibc-2.13/debian/libc6.1.symbols.ia64 @@ -0,0 +1,58 @@ +ld-linux-ia64.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support added/enabled in debian upload 2.3.5 + __tls_get_addr@GLIBC_2.3 2.3.5 +libc.so.6.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libBrokenLocale.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 +libcidn.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.6.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 + calloc@Base 2.3.6 + free@Base 2.3.6 + malloc@Base 2.3.6 + mmap64@Base 2.3.6 + mmap@Base 2.3.6 + mremap@Base 2.3.6 + munmap@Base 2.3.6 + realloc@Base 2.3.6 +libnsl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nisplus.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpcprofile.so #PACKAGE# #MINVER# + __cyg_profile_func_enter@Base 2.3.6 + __cyg_profile_func_exit@Base 2.3.6 + __invoke_dynamic_linker__@Base 2.3.6 +libresolv.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +librt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libutil.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libanl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpthread.so.0 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libthread_db.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/ubuntu-changes +++ eglibc-2.13/debian/ubuntu-changes @@ -0,0 +1,254 @@ +* Build GNU C Library Reference manual. + - Build-depend on texinfo (>= 4.0), texi2html. + - glibc-doc doesn't have a Suggests but has Provides/Conflicts/Replaces on + glibc-doc-reference. + - Update description of glibc-doc package. + - Add doc-base entry for the glibc-manual. + - Install DEB_SRCDIR/manual/*.info* via debian/debhelper.in/glibc-doc.info, + DEB_SRCDIR/manual/*.html via debian/debhelper.in/glibc-doc.install, and a + usr/share/doc/glibc-doc/html/libc.html via + debian/debhelper.in/glibc-doc.links. + - Disable patch all/local-remove-manual.diff since this workaround isn't + needed anymore. + - Drop MAKEINFO=: from configure args in build.mk. + - Call texi2html in manual/ when building libc in build.mk. + - Disable stripping of manual/ in get-orig-source target. + +* Build-dep against binutils >= 2.20-1 and g++-4.4 >= 4.4.4-1. + +* libc packages have a Depends on tzdata. + +* libc packages don't have a Recommends but have Provides/Conflicts on + libc6-i686 [i386]. +* Remove libc6-dev-i386's conflict with libc6-i386. + +* Bump libc packages' Breaks on nscd to << 2.12. + +* libc packages don't have Breaks on locales (<< 2.11) nor + locales-all (<< 2.11); this was added for Debian upgrades, but didn't + actually help, see Debian #585737. + +* libc packages have Conflicts/Replaces on belocs-locales-bin. + +* Revert /emul/ia32-linux -> /usr/lib32 transition. + * Drop debian/debhelper.in/libc-alt.preinst upgrade snippet. + * Drop Breaks of libc6-i386 and libc6-dev-i386. + +* libc6-i386 has a Breaks on ia32-libs (<= 1.5) and libc6-dev-i386 on + ia32-libs-dev (<< 1.18). + +* debian/control.in/opt, debian/sysdeps/i386.mk: Don't build an i686 optimized + flavor since Ubuntu defaults to i686. + +* Changes for new upstream release, 2.12. + - debian/debhelper.in/libc-alt.lintian-overrides, + libc-otherbuild.lintian-overrides, libc.lintian-overrides, libc.postinst, + libc.preinst: update for 2.12. + - Drop debian/patches/any/cvs-getaddrinfo.diff, any/cvs-glob.diff, + any/cvs-malloc_info-init.diff, any/cvs-redirect-throw.diff, + any/cvs-remove.diff, any/cvs-resolv-bindv6only.diff, + any/cvs-stat-issock.diff, any/cvs-umount-nofollow.diff, + any/local-ntp-update.diff, localedata/fr_BE-first_weekday.diff, + localedata/locale-es_CR.diff, localedata/locale-et_EE.diff, + localedata/submitted-pt_BR.diff, sparc/cvs-sparcv9-memchr.diff, + sparc/submitted-msgrcv.diff: applied upstream. + - debian/patches/any/local-disable-test-tgmath2.diff, + any/local-ldso-disable-hwcap.diff, any/submitted-futex_robust_pi.diff, + any/submitted-longdouble.diff, any/local-hwcap-updates.diff, + localedata/first_weekday.diff, localedata/locales-fr.diff, + localedata/sort-UTF8-first.diff: update to apply cleanly on 2.12. + - Update debian/patches/svn-updates.diff. + - debian/rules.d/tarball.mk: set EGLIBC_BRANCH = branches/eglibc-2_12 and + EGLIBC_REVISION = 11211 and patch get-orig-source target to use + EGLIBC_REVISION. + - debian/shlibver: bump to 2.12. + - debian/symbols.wildcards: update to generate >> 2.12 and << 2.13 deps and + to list @GLIBC_2.12. + +* debian/debhelper.in/libc-bin.install: install update-locale and validlocale + to /usr/sbin. + +* ldconfig trigger support: + - debian/debhelper.in/libc-bin.postinst: when triggered, just set + LDCONFIG_NOTRIGGER=y and call ldconfig. + - debian/debhelper.in/libc-bin.triggers: register interest in ldconfig. + - debian/local/ldconfig_wrap: wrapper around ldconfig, calling the .real. + - debian/rules.d/debhelper.mk: Rename ldconfig to ldconfig.real and install + the wrapper instead; install triggers file. + +* debian/debhelper.in/libc.postinst: Purge locales on upgrades from versions + older than 2.12. + +* debian/debhelper.in/libc.postinst, libc.preinst: prompt restart services + questions at medium priority if RELEASE_UPGRADE_MODE is desktop, but keep + critical priority otherwise. + +* debian/debhelper.in/libc.postinst: when using upstart, call "restart + $service" instead of "invoke-rc.d ${service} restart" to restart services. + +* debian/debhelper.in/libc.postinst: handle reloading gdm with init script when + upgrading from non-upstartified gdm. + +* debian/debhelper.in/libc.preinst: don't break upgrades when the sanity checks + looking for libcs in other directories, in LD_LIBRARY_PATH, or in + /etc/ld.so.conf; LP #81125. + +* debian/debhelper.in/libc.preinst: only require linux to be at least 2.6.15, + and not 2.6.18 as 2.6.15 is still used on some architectures. + +* debian/debhelper.in/nscd.init: do not do a test run of nscd when starting. + +* debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff: from Fedora + 2.9-3, temporarily disables _nss_dns_gethostbyname4_r, which caused problems + for systems with broken IPv6 connectivity; LP #313218, RedHat #459756. + +* Revert flushing of cache after solving TEXTRELS in dl-reloc. + - Drop debian/patches/any/cvs-flush-cache-textrels.diff. + - Add debian/patches/any/cvs-revert-flush-cache-textrels.diff. + +* On powerpc, revert handling of AT_FDCWD in futimens() as powerpc buildds are + still running on 2.6.15 kernels. + - Drop debian/patches/any/cvs-futimens.diff. + - Add debian/patches/any/revert-cvs-futimens.diff. + - Add debian/patches/series.powerpc with the reversion patch. + - debian/sysdeps/linux.mk: set MIN_KERNEL_SUPPORTED to 2.6.15. + +* debian/patches/any/cvs-gai-rfc3484.diff: assign global scope to RFC 1918 + addresses and document difference from RFC 3484. + +* debian/patches/any/cvs-issue11968.diff: Fix _FORTIFY_SOURCE version of + longjmp on x86-64. + +* debian/patches/any/cvs-issue12092.diff: Fix strstr and memmem algorithm and + add a test cases for the strstr problem. + +* debian/patches/any/disable-ld_audit.diff: turn off LD_AUDIT for setuid + binaries. + +* debian/patches/any/dst-expansion-fix.diff: do not expand DST in setuid + binaries; CVE-2010-3847. + +* debian/patches/any/local-ipv6-lookup.diff: This patch is a rewrite of the one + in Debian and has some issues; it is disabled in Debian but re-enabled in + Ubuntu; LP #417757. + +* debian/patches/any/local-libgcc-compat-ports.diff: change Debian patch to + only patch ports/sysdeps/arm/ and not /alpha/, /m68k/ and /mips/. + +* debian/patches/any/local-no-pagesize.diff: drop + ports/sysdeps/unix/sysv/linux/alpha/sys/user.h changes from the Debian patch. + +* debian/patches/arm/local-syscall-mcount.diff: unset CALL_MCOUNT for + __libc_do_syscall; LP #605030. + +* debian/patches/localedata/tailor-iso14651_t1.diff, + localedata/tailor-iso14651_t1.diff.TODO: apparently a partial update for + eglibc 2.12. + +* debian/patches/series: disable alpha/*, hppa/*, hurd-i386/*, m68k/*, mips/*, + s390/*, sh4/* patches as they don't apply to Ubuntu and require updates when + moving to new upstream versions. + +* Disable patch i386/local-pthread_cond_wait.diff, probably because it disables + assembly routines for pthread_cond_wait and might have a performance impact. + +* Disable patches any/local-gai-rfc1918-scope-global.patch, + all/local-alias-UTF-8.diff and all/local-alias-et_EE.diff, + all/local-ru_RU.diff, any/local-linuxthreads-kill_other.diff; no mention or + explanation in changelog. + +* Disable patch all/local-pthread-manpages.diff probably needs an update with + newest man pages. + +* Disable patches any/local-libgcc-compat-main.diff and + any/local-libgcc-compat-ports.diff to workaround FTBFS. + +* Disabled patch any/submitted-nis-shadow.diff; needs an update for 2.12. + +* debian/patches/ubuntu/local-altlocaledir.diff: support alternative gettext + tree in /usr/share/locale-langpack. + +* debian/patches/ubuntu/no-sprintf-pre-truncate.diff: Keep unspecified + sprintf() working identically when building with -D_FORTIFY_SOURCE=2; + LP #305901. + +* debian/patches/ubuntu/local-fwrite-no-attr-unused.diff: disable + warn-unused-results notifications for fwrite() and fwrite_unlocked(); + Debian #563637. + +* debian/patches/ubuntu/ia64-include.diff: include in + sysdeps/ia64/elf/start.S. + +* debian/patches/ubuntu/machine-sparcv2.diff: patch config.sub to recognize + sparcv9v2 and sparc64v2 as valid machine names. + +* debian/patches/ubuntu/no-asm-mtune-i686.diff: patch + sysdeps/i386/i686/Makefile to not pass -Wa,-mtune=i686 to allow supporting + Geode LX; LP #587186. + +* Add debian/patches/ubuntu/README to explain that these are Ubuntu specific + patches. + +* debian/rules: DEB_SRCDIR defaults to CURDIR; this is needed to build docs. + +* debian/rules: ass nocheck to DEB_BUILD_OPTIONS when building for hppa. + +* debian/rules: unsetenv CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS as to not use the + values from the environment but from the package. + +* debian/rules: build with gcc-4.4/g++-4.4 and disable stack-protector when + building eglibc itself by passing -fno-stack-protector -U_FORTIFY_SOURCE in + BUILD_CC and BUILD_CXX. Also set CC and CXX to BUILD_CC/CXX. + +* debian/rules, debian/rules.d/build.mk: Add support for multiple build stages. + - stage1 only builds libc-dev and configures with --disable-sanity-checks + --enable-hacker-mode. + - Skip docs and tests for multi-staged builds. + +* debian/rules: Call realclean in manual/ on clean:; cleanup various additional + leftover files. + +* debian/rules.d/build.mk: Pass Ubuntu as the vendor to configure. + +* debian/rules.d/build.mk: pass --with-headers=$(WITH_SYSROOT)/$(includedir) if + WITH_SYSROOT is passed to the build. + +* debian/rules.d/quilt.mk: disable patching if PATCHED_SOURCES is passed to the + build. + +* debian/sysdeps/amd64.mk: + - Default to nptl for amd64. + - Configure i386 flavor for i686. + - Set i386 CC/CXX to use BUILD_CC/CXX. + - Re-add --disable-profile to i386_extra_config_options. + - Re-add i386_MAKEFLAGS to set gconvdir. + - Drop i386_rtlddir (requires check). + +* debian/sysdeps/i386.mk: + - Generate a etc/ld.so.conf.d/xen.conf instead of a libc6-xen.conf. + - Build libc pass with -mno-tls-direct-seg-refs. + - Set xen_slibdir to /lib/tls/i686/nosegneg. + - Pass --enable-multi-arch to all flavors. + +* debian/sysdeps/powerpc.mk: + - Pass -fno-stack-protector -U_FORTIFY_SOURCE to ppc64_CC/CXX. + +* Add sparc64b, sparc64v, sparc64v2, sparcv9v, and sparcv9v2 passes in + debian/sysdeps/sparc.mk and in debian/control.in/opt. + +* debian/testsuite-checking/compare.sh: misc update to skip some lines of + output starting with whitespaces or for other conditions. + +* debian/testsuite-checking/expected-results-arm-linux-gnueabi-libc, + -i686-linux-gnu-i686, -ia64-linux-gnu-libc, -powerpc-linux-gnu-libc, + -powerpc64-linux-gnu-ppc64, -sparc-linux-gnu-libc, + -sparc64-linux-gnu-sparc64, -x86_64-linux-gnu-amd64: misc addition for test + regressions witnessed in Ubuntu. + +TODO: drop hppa support +TODO: drop sparc flavors +TODO: drop ia64 changes +TODO: understand + document more changes +TODO: try to take updated versions of debian/patches/any/local-libgcc-compat-ports.diff and debian/patches/any/local-no-pagesize.diff. +TODO: lower delta with Debian in debian/sysdeps/*.mk. + --- eglibc-2.13.orig/debian/libc6-dev-i386.preinst.i386 +++ eglibc-2.13/debian/libc6-dev-i386.preinst.i386 @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + (upgrade|install) + # We want /usr/include/{bits,fpu_control.h,gnu,sys} to become + # directories or files instead of symlinks. + for dir in bits fpu_control.h gnu sys ; do + if test -h /usr/include/$dir ; then + rm -rf /usr/include/$dir + fi + done + ;; + (*) + ;; +esac --- eglibc-2.13.orig/debian/libc6-dev-armel.preinst.i386 +++ eglibc-2.13/debian/libc6-dev-armel.preinst.i386 @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + (upgrade|install) + # We want /usr/include/{bits,fpu_control.h,gnu,sys} to become + # directories or files instead of symlinks. + for dir in bits fpu_control.h gnu sys ; do + if test -h /usr/include/$dir ; then + rm -rf /usr/include/$dir + fi + done + ;; + (*) + ;; +esac --- eglibc-2.13.orig/debian/shlibver +++ eglibc-2.13/debian/shlibver @@ -0,0 +1 @@ +shlib_dep_ver = 2.13 --- eglibc-2.13.orig/debian/libc6.symbols.armhf +++ eglibc-2.13/debian/libc6.symbols.armhf @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux.so.3 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.arm +++ eglibc-2.13/debian/libc6.symbols.arm @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld-linux.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled in Debian upload 2.4 + __tls_get_addr@GLIBC_2.3 2.4 +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.4), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6-mips64.symbols.mipsel +++ eglibc-2.13/debian/libc6-mips64.symbols.mipsel @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/generate-supported.mk +++ eglibc-2.13/debian/generate-supported.mk @@ -0,0 +1,11 @@ +#!/usr/bin/make + +include $(IN) + +all: + rm -f $(OUT) + touch $(OUT) + for locale in $(SUPPORTED-LOCALES); do \ + [ $$locale = true ] && continue; \ + echo $$locale | sed 's,/, ,' >> $(OUT); \ + done --- eglibc-2.13.orig/debian/libc6.symbols.m68k +++ eglibc-2.13/debian/libc6.symbols.m68k @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/locales-depver +++ eglibc-2.13/debian/locales-depver @@ -0,0 +1,25 @@ +# When glibc is uploaded into unstable, the locales package is immediately +# available because it is arch:all. But libc binary parckages are processed +# by autobuilders and become available later. +# +# If compiling locales depend on a given version of localedef (for instance +# when ISO codes are updated), the idea is to first bump LOCALES_COMPAT_VER and +# make an upload without changing locales. When this version is available on +# all architectures in unstable, locales can be modified and LOCALES_DEP_VER +# is bumped too. +# +# LOCALES_COMPAT_VER must always contain two values during the transition phase +# so that dependencies in unstable can always be satisfied, and +# LOCALES_DEP_VER point to the highest value of LOCALES_COMPAT_VER when +# packages are available for all architectures in unstable. + +LOCALES_DEP_VER = 2.13-1 +LOCALES_COMPAT_VER = 2.13-1 + +# Previous versions: +# 2.7-1: glibc 2.7 +# 2.8-1: glibc 2.8 +# 2.9-1: eglibc 2.9 +# 2.10-1: eglibc 2.10 +# 2.11-1: eglibc 2.11 +# 2.13-1: eglibc 2.13 --- eglibc-2.13.orig/debian/changelog.upstream +++ eglibc-2.13/debian/changelog.upstream @@ -0,0 +1,3 @@ +The upstream changelog being composed of multiple files with a total size +of more than 1.5MB, they are provided by the glibc-doc package in the +/usr/share/doc/glibc-doc/ directory. --- eglibc-2.13.orig/debian/TODO +++ eglibc-2.13/debian/TODO @@ -0,0 +1,33 @@ +Outstanding concerns +==================== + + - no entry + +TODO +==== + +* General: + + - Make sure that prep.sh and version aren't in the root of the source + package. + +* libc: + - Only add some libraries to the optimized packages instead of all of them? + - Add patch to display (or ignore) linux-gate.so.1 in ldd. + - Check dpkg-shlibdeps for linux-gate.so.1 handling. + - Don't do make install for libc6-i686 if we aren't going to use the + results - it's very slow. + +* libc-dev: + + - What do we do for headers on 32/64 systems? Do we generate + #if wrappers for /usr/include? This looks like a non-issue since + only asm needs it. + +* locales: + + - locales debconf template is a bit difficult for newbie users. + Using localedata/locales/*, it can be readable. For example, + "ja_JP" -> "Japanese", "Japan". + + --- eglibc-2.13.orig/debian/libc0.1.symbols.kfreebsd-i386 +++ eglibc-2.13/debian/libc0.1.symbols.kfreebsd-i386 @@ -0,0 +1,3 @@ +#include "libc0.1.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc0.3.symbols.hurd-i386 +++ eglibc-2.13/debian/libc0.3.symbols.hurd-i386 @@ -0,0 +1,971 @@ +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.0.3 #PACKAGE# #MINVER# +#include "symbols.wildcards" + *@HURD_CTHREADS_0.3 2.11 + *@GLIBC_2.13_DEBIAN_19 2.13-19~ +libBrokenLocale.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 +#include "symbols.wildcards" +libcidn.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 + calloc@Base 2.3.6 + free@Base 2.3.6 + malloc@Base 2.3.6 + mmap64@Base 2.3.6 + mmap@Base 2.3.6 + mremap@Base 2.3.6 + munmap@Base 2.3.6 + realloc@Base 2.3.6 +#include "symbols.wildcards" +libnsl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nisplus.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpcprofile.so #PACKAGE# #MINVER# + __cyg_profile_func_enter@Base 2.3.6 + __cyg_profile_func_exit@Base 2.3.6 + __invoke_dynamic_linker__@Base 2.3.6 +#include "symbols.wildcards" +libresolv.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +librt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libutil.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libanl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### The symbols for libmachuser and libhurduser are not versionned and are +### actually coming from the interface definition files in gnumach-dev and +### hurd-dev. Thus we must keep track of which symbols were included in +### a given Debian build, and changes here should be associated with +### bumping the build dependency on these packages to versions which +### provide the new symbols in their .defs files. +### +libhurduser.so.0.3 #PACKAGE# #MINVER# + _S_msg_server@Base 2.11 + _S_msg_server_routine@Base 2.11 + __auth_getids@Base 2.11 + __auth_makeauth@Base 2.11 + __auth_server_authenticate@Base 2.11 + __auth_user_authenticate@Base 2.11 + __crash_dump_task@Base 2.11 + __dir_link@Base 2.11 + __dir_lookup@Base 2.11 + __dir_mkdir@Base 2.11 + __dir_mkfile@Base 2.11 + __dir_notice_changes@Base 2.11 + __dir_readdir@Base 2.11 + __dir_rename@Base 2.11 + __dir_rmdir@Base 2.11 + __dir_unlink@Base 2.11 + __exec_exec@Base 2.11 + __exec_init@Base 2.11 + __exec_setexecdata@Base 2.11 + __exec_startup_get_info@Base 2.11 + __file_chauthor@Base 2.11 + __file_check_access@Base 2.11 + __file_chflags@Base 2.11 + __file_chmod@Base 2.11 + __file_chown@Base 2.11 + __file_exec@Base 2.11 + __file_get_fs_options@Base 2.11 + __file_get_storage_info@Base 2.11 + __file_get_translator@Base 2.11 + __file_get_translator_cntl@Base 2.11 + __file_getcontrol@Base 2.11 + __file_getfh@Base 2.11 + __file_getlinknode@Base 2.11 + __file_lock@Base 2.11 + __file_lock_stat@Base 2.11 + __file_notice_changes@Base 2.11 + __file_reparent@Base 2.11 + __file_set_size@Base 2.11 + __file_set_translator@Base 2.11 + __file_statfs@Base 2.11 + __file_sync@Base 2.11 + __file_syncfs@Base 2.11 + __file_utimes@Base 2.11 + __fsys_forward@Base 2.11 + __fsys_get_options@Base 2.11 + __fsys_getfile@Base 2.11 + __fsys_getpriv@Base 2.11 + __fsys_getroot@Base 2.11 + __fsys_goaway@Base 2.11 + __fsys_init@Base 2.11 + __fsys_set_options@Base 2.11 + __fsys_startup@Base 2.11 + __fsys_syncfs@Base 2.11 + __ifsock_getsockaddr@Base 2.11 + __interrupt_operation@Base 2.11 + __invoke_dynamic_linker__@Base 2.11 + __io_async@Base 2.11 + __io_clear_some_openmodes@Base 2.11 + __io_duplicate@Base 2.11 + __io_eofnotify@Base 2.11 + __io_get_conch@Base 2.11 + __io_get_icky_async_id@Base 2.11 + __io_get_openmodes@Base 2.11 + __io_get_owner@Base 2.11 + __io_identity@Base 2.11 + __io_map@Base 2.11 + __io_map_cntl@Base 2.11 + __io_mod_owner@Base 2.11 + __io_pathconf@Base 2.11 + __io_postnotify@Base 2.11 + __io_prenotify@Base 2.11 + __io_read@Base 2.11 + __io_readable@Base 2.11 + __io_readnotify@Base 2.11 + __io_readsleep@Base 2.11 + __io_reauthenticate@Base 2.11 + __io_release_conch@Base 2.11 + __io_restrict_auth@Base 2.11 + __io_revoke@Base 2.11 + __io_seek@Base 2.11 + __io_select@Base 2.11 + __io_server_version@Base 2.11 + __io_set_all_openmodes@Base 2.11 + __io_set_some_openmodes@Base 2.11 + __io_sigio@Base 2.11 + __io_stat@Base 2.11 + __io_write@Base 2.11 + __login_get_idle_time@Base 2.11 + __login_get_input_devices@Base 2.11 + __login_get_location@Base 2.11 + __login_get_login_collection@Base 2.11 + __login_message_user@Base 2.11 + __msg_add_auth@Base 2.11 + __msg_del_auth@Base 2.11 + __msg_describe_ports@Base 2.11 + __msg_get_dtable@Base 2.11 + __msg_get_env_variable@Base 2.11 + __msg_get_environment@Base 2.11 + __msg_get_fd@Base 2.11 + __msg_get_init_int@Base 2.11 + __msg_get_init_ints@Base 2.11 + __msg_get_init_port@Base 2.11 + __msg_get_init_ports@Base 2.11 + __msg_proc_newids@Base 2.11 + __msg_report_wait@Base 2.11 + __msg_set_dtable@Base 2.11 + __msg_set_env_variable@Base 2.11 + __msg_set_environment@Base 2.11 + __msg_set_fd@Base 2.11 + __msg_set_init_int@Base 2.11 + __msg_set_init_ints@Base 2.11 + __msg_set_init_port@Base 2.11 + __msg_set_init_ports@Base 2.11 + __msg_sig_post@Base 2.11 + __msg_sig_post_reply@Base 2.11 + __msg_sig_post_request@Base 2.11 + __msg_sig_post_untraced@Base 2.11 + __msg_sig_post_untraced_reply@Base 2.11 + __msg_sig_post_untraced_request@Base 2.11 + __password_check_group@Base 2.11 + __password_check_user@Base 2.11 + __pfinet_siocgifconf@Base 2.11 + __proc_child@Base 2.11 + __proc_child_request@Base 2.11 + __proc_dostop@Base 2.11 + __proc_dostop_request@Base 2.11 + __proc_execdata_notify@Base 2.11 + __proc_execdata_notify_request@Base 2.11 + __proc_get_arg_locations@Base 2.11 + __proc_get_arg_locations_request@Base 2.11 + __proc_get_tty@Base 2.11 + __proc_get_tty_request@Base 2.11 + __proc_getallpids@Base 2.11 + __proc_getallpids_request@Base 2.11 + __proc_getexecdata@Base 2.11 + __proc_getexecdata_request@Base 2.11 + __proc_getlogin@Base 2.11 + __proc_getlogin_request@Base 2.11 + __proc_getloginid@Base 2.11 + __proc_getloginid_request@Base 2.11 + __proc_getloginpids@Base 2.11 + __proc_getloginpids_request@Base 2.11 + __proc_getmsgport@Base 2.11 + __proc_getmsgport_request@Base 2.11 + __proc_getnports@Base 2.11 + __proc_getnports_request@Base 2.11 + __proc_getpgrp@Base 2.11 + __proc_getpgrp_request@Base 2.11 + __proc_getpgrppids@Base 2.11 + __proc_getpgrppids_request@Base 2.11 + __proc_getpids@Base 2.11 + __proc_getpids_request@Base 2.11 + __proc_getprivports@Base 2.11 + __proc_getprivports_request@Base 2.11 + __proc_getprocargs@Base 2.11 + __proc_getprocargs_request@Base 2.11 + __proc_getprocenv@Base 2.11 + __proc_getprocenv_request@Base 2.11 + __proc_getprocinfo@Base 2.11 + __proc_getprocinfo_request@Base 2.11 + __proc_getsessionpgids@Base 2.11 + __proc_getsessionpgids_request@Base 2.11 + __proc_getsessionpids@Base 2.11 + __proc_getsessionpids_request@Base 2.11 + __proc_getsid@Base 2.11 + __proc_getsid_request@Base 2.11 + __proc_getsidport@Base 2.11 + __proc_getsidport_request@Base 2.11 + __proc_handle_exceptions@Base 2.11 + __proc_handle_exceptions_request@Base 2.11 + __proc_make_login_coll@Base 2.11 + __proc_make_login_coll_request@Base 2.11 + __proc_mark_cont@Base 2.11 + __proc_mark_cont_request@Base 2.11 + __proc_mark_exec@Base 2.11 + __proc_mark_exec_request@Base 2.11 + __proc_mark_exit@Base 2.11 + __proc_mark_exit_request@Base 2.11 + __proc_mark_stop@Base 2.11 + __proc_mark_stop_request@Base 2.11 + __proc_mark_traced@Base 2.11 + __proc_mark_traced_request@Base 2.11 + __proc_mod_stopchild@Base 2.11 + __proc_mod_stopchild_request@Base 2.11 + __proc_pid2proc@Base 2.11 + __proc_pid2proc_request@Base 2.11 + __proc_pid2task@Base 2.11 + __proc_pid2task_request@Base 2.11 + __proc_proc2task@Base 2.11 + __proc_proc2task_request@Base 2.11 + __proc_reassign@Base 2.11 + __proc_reassign_request@Base 2.11 + __proc_reauthenticate@Base 2.11 + __proc_reauthenticate_request@Base 2.11 + __proc_register_version@Base 2.11 + __proc_register_version_request@Base 2.11 + __proc_set_arg_locations@Base 2.11 + __proc_set_arg_locations_request@Base 2.11 + __proc_setexecdata@Base 2.11 + __proc_setexecdata_request@Base 2.11 + __proc_setlogin@Base 2.11 + __proc_setlogin_request@Base 2.11 + __proc_setmsgport@Base 2.11 + __proc_setmsgport_request@Base 2.11 + __proc_setowner@Base 2.11 + __proc_setowner_request@Base 2.11 + __proc_setpgrp@Base 2.11 + __proc_setpgrp_request@Base 2.11 + __proc_setsid@Base 2.11 + __proc_setsid_request@Base 2.11 + __proc_task2pid@Base 2.11 + __proc_task2pid_request@Base 2.11 + __proc_task2proc@Base 2.11 + __proc_task2proc_request@Base 2.11 + __proc_uname@Base 2.11 + __proc_uname_request@Base 2.11 + __proc_wait@Base 2.11 + __proc_wait_request@Base 2.11 + __socket_accept@Base 2.11 + __socket_bind@Base 2.11 + __socket_connect2@Base 2.11 + __socket_connect@Base 2.11 + __socket_create@Base 2.11 + __socket_create_address@Base 2.11 + __socket_fabricate_address@Base 2.11 + __socket_getopt@Base 2.11 + __socket_listen@Base 2.11 + __socket_name@Base 2.11 + __socket_peername@Base 2.11 + __socket_recv@Base 2.11 + __socket_send@Base 2.11 + __socket_setopt@Base 2.11 + __socket_shutdown@Base 2.11 + __socket_whatis_address@Base 2.11 + __startup_authinit@Base 2.11 + __startup_essential_task@Base 2.11 + __startup_procinit@Base 2.11 + __startup_reboot@Base 2.11 + __startup_request_notification@Base 2.11 + __term_get_bottom_type@Base 2.11 + __term_get_nodename@Base 2.11 + __term_get_peername@Base 2.11 + __term_getctty@Base 2.11 + __term_on_hurddev@Base 2.11 + __term_on_machdev@Base 2.11 + __term_on_pty@Base 2.11 + __term_open_ctty@Base 2.11 + __term_set_filenode@Base 2.11 + __term_set_nodename@Base 2.11 + __termctty_open_terminal@Base 2.11 + __tioctl_tioccbrk@Base 2.11 + __tioctl_tioccdtr@Base 2.11 + __tioctl_tiocdrain@Base 2.11 + __tioctl_tiocexcl@Base 2.11 + __tioctl_tiocext@Base 2.11 + __tioctl_tiocflush@Base 2.11 + __tioctl_tiocgeta@Base 2.11 + __tioctl_tiocgetd@Base 2.11 + __tioctl_tiocgpgrp@Base 2.11 + __tioctl_tiocgwinsz@Base 2.11 + __tioctl_tiocmbic@Base 2.11 + __tioctl_tiocmbis@Base 2.11 + __tioctl_tiocmget@Base 2.11 + __tioctl_tiocmodg@Base 2.11 + __tioctl_tiocmods@Base 2.11 + __tioctl_tiocmset@Base 2.11 + __tioctl_tiocnxcl@Base 2.11 + __tioctl_tiocoutq@Base 2.11 + __tioctl_tiocpkt@Base 2.11 + __tioctl_tiocremote@Base 2.11 + __tioctl_tiocsbrk@Base 2.11 + __tioctl_tiocsdtr@Base 2.11 + __tioctl_tiocseta@Base 2.11 + __tioctl_tiocsetaf@Base 2.11 + __tioctl_tiocsetaw@Base 2.11 + __tioctl_tiocsetd@Base 2.11 + __tioctl_tiocsig@Base 2.11 + __tioctl_tiocspgrp@Base 2.11 + __tioctl_tiocstart@Base 2.11 + __tioctl_tiocsti@Base 2.11 + __tioctl_tiocstop@Base 2.11 + __tioctl_tiocswinsz@Base 2.11 + __tioctl_tiocucntl@Base 2.11 + _hurdsig_fault_exc_server@Base 2.11 + _hurdsig_fault_exc_server_routine@Base 2.11 + auth_getids@Base 2.11 + auth_makeauth@Base 2.11 + auth_server_authenticate@Base 2.11 + auth_user_authenticate@Base 2.11 + crash_dump_task@Base 2.11 + dir_link@Base 2.11 + dir_lookup@Base 2.11 + dir_mkdir@Base 2.11 + dir_mkfile@Base 2.11 + dir_notice_changes@Base 2.11 + dir_readdir@Base 2.11 + dir_rename@Base 2.11 + dir_rmdir@Base 2.11 + dir_unlink@Base 2.11 + exec_exec@Base 2.11 + exec_init@Base 2.11 + exec_setexecdata@Base 2.11 + exec_startup_get_info@Base 2.11 + file_chauthor@Base 2.11 + file_check_access@Base 2.11 + file_chflags@Base 2.11 + file_chmod@Base 2.11 + file_chown@Base 2.11 + file_exec@Base 2.11 + file_get_fs_options@Base 2.11 + file_get_storage_info@Base 2.11 + file_get_translator@Base 2.11 + file_get_translator_cntl@Base 2.11 + file_getcontrol@Base 2.11 + file_getfh@Base 2.11 + file_getlinknode@Base 2.11 + file_lock@Base 2.11 + file_lock_stat@Base 2.11 + file_notice_changes@Base 2.11 + file_reparent@Base 2.11 + file_set_size@Base 2.11 + file_set_translator@Base 2.11 + file_statfs@Base 2.11 + file_sync@Base 2.11 + file_syncfs@Base 2.11 + file_utimes@Base 2.11 + fsys_forward@Base 2.11 + fsys_get_options@Base 2.11 + fsys_getfile@Base 2.11 + fsys_getpriv@Base 2.11 + fsys_getroot@Base 2.11 + fsys_goaway@Base 2.11 + fsys_init@Base 2.11 + fsys_set_options@Base 2.11 + fsys_startup@Base 2.11 + fsys_syncfs@Base 2.11 + ifsock_getsockaddr@Base 2.11 + interrupt_operation@Base 2.11 + io_async@Base 2.11 + io_clear_some_openmodes@Base 2.11 + io_duplicate@Base 2.11 + io_eofnotify@Base 2.11 + io_get_conch@Base 2.11 + io_get_icky_async_id@Base 2.11 + io_get_openmodes@Base 2.11 + io_get_owner@Base 2.11 + io_identity@Base 2.11 + io_map@Base 2.11 + io_map_cntl@Base 2.11 + io_mod_owner@Base 2.11 + io_pathconf@Base 2.11 + io_postnotify@Base 2.11 + io_prenotify@Base 2.11 + io_read@Base 2.11 + io_readable@Base 2.11 + io_readnotify@Base 2.11 + io_readsleep@Base 2.11 + io_reauthenticate@Base 2.11 + io_release_conch@Base 2.11 + io_restrict_auth@Base 2.11 + io_revoke@Base 2.11 + io_seek@Base 2.11 + io_select@Base 2.11 + io_server_version@Base 2.11 + io_set_all_openmodes@Base 2.11 + io_set_some_openmodes@Base 2.11 + io_sigio@Base 2.11 + io_stat@Base 2.11 + io_write@Base 2.11 + login_get_idle_time@Base 2.11 + login_get_input_devices@Base 2.11 + login_get_location@Base 2.11 + login_get_login_collection@Base 2.11 + login_message_user@Base 2.11 + msg_add_auth@Base 2.11 + msg_del_auth@Base 2.11 + msg_describe_ports@Base 2.11 + msg_get_dtable@Base 2.11 + msg_get_env_variable@Base 2.11 + msg_get_environment@Base 2.11 + msg_get_fd@Base 2.11 + msg_get_init_int@Base 2.11 + msg_get_init_ints@Base 2.11 + msg_get_init_port@Base 2.11 + msg_get_init_ports@Base 2.11 + msg_proc_newids@Base 2.11 + msg_report_wait@Base 2.11 + msg_set_dtable@Base 2.11 + msg_set_env_variable@Base 2.11 + msg_set_environment@Base 2.11 + msg_set_fd@Base 2.11 + msg_set_init_int@Base 2.11 + msg_set_init_ints@Base 2.11 + msg_set_init_port@Base 2.11 + msg_set_init_ports@Base 2.11 + msg_sig_post@Base 2.11 + msg_sig_post_reply@Base 2.11 + msg_sig_post_request@Base 2.11 + msg_sig_post_untraced@Base 2.11 + msg_sig_post_untraced_reply@Base 2.11 + msg_sig_post_untraced_request@Base 2.11 + password_check_group@Base 2.11 + password_check_user@Base 2.11 + pfinet_siocgifconf@Base 2.11 + proc_child@Base 2.11 + proc_child_request@Base 2.11 + proc_dostop@Base 2.11 + proc_dostop_request@Base 2.11 + proc_execdata_notify@Base 2.11 + proc_execdata_notify_request@Base 2.11 + proc_get_arg_locations@Base 2.11 + proc_get_arg_locations_request@Base 2.11 + proc_get_tty@Base 2.11 + proc_get_tty_request@Base 2.11 + proc_getallpids@Base 2.11 + proc_getallpids_request@Base 2.11 + proc_getexecdata@Base 2.11 + proc_getexecdata_request@Base 2.11 + proc_getlogin@Base 2.11 + proc_getlogin_request@Base 2.11 + proc_getloginid@Base 2.11 + proc_getloginid_request@Base 2.11 + proc_getloginpids@Base 2.11 + proc_getloginpids_request@Base 2.11 + proc_getmsgport@Base 2.11 + proc_getmsgport_request@Base 2.11 + proc_getnports@Base 2.11 + proc_getnports_request@Base 2.11 + proc_getpgrp@Base 2.11 + proc_getpgrp_request@Base 2.11 + proc_getpgrppids@Base 2.11 + proc_getpgrppids_request@Base 2.11 + proc_getpids@Base 2.11 + proc_getpids_request@Base 2.11 + proc_getprivports@Base 2.11 + proc_getprivports_request@Base 2.11 + proc_getprocargs@Base 2.11 + proc_getprocargs_request@Base 2.11 + proc_getprocenv@Base 2.11 + proc_getprocenv_request@Base 2.11 + proc_getprocinfo@Base 2.11 + proc_getprocinfo_request@Base 2.11 + proc_getsessionpgids@Base 2.11 + proc_getsessionpgids_request@Base 2.11 + proc_getsessionpids@Base 2.11 + proc_getsessionpids_request@Base 2.11 + proc_getsid@Base 2.11 + proc_getsid_request@Base 2.11 + proc_getsidport@Base 2.11 + proc_getsidport_request@Base 2.11 + proc_handle_exceptions@Base 2.11 + proc_handle_exceptions_request@Base 2.11 + proc_make_login_coll@Base 2.11 + proc_make_login_coll_request@Base 2.11 + proc_mark_cont@Base 2.11 + proc_mark_cont_request@Base 2.11 + proc_mark_exec@Base 2.11 + proc_mark_exec_request@Base 2.11 + proc_mark_exit@Base 2.11 + proc_mark_exit_request@Base 2.11 + proc_mark_stop@Base 2.11 + proc_mark_stop_request@Base 2.11 + proc_mark_traced@Base 2.11 + proc_mark_traced_request@Base 2.11 + proc_mod_stopchild@Base 2.11 + proc_mod_stopchild_request@Base 2.11 + proc_pid2proc@Base 2.11 + proc_pid2proc_request@Base 2.11 + proc_pid2task@Base 2.11 + proc_pid2task_request@Base 2.11 + proc_proc2task@Base 2.11 + proc_proc2task_request@Base 2.11 + proc_reassign@Base 2.11 + proc_reassign_request@Base 2.11 + proc_reauthenticate@Base 2.11 + proc_reauthenticate_request@Base 2.11 + proc_register_version@Base 2.11 + proc_register_version_request@Base 2.11 + proc_set_arg_locations@Base 2.11 + proc_set_arg_locations_request@Base 2.11 + proc_setexecdata@Base 2.11 + proc_setexecdata_request@Base 2.11 + proc_setlogin@Base 2.11 + proc_setlogin_request@Base 2.11 + proc_setmsgport@Base 2.11 + proc_setmsgport_request@Base 2.11 + proc_setowner@Base 2.11 + proc_setowner_request@Base 2.11 + proc_setpgrp@Base 2.11 + proc_setpgrp_request@Base 2.11 + proc_setsid@Base 2.11 + proc_setsid_request@Base 2.11 + proc_task2pid@Base 2.11 + proc_task2pid_request@Base 2.11 + proc_task2proc@Base 2.11 + proc_task2proc_request@Base 2.11 + proc_uname@Base 2.11 + proc_uname_request@Base 2.11 + proc_wait@Base 2.11 + proc_wait_request@Base 2.11 + socket_accept@Base 2.11 + socket_bind@Base 2.11 + socket_connect2@Base 2.11 + socket_connect@Base 2.11 + socket_create@Base 2.11 + socket_create_address@Base 2.11 + socket_fabricate_address@Base 2.11 + socket_getopt@Base 2.11 + socket_listen@Base 2.11 + socket_name@Base 2.11 + socket_peername@Base 2.11 + socket_recv@Base 2.11 + socket_send@Base 2.11 + socket_setopt@Base 2.11 + socket_shutdown@Base 2.11 + socket_whatis_address@Base 2.11 + startup_authinit@Base 2.11 + startup_essential_task@Base 2.11 + startup_procinit@Base 2.11 + startup_reboot@Base 2.11 + startup_request_notification@Base 2.11 + term_get_bottom_type@Base 2.11 + term_get_nodename@Base 2.11 + term_get_peername@Base 2.11 + term_getctty@Base 2.11 + term_on_hurddev@Base 2.11 + term_on_machdev@Base 2.11 + term_on_pty@Base 2.11 + term_open_ctty@Base 2.11 + term_set_filenode@Base 2.11 + term_set_nodename@Base 2.11 + termctty_open_terminal@Base 2.11 + tioctl_tioccbrk@Base 2.11 + tioctl_tioccdtr@Base 2.11 + tioctl_tiocdrain@Base 2.11 + tioctl_tiocexcl@Base 2.11 + tioctl_tiocext@Base 2.11 + tioctl_tiocflush@Base 2.11 + tioctl_tiocgeta@Base 2.11 + tioctl_tiocgetd@Base 2.11 + tioctl_tiocgpgrp@Base 2.11 + tioctl_tiocgwinsz@Base 2.11 + tioctl_tiocmbic@Base 2.11 + tioctl_tiocmbis@Base 2.11 + tioctl_tiocmget@Base 2.11 + tioctl_tiocmodg@Base 2.11 + tioctl_tiocmods@Base 2.11 + tioctl_tiocmset@Base 2.11 + tioctl_tiocnxcl@Base 2.11 + tioctl_tiocoutq@Base 2.11 + tioctl_tiocpkt@Base 2.11 + tioctl_tiocremote@Base 2.11 + tioctl_tiocsbrk@Base 2.11 + tioctl_tiocsdtr@Base 2.11 + tioctl_tiocseta@Base 2.11 + tioctl_tiocsetaf@Base 2.11 + tioctl_tiocsetaw@Base 2.11 + tioctl_tiocsetd@Base 2.11 + tioctl_tiocsig@Base 2.11 + tioctl_tiocspgrp@Base 2.11 + tioctl_tiocstart@Base 2.11 + tioctl_tiocsti@Base 2.11 + tioctl_tiocstop@Base 2.11 + tioctl_tiocswinsz@Base 2.11 + tioctl_tiocucntl@Base 2.11 +libmachuser.so.1 #PACKAGE# #MINVER# + _S_exc_server@Base 2.11 + _S_exc_server_routine@Base 2.11 + __default_pager_info@Base 2.11 + __default_pager_object_create@Base 2.11 + __default_pager_object_pages@Base 2.11 + __default_pager_objects@Base 2.11 + __default_pager_paging_file@Base 2.11 + __default_pager_register_fileserver@Base 2.11 + __device_close@Base 2.11 + __device_get_status@Base 2.11 + __device_map@Base 2.11 + __device_open@Base 2.11 + __device_open_request@Base 2.11 + __device_read@Base 2.11 + __device_read_inband@Base 2.11 + __device_read_request@Base 2.11 + __device_read_request_inband@Base 2.11 + __device_set_filter@Base 2.11 + __device_set_status@Base 2.11 + __device_write@Base 2.11 + __device_write_inband@Base 2.11 + __device_write_request@Base 2.11 + __device_write_request_inband@Base 2.11 + __exception_raise@Base 2.11 + __host_adjust_time@Base 2.11 + __host_get_boot_info@Base 2.11 + __host_get_time@Base 2.11 + __host_info@Base 2.11 + __host_kernel_version@Base 2.11 + __host_processor_set_priv@Base 2.11 + __host_processor_sets@Base 2.11 + __host_processors@Base 2.11 + __host_reboot@Base 2.11 + __host_set_time@Base 2.11 + __i386_get_gdt@Base 2.11 + __i386_get_ldt@Base 2.11 + __i386_io_perm_create@Base 2.11 + __i386_io_perm_modify@Base 2.11 + __i386_set_gdt@Base 2.11 + __i386_set_ldt@Base 2.11 + __invoke_dynamic_linker__@Base 2.11 + __mach_port_allocate_name_rpc@Base 2.11 + __mach_port_allocate_rpc@Base 2.11 + __mach_port_deallocate_rpc@Base 2.11 + __mach_port_destroy@Base 2.11 + __mach_port_extract_right@Base 2.11 + __mach_port_get_receive_status@Base 2.11 + __mach_port_get_refs@Base 2.11 + __mach_port_get_set_status@Base 2.11 + __mach_port_insert_right_rpc@Base 2.11 + __mach_port_mod_refs@Base 2.11 + __mach_port_move_member@Base 2.11 + __mach_port_names@Base 2.11 + __mach_port_rename@Base 2.11 + __mach_port_request_notification@Base 2.11 + __mach_port_set_mscount@Base 2.11 + __mach_port_set_qlimit@Base 2.11 + __mach_port_set_seqno@Base 2.11 + __mach_port_type@Base 2.11 + __mach_ports_lookup@Base 2.11 + __mach_ports_register@Base 2.11 + __memory_object_change_attributes@Base 2.11 + __memory_object_change_completed@Base 2.11 + __memory_object_copy@Base 2.11 + __memory_object_create@Base 2.11 + __memory_object_create_proxy@Base 2.11 + __memory_object_data_error@Base 2.11 + __memory_object_data_initialize@Base 2.11 + __memory_object_data_provided@Base 2.11 + __memory_object_data_request@Base 2.11 + __memory_object_data_return@Base 2.11 + __memory_object_data_supply@Base 2.11 + __memory_object_data_unavailable@Base 2.11 + __memory_object_data_unlock@Base 2.11 + __memory_object_data_write@Base 2.11 + __memory_object_destroy@Base 2.11 + __memory_object_get_attributes@Base 2.11 + __memory_object_init@Base 2.11 + __memory_object_lock_completed@Base 2.11 + __memory_object_lock_request@Base 2.11 + __memory_object_ready@Base 2.11 + __memory_object_set_attributes@Base 2.11 + __memory_object_supply_completed@Base 2.11 + __memory_object_terminate@Base 2.11 + __old_mach_port_get_receive_status@Base 2.11 + __processor_assign@Base 2.11 + __processor_control@Base 2.11 + __processor_exit@Base 2.11 + __processor_get_assignment@Base 2.11 + __processor_info@Base 2.11 + __processor_set_create@Base 2.11 + __processor_set_default@Base 2.11 + __processor_set_destroy@Base 2.11 + __processor_set_info@Base 2.11 + __processor_set_max_priority@Base 2.11 + __processor_set_policy_disable@Base 2.11 + __processor_set_policy_enable@Base 2.11 + __processor_set_tasks@Base 2.11 + __processor_set_threads@Base 2.11 + __processor_start@Base 2.11 + __task_assign@Base 2.11 + __task_assign_default@Base 2.11 + __task_create_rpc@Base 2.11 + __task_disable_pc_sampling@Base 2.11 + __task_enable_pc_sampling@Base 2.11 + __task_get_assignment@Base 2.11 + __task_get_emulation_vector@Base 2.11 + __task_get_sampled_pcs@Base 2.11 + __task_get_special_port@Base 2.11 + __task_info@Base 2.11 + __task_priority@Base 2.11 + __task_ras_control@Base 2.11 + __task_resume@Base 2.11 + __task_set_emulation@Base 2.11 + __task_set_emulation_vector@Base 2.11 + __task_set_special_port_rpc@Base 2.11 + __task_suspend_rpc@Base 2.11 + __task_terminate_rpc@Base 2.11 + __task_threads@Base 2.11 + __thread_abort@Base 2.11 + __thread_assign@Base 2.11 + __thread_assign_default@Base 2.11 + __thread_create@Base 2.11 + __thread_depress_abort_rpc@Base 2.11 + __thread_disable_pc_sampling@Base 2.11 + __thread_enable_pc_sampling@Base 2.11 + __thread_get_assignment@Base 2.11 + __thread_get_sampled_pcs@Base 2.11 + __thread_get_special_port@Base 2.11 + __thread_get_state@Base 2.11 + __thread_info@Base 2.11 + __thread_max_priority@Base 2.11 + __thread_policy@Base 2.11 + __thread_priority@Base 2.11 + __thread_resume@Base 2.11 + __thread_set_special_port@Base 2.11 + __thread_set_state@Base 2.11 + __thread_suspend@Base 2.11 + __thread_terminate@Base 2.11 + __thread_wire@Base 2.11 + __vm_allocate_rpc@Base 2.11 + __vm_copy@Base 2.11 + __vm_deallocate_rpc@Base 2.11 + __vm_inherit@Base 2.11 + __vm_machine_attribute@Base 2.11 + __vm_map_rpc@Base 2.11 + __vm_protect@Base 2.11 + __vm_read@Base 2.11 + __vm_region@Base 2.11 + __vm_set_default_memory_manager@Base 2.11 + __vm_statistics@Base 2.11 + __vm_wire@Base 2.11 + __vm_write@Base 2.11 + __xxx_cpu_control@Base 2.11 + __xxx_device_get_status@Base 2.11 + __xxx_device_set_filter@Base 2.11 + __xxx_device_set_status@Base 2.11 + __xxx_host_info@Base 2.11 + __xxx_memory_object_lock_request@Base 2.11 + __xxx_processor_set_default_priv@Base 2.11 + __xxx_slot_info@Base 2.11 + __xxx_task_get_emulation_vector@Base 2.11 + __xxx_task_info@Base 2.11 + __xxx_task_set_emulation_vector@Base 2.11 + __xxx_thread_get_state@Base 2.11 + __xxx_thread_info@Base 2.11 + __xxx_thread_set_state@Base 2.11 + __yyy_host_info@Base 2.11 + __yyy_processor_control@Base 2.11 + __yyy_processor_info@Base 2.11 + __yyy_processor_set_info@Base 2.11 + default_pager_info@Base 2.11 + default_pager_object_create@Base 2.11 + default_pager_object_pages@Base 2.11 + default_pager_objects@Base 2.11 + default_pager_paging_file@Base 2.11 + default_pager_register_fileserver@Base 2.11 + device_close@Base 2.11 + device_get_status@Base 2.11 + device_map@Base 2.11 + device_open@Base 2.11 + device_open_request@Base 2.11 + device_read@Base 2.11 + device_read_inband@Base 2.11 + device_read_request@Base 2.11 + device_read_request_inband@Base 2.11 + device_set_filter@Base 2.11 + device_set_status@Base 2.11 + device_write@Base 2.11 + device_write_inband@Base 2.11 + device_write_request@Base 2.11 + device_write_request_inband@Base 2.11 + exception_raise@Base 2.11 + host_adjust_time@Base 2.11 + host_get_boot_info@Base 2.11 + host_get_time@Base 2.11 + host_info@Base 2.11 + host_kernel_version@Base 2.11 + host_processor_set_priv@Base 2.11 + host_processor_sets@Base 2.11 + host_processors@Base 2.11 + host_reboot@Base 2.11 + host_set_time@Base 2.11 + i386_get_gdt@Base 2.11 + i386_get_ldt@Base 2.11 + i386_io_perm_create@Base 2.11 + i386_io_perm_modify@Base 2.11 + i386_set_gdt@Base 2.11 + i386_set_ldt@Base 2.11 + mach_port_allocate_name_rpc@Base 2.11 + mach_port_allocate_rpc@Base 2.11 + mach_port_deallocate_rpc@Base 2.11 + mach_port_destroy@Base 2.11 + mach_port_extract_right@Base 2.11 + mach_port_get_receive_status@Base 2.11 + mach_port_get_refs@Base 2.11 + mach_port_get_set_status@Base 2.11 + mach_port_insert_right_rpc@Base 2.11 + mach_port_mod_refs@Base 2.11 + mach_port_move_member@Base 2.11 + mach_port_names@Base 2.11 + mach_port_rename@Base 2.11 + mach_port_request_notification@Base 2.11 + mach_port_set_mscount@Base 2.11 + mach_port_set_qlimit@Base 2.11 + mach_port_set_seqno@Base 2.11 + mach_port_type@Base 2.11 + mach_ports_lookup@Base 2.11 + mach_ports_register@Base 2.11 + memory_object_change_attributes@Base 2.11 + memory_object_change_completed@Base 2.11 + memory_object_copy@Base 2.11 + memory_object_create@Base 2.11 + memory_object_create_proxy@Base 2.11 + memory_object_data_error@Base 2.11 + memory_object_data_initialize@Base 2.11 + memory_object_data_provided@Base 2.11 + memory_object_data_request@Base 2.11 + memory_object_data_return@Base 2.11 + memory_object_data_supply@Base 2.11 + memory_object_data_unavailable@Base 2.11 + memory_object_data_unlock@Base 2.11 + memory_object_data_write@Base 2.11 + memory_object_destroy@Base 2.11 + memory_object_get_attributes@Base 2.11 + memory_object_init@Base 2.11 + memory_object_lock_completed@Base 2.11 + memory_object_lock_request@Base 2.11 + memory_object_ready@Base 2.11 + memory_object_set_attributes@Base 2.11 + memory_object_supply_completed@Base 2.11 + memory_object_terminate@Base 2.11 + old_mach_port_get_receive_status@Base 2.11 + processor_assign@Base 2.11 + processor_control@Base 2.11 + processor_exit@Base 2.11 + processor_get_assignment@Base 2.11 + processor_info@Base 2.11 + processor_set_create@Base 2.11 + processor_set_default@Base 2.11 + processor_set_destroy@Base 2.11 + processor_set_info@Base 2.11 + processor_set_max_priority@Base 2.11 + processor_set_policy_disable@Base 2.11 + processor_set_policy_enable@Base 2.11 + processor_set_tasks@Base 2.11 + processor_set_threads@Base 2.11 + processor_start@Base 2.11 + task_assign@Base 2.11 + task_assign_default@Base 2.11 + task_create_rpc@Base 2.11 + task_disable_pc_sampling@Base 2.11 + task_enable_pc_sampling@Base 2.11 + task_get_assignment@Base 2.11 + task_get_emulation_vector@Base 2.11 + task_get_sampled_pcs@Base 2.11 + task_get_special_port@Base 2.11 + task_info@Base 2.11 + task_priority@Base 2.11 + task_ras_control@Base 2.11 + task_resume@Base 2.11 + task_set_emulation@Base 2.11 + task_set_emulation_vector@Base 2.11 + task_set_special_port_rpc@Base 2.11 + task_suspend_rpc@Base 2.11 + task_terminate_rpc@Base 2.11 + task_threads@Base 2.11 + thread_abort@Base 2.11 + thread_assign@Base 2.11 + thread_assign_default@Base 2.11 + thread_create@Base 2.11 + thread_depress_abort_rpc@Base 2.11 + thread_disable_pc_sampling@Base 2.11 + thread_enable_pc_sampling@Base 2.11 + thread_get_assignment@Base 2.11 + thread_get_sampled_pcs@Base 2.11 + thread_get_special_port@Base 2.11 + thread_get_state@Base 2.11 + thread_info@Base 2.11 + thread_max_priority@Base 2.11 + thread_policy@Base 2.11 + thread_priority@Base 2.11 + thread_resume@Base 2.11 + thread_set_special_port@Base 2.11 + thread_set_state@Base 2.11 + thread_suspend@Base 2.11 + thread_terminate@Base 2.11 + thread_wire@Base 2.11 + vm_allocate_rpc@Base 2.11 + vm_copy@Base 2.11 + vm_deallocate_rpc@Base 2.11 + vm_inherit@Base 2.11 + vm_machine_attribute@Base 2.11 + vm_map_rpc@Base 2.11 + vm_protect@Base 2.11 + vm_read@Base 2.11 + vm_region@Base 2.11 + vm_set_default_memory_manager@Base 2.11 + vm_statistics@Base 2.11 + vm_wire@Base 2.11 + vm_write@Base 2.11 + xxx_cpu_control@Base 2.11 + xxx_device_get_status@Base 2.11 + xxx_device_set_filter@Base 2.11 + xxx_device_set_status@Base 2.11 + xxx_host_info@Base 2.11 + xxx_memory_object_lock_request@Base 2.11 + xxx_processor_set_default_priv@Base 2.11 + xxx_slot_info@Base 2.11 + xxx_task_get_emulation_vector@Base 2.11 + xxx_task_info@Base 2.11 + xxx_task_set_emulation_vector@Base 2.11 + xxx_thread_get_state@Base 2.11 + xxx_thread_info@Base 2.11 + xxx_thread_set_state@Base 2.11 + yyy_host_info@Base 2.11 + yyy_processor_control@Base 2.11 + yyy_processor_info@Base 2.11 + yyy_processor_set_info@Base 2.11 --- eglibc-2.13.orig/debian/README.source +++ eglibc-2.13/debian/README.source @@ -0,0 +1,57 @@ +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +To configure quilt to use debian/patches instead of patches, you want +either to export QUILT_PATCHES=debian/patches in your environment +or use this snippet in your ~/.quiltrc: + + for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do + if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then + export QUILT_PATCHES=debian/patches + fi + done + +To get the fully patched source after unpacking the source package, cd to +the root level of the source package and run: + + quilt push -a + +The last patch listed in debian/patches/series will become the current +patch. + +To add a new set of changes, first run quilt push -a, and then run: + + quilt new + +where is a descriptive name for the patch, used as the filename in +debian/patches. Then, for every file that will be modified by this patch, +run: + + quilt add + +before editing those files. You must tell quilt with quilt add what files +will be part of the patch before making changes or quilt will not work +properly. After editing the files, run: + + quilt refresh + +to save the results as a patch. + +Alternately, if you already have an external patch and you just want to +add it to the build system, run quilt push -a and then: + + quilt import -P /path/to/patch + quilt push -a + +(add -p 0 to quilt import if needed). as above is the filename to +use in debian/patches. The last quilt push -a will apply the patch to +make sure it works properly. + +To remove an existing patch from the list of patches that will be applied, +run: + + quilt delete + +You may need to run quilt pop -a to unapply patches first before running +this command. --- eglibc-2.13.orig/debian/libc6-dev-amd64.preinst.i386 +++ eglibc-2.13/debian/libc6-dev-amd64.preinst.i386 @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + (upgrade|install) + # We want /usr/include/{bits,fpu_control.h,gnu,sys} to become + # directories or files instead of symlinks. + for dir in bits fpu_control.h gnu sys ; do + if test -h /usr/include/$dir ; then + rm -rf /usr/include/$dir + fi + done + ;; + (*) + ;; +esac --- eglibc-2.13.orig/debian/libc6-mipsn32.symbols.mipsel +++ eglibc-2.13/debian/libc6-mipsn32.symbols.mipsel @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.mips +++ eglibc-2.13/debian/libc6.symbols.mips @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled in Debian upload 2.4 + __tls_get_addr@GLIBC_2.3 2.4 +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.4), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/README +++ eglibc-2.13/debian/README @@ -0,0 +1,37 @@ +This directory contains the files needed to build glibc for the Debian +GNU/Linux and GNU/Hurd distributions. + +If you have pulled this version from CVS, you will probably need to go +and get the tar.bz2 files that match the file 'version'. You can +generally find these at sources.redhat.com in pub/libc. Put both the +regular glibc tar.bz2 *AND* the matching linuxthreads tar.bz2. After +that follow the usual build procedures. + +Compiling the GNU C library yourself requires a lot of resources. For +a complete build using dpkg-buildpackage you need at least 750MB free +disk space and at least 16MB of RAM and 32MB of swap space (if you +have only that much you're better off not running X at the same +time). Note that the C library on the Hurd is also somewhat larger: +you'll need over 800MB of free disk space to build Hurdish packages. + +A complete build takes 45 minutes on a Pentium III 735Mhz machine, and +25 minutes to run the test suite. The cause for this is the intricate +Makefile structure of glibc which needs a lot of computing power for +make to figure out the automatically generated dependencies. If you +are building all of the optimized libraries for the IA32 family, allow +2.5 hours for this build. + +For Linux, you will need at least the kernel headers for the specific +kernel version required for your machine's architecture. These are +specified in the `debian/sysdeps/linux.mk' file, and can be overridden +by exporting the environment variable LINUX_SOURCE set to the path to +the desired kernel. + +For the Hurd, you will need to have installed the GNU Mach and Hurd +header files (which come with the `gnumach-dev' and `hurd-dev' +packages). See the Hurd source package's `INSTALL' file for more +information. + +Please consider reading the `FAQ' file in this directory. It is also +suggested that you also read the `README' and `INSTALL' files in the +top-level of the glibc source tree. --- eglibc-2.13.orig/debian/libc6.symbols.s390 +++ eglibc-2.13/debian/libc6.symbols.s390 @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled in Debian upload 2.4 + __tls_get_offset@GLIBC_2.3 2.4 +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.4), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/copyright +++ eglibc-2.13/debian/copyright @@ -0,0 +1,267 @@ +This is the Debian prepackaged version of the Embedded GNU C Library +version 2.13. + +It was put together by the GNU Libc Maintainers +from + +* Most of the GNU C library is under the following copyright: + + Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, + 2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA + + On Debian systems, the complete text of the GNU Library + General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'. + +* The utilities associated with GNU C library is under the following + copyright: + + Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, + 2006,2007,2008,2009,2010,2011 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 the Free Software Foundation; version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + + On Debian systems, the complete text of the GNU Library + General Public License can be found in `/usr/share/common-licenses/GPL-2'. + +* All code incorporated from 4.4 BSD is distributed under the following + license: + + Copyright (C) 1991 Regents of the University of California. + 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. [This condition was removed.] + 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. + +* The DNS resolver code, taken from BIND 4.9.5, is copyrighted both by + UC Berkeley and by Digital Equipment Corporation. The DEC portions + are under the following license: + + Portions Copyright (C) 1993 by Digital Equipment Corporation. + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies, and + that the name of Digital Equipment Corporation not be used in + advertising or publicity pertaining to distribution of the document or + software without specific, written prior permission. + + THE SOFTWARE IS PROVIDED ``AS IS'' AND DIGITAL EQUIPMENT CORP. + DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +* The Sun RPC support (from rpcsrc-4.0) is covered by the following + license: + + Copyright (c) 2010, Oracle America, Inc. + + 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 the "Oracle America, 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 HOLDER 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. + +* The following CMU license covers some of the support code for Mach, + derived from Mach 3.0: + + Mach Operating System + Copyright (C) 1991,1990,1989 Carnegie Mellon University + All Rights Reserved. + + Permission to use, copy, modify and distribute this software and its + documentation is hereby granted, provided that both the copyright + notice and this permission notice appear in all copies of the + software, derivative works or modified versions, and any portions + thereof, and that both notices appear in supporting documentation. + + CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS ``AS IS'' + CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR + ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + + Carnegie Mellon requests users of this software to return to + + Software Distribution Coordinator + School of Computer Science + Carnegie Mellon University + Pittsburgh PA 15213-3890 + + or Software.Distribution@CS.CMU.EDU any improvements or + extensions that they make and grant Carnegie Mellon the rights to + redistribute these changes. + +* The file if_ppp.h is under the following CMU license: + + 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 University 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 CARNEGIE MELLON UNIVERSITY 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 UNIVERSITY 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. + +* The following license covers the files from Intel's "Highly Optimized + Mathematical Functions for Itanium" collection: + + Intel License Agreement + + Copyright (c) 2000, Intel Corporation + + 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. + + * The name of Intel Corporation may not 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 INTEL 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. + +* The files inet/getnameinfo.c and sysdeps/posix/getaddrinfo.c are copyright + (C) by Craig Metz and are distributed under the following license: + + /* The Inner Net License, Version 2.00 + + The author(s) grant permission for redistribution and use in source and + binary forms, with or without modification, of the software and documentation + provided that the following conditions are met: + + 0. If you receive a version of the software that is specifically labelled + as not being for redistribution (check the version message and/or README), + you are not permitted to redistribute that version of the software in any + way or form. + 1. All terms of the all other applicable copyrights and licenses must be + followed. + 2. Redistributions of source code must retain the authors' copyright + notice(s), this list of conditions, and the following disclaimer. + 3. Redistributions in binary form must reproduce the authors' copyright + notice(s), this list of conditions, and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 4. [The copyright holder has authorized the removal of this clause.] + 5. Neither the name(s) of the author(s) 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 ITS AUTHORS 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 AUTHORS 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. + + If these license terms cause you a real problem, contact the author. */ + --- eglibc-2.13.orig/debian/libc-dev-alt.preinst.i386 +++ eglibc-2.13/debian/libc-dev-alt.preinst.i386 @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + (upgrade|install) + # We want /usr/include/{bits,fpu_control.h,gnu,sys} to become + # directories or files instead of symlinks. + for dir in bits fpu_control.h gnu sys ; do + if test -h /usr/include/$dir ; then + rm -rf /usr/include/$dir + fi + done + ;; + (*) + ;; +esac --- eglibc-2.13.orig/debian/libc6.symbols.mipsel +++ eglibc-2.13/debian/libc6.symbols.mipsel @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled in Debian upload 2.4 + __tls_get_addr@GLIBC_2.3 2.4 +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.4), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.powerpc +++ eglibc-2.13/debian/libc6.symbols.powerpc @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled in Debian upload 2.3.5 + __tls_get_addr@GLIBC_2.3 2.3.5 +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.3.5), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/symbols.wildcards +++ eglibc-2.13/debian/symbols.wildcards @@ -0,0 +1,31 @@ +| #PACKAGE# (>> 2.13~), #PACKAGE# (<< 2.14) + *@GLIBC_PRIVATE 0 1 + *@GLIBC_2.0 2.0 + *@GLIBC_2.1 2.1 + *@GLIBC_2.1.1 2.1.1 + *@GLIBC_2.1.2 2.1.2 + *@GLIBC_2.1.3 2.1.3 + *@GLIBC_2.1.4 2.1.4 + *@GLIBC_2.2 2.2 + *@GLIBC_2.2.1 2.2.1 + *@GLIBC_2.2.2 2.2.2 + *@GLIBC_2.2.3 2.2.3 + *@GLIBC_2.2.4 2.2.4 + *@GLIBC_2.2.5 2.2.5 + *@GLIBC_2.2.6 2.2.6 + *@GLIBC_2.3 2.3 + *@GLIBC_2.3.1 2.3.1 + *@GLIBC_2.3.2 2.3.2 + *@GLIBC_2.3.3 2.3.3 + *@GLIBC_2.3.4 2.3.4 + *@GLIBC_2.4 2.4 + *@GLIBC_2.5 2.5 + *@GLIBC_2.6 2.6 + *@GLIBC_2.7 2.7 + *@GLIBC_2.8 2.8 + *@GLIBC_2.9 2.9 + *@GLIBC_2.10 2.10 + *@GLIBC_2.11 2.11 + *@GLIBC_2.12 2.12 + *@GLIBC_2.13 2.13 + *@GCC_3.0 2.3.6 --- eglibc-2.13.orig/debian/compat +++ eglibc-2.13/debian/compat @@ -0,0 +1 @@ +5 --- eglibc-2.13.orig/debian/control +++ eglibc-2.13/debian/control @@ -0,0 +1,980 @@ +Source: eglibc +Section: libs +Priority: required +Build-Depends: gettext, make (>= 3.80), dpkg-dev (>= 1.16.0), bzip2, xz-utils, file, quilt, + texinfo, texi2html, + autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 7.4.3), tar (>= 1.22), fdupes, + linux-libc-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], + mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], gnumach-dev [hurd-i386], libpthread-stubs0-dev [hurd-i386], + kfreebsd-kernel-headers [kfreebsd-i386 kfreebsd-amd64], + binutils (>= 2.20-3), binutils (>= 2.21) [sparc sparc64], + g++-4.6, g++-4.6-multilib [amd64 armel armhf i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc] +Build-Depends-Indep: perl, po-debconf (>= 1.0) +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: GNU Libc Maintainers +Uploaders: Clint Adams , Aurelien Jarno +Standards-Version: 3.9.2 +XS-Debian-Vcs-Browser: http://svn.debian.org/wsvn/pkg-glibc/glibc-package/ +XS-Debian-Vcs-Svn: svn://svn.debian.org/pkg-glibc/glibc-package/ +Homepage: http://www.eglibc.org + +Package: libc-bin +Architecture: any +Section: libs +Priority: required +Essential: yes +Multi-Arch: foreign +Depends: ${misc:Depends} +Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10) +Replaces: libc0.1, libc0.3, libc6, libc6.1 +Description: Embedded GNU C Library: Binaries + This package contains utility programs related to the GNU C Library. + . + * catchsegv: catch segmentation faults in programs + * getconf: query system configuration variables + * getent: get entries from administrative databases + * iconv, iconvconfig: convert between character encodings + * ldd, ldconfig: print/configure shared library dependencies + * locale, localedef: show/generate locale definitions + * rpcinfo: report RPC information + * tzselect, zdump, zic: select/dump/compile time zones + +Package: libc-dev-bin +Architecture: any +Section: libdevel +Priority: optional +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends} +Recommends: manpages-dev +Replaces: libc0.1-dev, libc0.3-dev, libc6-dev, libc6.1-dev +Description: Embedded GNU C Library: Development binaries + This package contains utility programs related to the GNU C Library + development package. + +Package: glibc-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Provides: glibc-doc-reference +Conflicts: glibc-doc-reference +Replaces: glibc-doc-reference +Description: Embedded GNU C Library: Documentation + Contains The GNU C Library Reference manual in info and html format + as well as the man pages for libpthread functions and the complete + GNU C Library ChangeLog. + +Package: eglibc-source +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends} +Recommends: xz-utils +Description: Embedded GNU C Library: sources + This package contains the sources and patches which are needed to + build eglibc. + +Package: locales +Architecture: all +Section: localization +Priority: standard +Depends: ${locale:Depends}, ${misc:Depends}, debconf | debconf-2.0 +Conflicts: base-config, belocs-locales-bin, belocs-locales-data +Replaces: base-config, lliurex-belocs-locales-data +Description: Embedded GNU C Library: National Language (locale) data [support] + Machine-readable data files, shared objects and programs used by the + C library for localization (l10n) and internationalization (i18n) support. + . + This package contains the libc.mo i18n files, plus tools to generate + locale definitions from source files (included in this package). It + allows you to customize which definitions actually get + generated. This is a space-saver over how this package used to be, + with all locales generated by default. This created a package that + unpacked to an excess of 30 megs. + +Package: locales-all +Architecture: any +Section: localization +Priority: extra +Multi-Arch: foreign +Pre-Depends: dpkg (>= 1.15.6) +Depends: ${locale:Depends}, ${misc:Depends}, lzma +Provides: locales +Description: Embedded GNU C Library: Precompiled locale data + This package contains the precompiled locale data for all supported locales. + A better alternative is to install the locales package and only select + desired locales, but it can be useful on a low-memory machine because some + locale files take a lot of memory to be compiled. + +Package: nscd +Architecture: any +Section: admin +Multi-Arch: foreign +Priority: optional +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Embedded GNU C Library: Name Service Cache Daemon + A daemon which handles passwd, group and host lookups + for running programs and caches the results for the next + query. You should install this package only if you use + slow services like LDAP, NIS or NIS+. + +Package: multiarch-support +Architecture: any +Multi-Arch: foreign +Depends: ${misc:Depends}, + libc6 (>= 2.3.6-2) [!any-i386 !alpha !armhf !ia64 !hurd-any !kfreebsd-any], + libc6.1 (>= 2.3.6-2) [alpha ia64], + libc0.3 (>= 2.3.6-2) [!linux-any !kfreebsd-any !hurd-i386], + libc0.1 (>= 2.3.6-2) [!linux-any !hurd-any !kfreebsd-i386], + libc6 (>= 2.13-0ubuntu6) [armhf i386], + libc0.3 (>= 2.13-0ubuntu6) [hurd-i386], + libc0.1 (>= 2.13-0ubuntu6) [kfreebsd-i386], +Priority: standard +Description: Transitional package to ensure multiarch compatibility + This is a transitional package used to ensure multiarch support is present + in ld.so before unpacking libraries to the multiarch directories. It can + be removed once nothing on the system depends on it. + +Package: libc6 +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6-dev +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc6 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6-dbg +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc6-prof +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6-pic +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6-udeb +XC-Package-Type: udeb +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: debian-installer +Priority: extra +Provides: libc6, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc6.1 +Architecture: alpha ia64 +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6.1-dev +Architecture: alpha ia64 +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc6.1 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6.1-dbg +Architecture: alpha ia64 +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc6.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc6.1-prof +Architecture: alpha ia64 +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc6.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6.1-pic +Architecture: alpha ia64 +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6.1-udeb +XC-Package-Type: udeb +Architecture: alpha ia64 +Section: debian-installer +Priority: extra +Provides: libc6.1, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc0.3 +Architecture: hurd-i386 +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.3-dev +Architecture: hurd-i386 +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc0.3 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.3-dbg +Architecture: hurd-i386 +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc0.3 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc0.3-prof +Architecture: hurd-i386 +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc0.3 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.3-pic +Architecture: hurd-i386 +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.3 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.3-udeb +XC-Package-Type: udeb +Architecture: hurd-i386 +Section: debian-installer +Priority: extra +Provides: libc0.3, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc0.1 +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.1-dev +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc0.1 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.1-dbg +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc0.1-prof +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.1-pic +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.1-udeb +XC-Package-Type: udeb +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: debian-installer +Priority: extra +Provides: libc0.1, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + +Package: libc6-i386 +Architecture: amd64 +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Replaces: libc6-dev-i386 +Conflicts: ia32-libs (<= 1.5) +Description: Embedded GNU C Library: 32-bit shared libraries for AMD64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for AMD64 systems. + +Package: libc6-dev-i386 +Architecture: amd64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc6-i386 (<= 2.9-18), libc6-dev (<< 2.13-14), ia32-libs-dev (<< 1.18) +Depends: libc6-i386 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32-bit development libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for AMD64 systems. + +Package: libc6-sparc64 +Architecture: sparc +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + +Package: libc6-dev-sparc64 +Architecture: sparc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-sparc64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for UltraSPARC + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for UltraSPARC systems. + +Package: libc6-s390 +Architecture: s390x +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 32bit Shared libraries for IBM zSeries + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 32bit version + of the library. + +Package: libc6-dev-s390 +Architecture: s390x +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-s390 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32bit Development Libraries for IBM zSeries + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library. + +Package: libc6-s390x +Architecture: s390 +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 64bit Shared libraries for IBM zSeries + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for zSeries systems. + +Package: libc6-dev-s390x +Architecture: s390 +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-s390x (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for IBM zSeries + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for zSeries systems. + +Package: libc6-amd64 +Architecture: i386 +Section: libs +Priority: standard +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Conflicts: amd64-libs (<= 1.2) +Description: Embedded GNU C Library: 64bit Shared libraries for AMD64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for AMD64 systems. + +Package: libc6-dev-amd64 +Architecture: i386 +Section: libdevel +Priority: optional +Depends: libc6-amd64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Conflicts: libc6-dev (<< 2.13-14) +Replaces: amd64-libs-dev (<= 1.2), libc6-dev (<< 2.13-11) +Provides: lib64c-dev +Description: Embedded GNU C Library: 64bit Development Libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for AMD64 systems. + +Package: libc6-powerpc +Architecture: ppc64 +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 32bit powerpc shared libraries for ppc64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for ppc64 systems. + +Package: libc6-dev-powerpc +Architecture: ppc64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-powerpc (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32bit powerpc development libraries for ppc64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for ppc64 systems. + +Package: libc6-ppc64 +Architecture: powerpc +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 64bit Shared libraries for PowerPC64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for PowerPC64 systems. + +Package: libc6-dev-ppc64 +Architecture: powerpc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-ppc64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for PowerPC64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for PowerPC64 systems. + +Package: libc6-mipsn32 +Architecture: mips mipsel +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: n32 Shared libraries for MIPS64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the n32 version + of the library, meant for MIPS64 systems. + +Package: libc6-dev-mipsn32 +Architecture: mips mipsel +Section: libdevel +Priority: optional +Provides: libn32c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-mipsn32 (= ${binary:Version}), libc6-dev-mips64 (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: n32 Development Libraries for MIPS64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the n32 version of the + library, meant for MIPS64 systems. + +Package: libc6-mips64 +Architecture: mips mipsel +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 64bit Shared libraries for MIPS64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for MIPS64 systems. + +Package: libc6-dev-mips64 +Architecture: mips mipsel +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-mips64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for MIPS64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for MIPS64 systems. + +Package: libc6-armhf +Architecture: armel +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: ARM hard float shared libraries for armel + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the ARM hard float version of the library, meant for armel systems. + +Package: libc6-dev-armhf +Architecture: armel +Section: libdevel +Priority: optional +Depends: libc6-armhf (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: ARM hard float development libraries for armel + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the ARM hard float version of the + library, meant for armel systems. + +Package: libc6-armel +Architecture: armhf +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: ARM softfp shared libraries for armhf + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the ARM softfp version of the library, meant for armhf systems. + +Package: libc6-dev-armel +Architecture: armhf +Section: libdevel +Priority: optional +Depends: libc6-armel (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: ARM softfp development libraries for armhf + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the ARM softfp version of the + library, meant for armhf systems. + +Package: libc0.1-i386 +Architecture: kfreebsd-amd64 +Section: libs +Priority: optional +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 32bit shared libraries for AMD64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for AMD64 systems. + +Package: libc0.1-dev-i386 +Architecture: kfreebsd-amd64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc0.1-dev (<< 2.13-14) +Replaces: libc0.1-dev (<< 2.13-11) +Depends: libc0.1-i386 (= ${binary:Version}), libc0.1-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32bit development libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for AMD64 systems. + +Package: libc6-sparcv9v +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${binary:Version}) +Description: Embedded GNU C Library: Shared libraries [v9v optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparcv9v2 +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${binary:Version}) +Description: Embedded GNU C Library: Shared libraries [v9v2 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for SUN4V Niagara 2 and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara 2 and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparc64b +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${binary:Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC [v9b optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for UltraSPARC-III and derivative + processors. It only needs to be installed on machines using + UltraSPARC-III and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparc64v +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${binary:Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC [v9v optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparc64v2 +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${binary:Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC [v9v2 optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for SUN4V Niagara 2 and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara 2 and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-xen +Architecture: i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc6 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [Xen version] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Xen hypervisor, and will be + selected instead when running under Xen. + +Package: libc0.1-i686 +Architecture: kfreebsd-i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc0.1 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used on an i686 class CPU (check the output of `uname -m'). This includes + Pentium Pro, Pentium II/III/IV, Celeron CPU's and similar class CPU's + (including clones such as AMD Athlon/Opteron, VIA C3 Nehemiah, but not VIA + C3 Ezla). + +Package: libc0.3-i686 +Architecture: hurd-i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc0.3 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used on an i686 class CPU (check the output of `uname -m'). This includes + Pentium Pro, Pentium II/III/IV, Celeron CPU's and similar class CPU's + (including clones such as AMD Athlon/Opteron, VIA C3 Nehemiah, but not VIA + C3 Ezla). + +Package: libc0.3-xen +Architecture: hurd-i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc0.3 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [Xen version] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Xen hypervisor, and will be + selected instead when running under Xen. + +Package: libc6.1-alphaev67 +Architecture: alpha +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc6.1 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries (EV67 optimized) + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Alpha EV67. It only + needs to be installed on Alpha EV67/68 and EV7 machines. If you install + this on an older machine, it won't even be used. + +Package: libc6-loongson2f +Architecture: mipsel +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc6 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries (Loongson 2F optimized) + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Loongson 2F. It only + needs to be installed on Lemote Loongson 2F machines. If you install + this on a non-Loongson, it won't even be used. + +Package: libnss-dns-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: Embedded GNU C Library: NSS helper for DNS - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the DNS NSS helper needed for the Debian installer. + Do not install it on a normal system. + +Package: libnss-files-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: Embedded GNU C Library: NSS helper for files - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the files NSS helper needed for the Debian installer. + Do not install it on a normal system. + --- eglibc-2.13.orig/debian/shlibs-add-udebs +++ eglibc-2.13/debian/shlibs-add-udebs @@ -0,0 +1,51 @@ +#! /bin/sh +set -e + +# This script adds "udeb lines" to shlibs files which allows other udebs +# to get correct dependencies when built against glibc libraries. +# The script was written by Frans Pop . + +package="$1" +shlibs_file="debian/$package/DEBIAN/shlibs" + +# Skip packages that don't have an shlibs file. +# The "cross-subarch" library packages have an shlibs file, but should +# not have udeb lines, so skip those as well. +if [ ! -r "$shlibs_file" ] || \ + echo "$package" | grep -Eq "^libc[0-9.]+-"; then + exit 0 +fi + +# $1: regexp to select libraries for which lines should be duplicated +# $2: name of the udeb the new line should point to +add_udeb_line() { + local regexp udeb line lib soname package rest + regexp="$1" + udeb="$2" + + if line="$(grep "^$regexp[[:space:]]" $shlibs_file)"; then + echo "$line" | while read lib soname package rest; do + echo "udeb: $lib $soname $udeb $rest" >>$shlibs_file + done + fi +} + + +W="[^[:space:]]*" + +# The following lists should match the ones in the *-udeb.install files +# in debian/debhelper.in; $W replaces any "*" wildcards there. +expr_libc1="ld$W libm-$W libm libdl$W libresolv$W libc-$W libc" +expr_libc2="libutil$W libcrypt$W librt$W libpthread$W" +expr_nss_dns="libnss_dns$W" +expr_nss_files="libnss_files$W" + +for expr in $expr_libc1 $expr_libc2; do + add_udeb_line "$expr" $package-udeb +done +for expr in $expr_nss_dns; do + add_udeb_line "$expr" libnss-dns-udeb +done +for expr in $expr_nss_files; do + add_udeb_line "$expr" libnss-files-udeb +done --- eglibc-2.13.orig/debian/libc6.1.symbols.alpha +++ eglibc-2.13/debian/libc6.1.symbols.alpha @@ -0,0 +1,58 @@ +ld-linux.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support added/enabled in debian upload 2.3.5 + __tls_get_addr@GLIBC_2.3 2.3.5 +libc.so.6.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libBrokenLocale.so.1.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 +libcidn.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.6.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 + calloc@Base 2.3.6 + free@Base 2.3.6 + malloc@Base 2.3.6 + mmap64@Base 2.3.6 + mmap@Base 2.3.6 + mremap@Base 2.3.6 + munmap@Base 2.3.6 + realloc@Base 2.3.6 +libnsl.so.1.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nisplus.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpcprofile.so #PACKAGE# #MINVER# + __cyg_profile_func_enter@Base 2.3.6 + __cyg_profile_func_exit@Base 2.3.6 + __invoke_dynamic_linker__@Base 2.3.6 +libresolv.so.2.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +librt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libutil.so.1.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libanl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpthread.so.0 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libthread_db.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.i386 +++ eglibc-2.13/debian/libc6.symbols.i386 @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld-linux.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled with Debian upload 2.3.6-6 + __tls_get_addr@GLIBC_2.3 2.3.6-6~ +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.3.6-6~), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.hppa +++ eglibc-2.13/debian/libc6.symbols.hppa @@ -0,0 +1,35 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +# Minimal dependency set to 2.11 due to linuxthreads -> NPTL transition +libBrokenLocale.so.1 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcidn.so.1 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.6 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnsl.so.1 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# (>= 2.11), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/quiltrc +++ eglibc-2.13/debian/quiltrc @@ -0,0 +1,4 @@ +QUILT_PATCHES="debian/patches" +QUILT_PATCH_OPTS="--reject-format=unified" +QUILT_DIFF_ARGS="--no-timestamps --no-index" +QUILT_REFRESH_ARGS="-pab --no-timestamps --no-index --diffstat" --- eglibc-2.13.orig/debian/libc0.1.symbols.kfreebsd-amd64 +++ eglibc-2.13/debian/libc0.1.symbols.kfreebsd-amd64 @@ -0,0 +1,3 @@ +#include "libc0.1.symbols.common" +ld-kfreebsd-x86-64.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/watch +++ eglibc-2.13/debian/watch @@ -0,0 +1,2 @@ +version=3 +ftp://ftp.gnu.org/gnu/glibc/glibc-([\d\.]+)\.tar\.gz debian uupdate --- eglibc-2.13.orig/debian/libc6.symbols.powerpcspe +++ eglibc-2.13/debian/libc6.symbols.powerpcspe @@ -0,0 +1,12 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### TLS support enabled in Debian upload 2.3.5 + __tls_get_addr@GLIBC_2.3 2.3.5 +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +libpthread.so.0 #PACKAGE# (>= 2.3.5), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6-i386.symbols.amd64 +++ eglibc-2.13/debian/libc6-i386.symbols.amd64 @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/changelog +++ eglibc-2.13/debian/changelog @@ -0,0 +1,12703 @@ +eglibc (2.13-20ubuntu9) precise; urgency=low + + * No-change rebuild to drop spurious libsfgcc1 dependency on armhf. + + -- Adam Conrad Fri, 02 Dec 2011 20:56:09 -0700 + +eglibc (2.13-20ubuntu8) precise; urgency=low + + * Massage unsubmitted-ldso-abi-check.diff so it actually applies. + + -- Adam Conrad Thu, 01 Dec 2011 11:31:33 -0700 + +eglibc (2.13-20ubuntu7) precise; urgency=low + + * Update arm/unsubmitted-ldso-abi-check.diff with fixes to make + ld.so --verify exit(1) on hard-float/soft-float ABI mismatches. + + -- Adam Conrad Thu, 01 Dec 2011 11:11:33 -0700 + +eglibc (2.13-20ubuntu6) precise; urgency=low + + * Apply patches to elf/* utilities from Steve McIntyre: + - arm/unsubmitted-ldconfig-cache-abi.diff + - arm/unsubmitted-ldso-abi-check.diff + * Use default compiler (and options) on armhf, same as armel. + * Fix install locations for libc6-dev-armel in sysdeps. + * Change armel_rtlddir (for libc6-armel) to /lib, as required. + * Install /lib/ld-linux.so.3 symlink in libc6-armel. + * Install ld.so.conf.d file for the multilib ARM targets. + * Add dynamic linker name for the non-default multilib in ARM ldd. + + -- Adam Conrad Sat, 26 Nov 2011 23:01:23 +0000 + +eglibc (2.13-20ubuntu5) oneiric; urgency=low + + * libc6-dev: Don't break the current {gnat,gcj}-4.4-base versons. LP: #853688. + + -- Matthias Klose Tue, 04 Oct 2011 17:48:26 +0200 + +eglibc (2.13-20ubuntu4) oneiric; urgency=low + + * debian/control: + - help the apt resolver with the gcc-4.4 upgrade by providing + explicit breaks against {gnat,gcc,gcj}-{4.4,4.5}-base (LP: #853688) + + -- Michael Vogt Fri, 30 Sep 2011 14:02:02 +0200 + +eglibc (2.13-20ubuntu3) oneiric; urgency=low + + * Fix pthread/fork race/deadlock. LP: #838975. + - Avoid race between {,__de}allocate_stack and __reclaim_stacks during fork. + + * Merge from Debian: + + [ Aurelien Jarno ] + * Add debian/patches/cvs-dl_close-scope-handling.diff from upstream to + fix issues with dl_close() when resolving locally-defined symbols. + Closes: #625250. + * patches/i386/local-cpuid-level2.diff: fix a typo. Closes: #609389. + + -- Matthias Klose Mon, 26 Sep 2011 13:50:14 +0200 + +eglibc (2.13-20ubuntu2) oneiric; urgency=low + + * Back out Debian r4943 ("Don't include ISO14651 collation rules in + C.UTF-8 locale") for now; this breaks regcomp on character ranges, which + exposed a bug in apt, and seems likely to cause other problems, so is + too risky a change for this point in our release cycle (LP: #848907). + + -- Colin Watson Tue, 13 Sep 2011 17:37:32 +0100 + +eglibc (2.13-20ubuntu1) oneiric; urgency=low + + [ Colin Watson ] + * Revert change from 2.13-17ubuntu2 now that data.tar.xz support is + deployed in Launchpad. Add Pre-Depends: dpkg (>= 1.15.6) to affected + packages. + + [ Dr. David Alan Gilbert ] + * ARM strchr: mask r1 to char (LP: #842258) + + [ Matthias Klose ] + * Merge with Debian (r4955). + + -- Matthias Klose Fri, 09 Sep 2011 13:44:41 +0200 + +eglibc (2.13-20) unstable; urgency=low + + * debian/debhelper.in/libc.preinst: call /bin/mv with --version so + that it doesn't return an error. Closes: #640872. + + -- Aurelien Jarno Thu, 08 Sep 2011 10:23:00 +0200 + +eglibc (2.13-19) unstable; urgency=low + + [ Aurelien Jarno ] + * Change libc_rtlddir to /lib on s390x. + * Add debian/patches/submitted-glob_h-ifdef.diff to fix an undefined + preprocessor symbol in some rare conditions. Closes: #639213. + * debian/sysdeps/sparc64.mk: re-enable multiarch similarly to what + has been done on sparc. + * debian/control.in/libc: remove Breaks: on perl. Closes: #640300. + * debian/patches/localedata/locale-C.diff: Don't include ISO14651 + collation rules in C.UTF-8 locale. + * Update debian/patches/svn-updates to revision 15228: + - Drop debian/patches/any/cvs-dl-deps.diff (merged upstream). + - Drop debian/patches/arm/cvs-align-constant-pool.diff (merged upstream). + * debian/debhelper.in/libc.preinst: get the dynamic linker from /bin/mv + instead of /bin/true. Closes: #640753. + + [ Jeremie Koenig ] + * New patches to improve the signal code on Hurd: + patches/hurd-i386/submitted-hurdsig-fixes.diff, + patches/hurd-i386/submitted-hurdsig-global-dispositions.diff, + patches/hurd-i386/submitted-hurdsig-SA_SIGINFO.diff, + patches/hurd-i386/submitted-hurdsig-fixes-2.diff. + * Update testsuite accordingly. + * Remove patches/hurd-i386/submitted-PTRACE_CONTINUE.diff, now covered by + submitted-hurdsig-fixes.diff. + * libc0.3.symbols.hurd-i386: Add version for global-disposition functions. + + [ Samuel Thibault ] + * Add patches/hurd-i386/submitted-libc_stack_end.diff to fix ruby1.9.1 stack + detection. + * Add patches/hurd-i386/submitted-ttyname_ERANGE.diff to fix ttyname error + value. + * Add patches/hurd-i386/submitted-DEV_BSIZE.diff to add DEV_BSIZE. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 3697 (from glibc-bsd). + - fixes ld.so location used inside ldd on kfreebsd-amd64. Closes: #640156. + - wrap faccessat() X_OK testing for superuser. Closes: #640325. + + -- Aurelien Jarno Wed, 07 Sep 2011 22:51:11 +0200 + +eglibc (2.13-18) unstable; urgency=low + + * On s390x the PI is /lib/ld64.so.1, so we don't need to move + ld64.so.1 from /lib to /lib64. + + -- Aurelien Jarno Wed, 24 Aug 2011 10:09:17 +0200 + +eglibc (2.13-17ubuntu2) oneiric; urgency=low + + * Compress all binary packages using standard compression, to + work around #832354. + + -- Matthias Klose Tue, 23 Aug 2011 22:57:56 +0200 + +eglibc (2.13-17ubuntu1) oneiric; urgency=low + + * Merge with Debian (r4918). + + -- Matthias Klose Tue, 23 Aug 2011 20:29:34 +0200 + +eglibc (2.13-17) unstable; urgency=low + + [ Aurelien Jarno ] + * Improve libc.NEWS to also include headers. + * Add debian/patches/cvs-dlopen-tls.diff to fix handling of static TLS in + dlopen'ed objects. Closes: #637239. + * Provide locales in locales-all as separated files instead of adding them + to locale-archive. Use symlinks between identical files to limit the + unpacked size. Closes: #537743, #636694, #638173. + * Compress libc*-dbg and locales-all to using xz. + * Add patches/localedata/cvs-rupee.diff from upstream to add support for + Rupee symbol (U20B9). + * Add patches/sparc/cvs-rlimits.diff from upstream to fix issues with + rlimits on sparc. Closes: #637767. + * Add patches/amd64/cvs-pthread-stack-alignment.diff from upstream to fix + stack alignment issues on amd64. + * Add patches/s390/cvs-vsyscalls.diff from upstream to fix wrong register + usage in the INTERNAL_VSYSCALL_NCS macro. + * Add patches/arm/cvs-clone-cantunwind.diff from upstream to fix unwinding + issues with openjdk on armhf. + * Add patches arm/cvs-align-constant-pool.diff from upstream to fix + alignement issues on armhf. + * debian/control.in/libc: add Breaks: lsb-core (<= 3.2-27) to make sure the + lsb symlink is still valid. + * Remove patches/any/cvs-dl-missing-deps.diff, the original problem has + been solved through other ways, so it is not needed any more. Fixes + symbols resolution with issues with icedove/iceweasel/iceape. Closes: + #617759. + + [ Samuel Thibault ] + * debian/patches/hurd-i386/submitted-ioctl-unsigned-size_t.diff: Add + u?int{8,16,32,64} ioctl types. + * debian/patches/hurd-i386/submitted-init-first.diff: Fix stack switching + compilation with newer gcc. + + [ Steve Langasek ] + * Install ld*.so to RTLDDIR (/lib64 or /lib), as appropriate, and convert + /lib64 from a symlink to a directory on upgrade (with appropriate + downgrade and error-unwind handling), so that multiarch and biarch + packages will play nicely together on the filesystem.. Thanks to + Sven Joachim for preliminary patches. Closes: #632682. + * Restore multiarch support on all architectures. + * Bump the multiarch-support minimum dependency for armhf, which settled + its triplet only at the time i386 did. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 3689 (from glibc-bsd). + + -- Aurelien Jarno Mon, 22 Aug 2011 21:51:07 +0200 + +eglibc (2.13-16ubuntu4) oneiric; urgency=low + + * Mark ARM __clone as .cantunwind (taken from the trunk). + * Re-enable running the testsuite. + + -- Matthias Klose Mon, 15 Aug 2011 16:20:52 +0200 + +eglibc (2.13-16ubuntu3) oneiric; urgency=low + + * libc6-dev-armhf: Install architecture specific header files. + * Build libc6-armel and libc6-dev-armel packages on armhf. LP: #810360. + * Re-enable multiarch on amd64 too. + + -- Matthias Klose Fri, 12 Aug 2011 13:17:26 +0200 + +eglibc (2.13-16ubuntu2) oneiric; urgency=low + + * Re-add the Multiarch: same attribute for libc6. + * Assume Intel Core i3/i5/i7 processor if AVX is available. + + -- Matthias Klose Thu, 11 Aug 2011 11:07:48 +0200 + +eglibc (2.13-16ubuntu1) oneiric; urgency=low + + * Merge with Debian (r4860). + * Update patches/svn-updates to revision 14811. + * Build using GCC-4.6. + + -- Matthias Klose Tue, 09 Aug 2011 16:11:30 +0200 + +eglibc (2.13-16) unstable; urgency=low + + [ Aurelien Jarno ] + * The "multiarch starts to piss me off" upload. + * On i386, install i386 specific headers in the multiarch include + path, the common and the x86-64 ones in the default include path. + Closes: #637141. + * debhelper.in/libc-dev-alt.preinst: test if not a symlink instead of + testing if a directory. Fixes triarch includes on mips/mipsel. + + -- Aurelien Jarno Mon, 08 Aug 2011 14:39:41 +0200 + +eglibc (2.13-15) unstable; urgency=low + + [ Aurelien Jarno ] + * Add testsuite results for s390x. + * Install x86-64 version of ldd in libc-bin:i386. Closes: #636947. + * Add a Breaks: perl (<< 5.12.4-2) to libc0.1/6/6.1. Closes: #636686. + * Install x86-64 headers on i386 instead of the i386 ones. Closes: + #637000. + + -- Aurelien Jarno Fri, 05 Aug 2011 07:46:28 +0200 + +eglibc (2.13-14) unstable; urgency=low + + [ Aurelien Jarno ] + * Remove amd64 biarch includes from libc6-dev:i386. Closes: #636115, + #636116. + * Fix the biarch symlinks on mipsel, pointing them to the right multiarch + directory. + * Include a symlink for fpu_control in biarch packages. Closes: #635685. + * Update conflicts to libc6-dev in biarch packages to (<< 2.13-14) so that + the directory to symlink conversion is done correctly. + * On mips/mipsel, only ship the includes symlinks in libc6-dev-mips64. Add + a dependency to libc6-dev-mips64 in libc6-dev-mipsn32. + * Build with gcc-4.6/g++-4.6 on armhf to get correct atomic operations in + thumb-2 mode. + + [ Samuel Thibault ] + * patches/hurd-i386/submitted-sysvshm.diff: Fix shm creation: do not create + file on first lookup. + + -- Aurelien Jarno Thu, 04 Aug 2011 09:41:41 +0200 + +eglibc (2.13-13) unstable; urgency=low + + * sysdeps/*.mk: install the biarch includes in /usr/include instead + of the multiarch path. Fix FTBFS on some architectures. + * sysdeps/mips.*mk: fix triarch includes on mips and mipsel. + + -- Aurelien Jarno Sun, 31 Jul 2011 02:42:58 +0200 + +eglibc (2.13-12) unstable; urgency=low + + [ Aurelien Jarno ] + * rules.d/debhelper.mk: Fix a typo about kfreebsd-amd64. + * Change include directory on i386 from i486-linux-gnu to i386-linux-gnu + and on kfreebsd-i386 from i486-kfreebsd-gnu to i386-kfreebsd-gnu. + * Fix installation of biarch headers (Closes: #635685): + - Use a symlink for bits/ and gnu/ directories + - Use symlinked files for sys/ directory + - Add a preinst script to do the directory <-> symlink conversion. + + -- Aurelien Jarno Sat, 30 Jul 2011 13:33:39 +0200 + +eglibc (2.13-11) unstable; urgency=low + + [ Aurelien Jarno ] + * control.in/main: fix nscd description. Closes: #633370. + * Update patches/svn-updates to revision 14511 to fix build on + powerpcspe. Add corresponding symbols file and expected testsuite + results. Closes: #632863. + * Add patches/localedata/locale-os_RU.diff from upstream to add Ossetian + locale. Closes: #634508. + * kfreebsd/local-sysdeps.diff, update to revision 3618 (from glibc-bsd). + - fixes LD_PRELOAD with a kfreebsd-9 kernel. Closes: #630695. + - fixes tst-atime when build in a noatime filesystem. Closes: #634152. + - uses upstream RFTSIGZMB for exit signal selection when available. + * Disable multiarch support on amd64, kfreebsd-amd64, ppc64, sparc64 until + we fix the /lib64 -> /lib symlink issue. Closes: #632176. + * Re-enable patches/any/cvs-resolv-different-nameserver.diff. Add + patches/any/submitted-resolv-assert.diff to fix assertion triggered by the + previous patch. Closes: #535504, #602291. + * Add support for s390x. + * Fix debhelper.in/libc.NEWS with the right option to pass to gcc. Closes: + #629819. + * Add any/submitted-resolv-init.diff to fix issue with the resolver when + RES_ROTATE is enabled. Closes: #593571. + + [ Jeremie Koenig ] + * Add debian/libc0.3.symbols.hurd-i386. + + [ Steve Langasek ] + * Try again to make libc6-dev multiarch-same. + + -- Aurelien Jarno Tue, 26 Jul 2011 03:00:33 +0200 + +eglibc (2.13-10) unstable; urgency=low + + * control.in/main: tag libc-bin Essential: yes. + * Revert patch to make libc6-dev multiarch. Closes: #632667. + * Add patches/alpha/submitted-statfs64.patch to fix statvfs() on alpha. + Closes: #324051. + + -- Aurelien Jarno Mon, 04 Jul 2011 22:02:35 +0200 + +eglibc (2.13-9ubuntu3) oneiric; urgency=low + + * Build libc6-armhf and libc6-dev-armhf packages on armel. LP: #810360. + * Build using GCC 4.6 on armel. + * Add an empty directory /usr/lib/ in the biarch -dev packages, + needed by GCC to resolve names relative to this path. + + -- Matthias Klose Wed, 20 Jul 2011 15:22:21 +0200 + +eglibc (2.13-9ubuntu2) oneiric; urgency=low + + * Cut down the delta with Debian: + - drop debian/bug/locales/presubj and debian/locales.bug-presubj, + replaced by debian/debhelper.in/locales.bug-presubj + - debian/control.in/main: + + bump the multiarch build-dep on dpkg-dev to 1.16.0 now that it's + available in Ubuntu + + add ${misc:Depends} for multiarch-support + - debian/debhelper.in/libc.preinst: reorder so we get a sensible diff, + and fix the nbsp that was fixed upstream in 2.13-9. + - debian/debhelper.in/libc.preinst: drop changes from 2.13-8ubuntu2, + 2.13-8ubuntu3: Debian now guards this with a check for $1 = upgrade, + which should account for the initial unpack cases (both debootstrapping, + and first install of a foreign libc). + - clean up mismerge of debian/debhelper.in/libc.prerm. + - clean up mismerge of debian/debhelper.in/nscd.init. + - drop debian/patches/alpha/cvs-longjmp-chk.diff; no reason to carry + extra patches for alpha... + - drop debian/patches/hurd-i386/submitted-ttyname.diff, we don't want + stray hurd patches either. + - sync miscellaneous patches with Debian versions: + debian/patches/any/local-libgcc-compat-ports.diff, + debian/patches/any/local-ld-multiarch.diff + - reapply patches disabled without explanation: + all/local-alias-UTF-8.diff, all/local-pthread-manpages.diff + - debian/patches/lpia, debian/rules, debian/rules.d/control.mk, + debian/sysdeps/lpia.mk: drop support for lpia, which hasn't existed + since hardy. + + -- Steve Langasek Fri, 08 Jul 2011 08:55:44 -0700 + +eglibc (2.13-9ubuntu1) oneiric; urgency=low + + * Merge with Debian (r4786). + + -- Matthias Klose Mon, 04 Jul 2011 17:10:01 +0200 + +eglibc (2.13-9) unstable; urgency=low + + [ Samuel Thibault ] + * patches/README: Add "unsubmitted" category. + * Rename most local hurd-i386 patches into unsubmitted. + * patches/hurd-i386/submitted-PTRACE_CONTINUE.diff: New patch from Jeremy + Koenig, to fix initialized value. + * patches/hurd-i386/submitted-ldsodefs.h.diff: Update to latest submitted + version, enable. Closes: #630180. + + [ Aurelien Jarno ] + * debhelper.in/libc.preinst: replace unbreakable space by normal space. + Closes: #632453. + * Disable patches/any/cvs-resolv-different-nameserver.diff. Closes: #632273, + #632252. Reopen: #535504, #602291. + * kfreebsd/local-sysdeps.diff: update to revision 3530 (from glibc-bsd). + Closes: #632452. + * debhelper.in/libc.preinst: only check for already unpacked versions of the + libc during upgrades. Closes: #632190, #632509. + * Install arch dependent headers in the multiarch include directory, patch by + Marcin Juszkiewicz. Tag libc*-dev as Multi-Arch: same. + * Add patches/powerpc/submitted-ifunc.diff to fix build on powerpc. + + -- Aurelien Jarno Mon, 04 Jul 2011 01:50:25 +0200 + +eglibc (2.13-8ubuntu3) oneiric; urgency=low + + * debhelper.in/libc.preinst: Don't probe for old copies of libc when doing + initial installs (i.e. no second argument to preinst), since debootstrap + extracts libc and other packages before unpacking it properly and we + don't want to break it (LP: #805342). + + -- Colin Watson Mon, 04 Jul 2011 09:40:56 +0100 + +eglibc (2.13-8ubuntu2) oneiric; urgency=low + + * debhelper.in/libc.preinst: don't probe for old copies of libc when we're + installing a libc for other than the default architecture; otherwise, we + can't bootstrap installing a foreign-arch libc onto the system. + + -- Steve Langasek Sat, 02 Jul 2011 17:46:14 -0700 + +eglibc (2.13-8ubuntu1) oneiric; urgency=low + + [ Colin Watson ] + * Backport from upstream: + - Update UTF-8 charmap from recent Unidata.txt file. + - Transliterate U20B9 (LP: #799673). + + [ Matthias Klose ] + * Merge with Debian (r4770). + * Align _start constant pool to 4 bytes (Richard Sandiford). LP: #791315. + * Adjust Breaks to gcc-4.x for the Ubuntu versions. + + -- Matthias Klose Sat, 02 Jul 2011 11:05:07 +0200 + +eglibc (2.13-8) unstable; urgency=low + + [ Samuel Thibault ] + * Add patches/hurd-i386/submitted-ldsodefs.h.diff to fix loading binaries + with GNU/Hurd-specific extensions, disabled for now. + * patches/hurd-i386/local-sendmsg-SCM_RIGHTS.diff: Do not call getauth(), + use the __USEPORT() cache macro instead. This should fix zsh FTBFS with + duplicate getproc() symbol. + + [ Aurelien Jarno ] + * Add patches/any/cvs-addmntent.diff to correctly report errors status in + addmntent(). Closes: #630699 / CVE-2011-1089. + * Add patches/any/cvs-resolv-different-nameserver.diff to try a different + nameserver if the first one returns REFUSED. Closes: #535504, #602291. + * Update patches/svn-updates to revision 14337: + - Remove any/cvs-glro_dl_debug_mask.diff (merged). + - Remove i386/cvs-memmove-static.diff (merged). + * debian/control: clean-up Uploaders: . + * Add patches/any/cvs-fnmatch.diff to fix an integer overflow in + fnmatch() (CVE-2011-1659). Closes: #626370. + * Add an entry to NEWS.Debian about multiarch and passing flags to the + compiler on pre-multiarch toolchains. + * Replace sparc/submitted-ifunc2.diff by upstream version + any/cvs-ifunc.diff. + * Fix patches/hppa/submitted-nptl-carlos.diff to correctly pass + --as-needed and --no-as-needed to the linker. + * Update breaks on pre-multiarch packages. Closes: #631907. + * libc.preinst: improve and simplify search for old libraries, detect + broken LD_LIBRARY_PATH. Closes: #630608. + * libc.postrm: remove support code from Sarge. + * rules.d/debhelper.mk: install bug files using dh_bugfiles. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 3501 (from glibc-bsd). + to fix . Closes: #631867. + * Drop kfreebsd/local-ftw.diff, needed only for pre 8.0 kernels. + + -- Aurelien Jarno Thu, 30 Jun 2011 07:41:52 +0200 + +eglibc (2.13-7) unstable; urgency=low + + [ Aurelien Jarno ] + * Update paths to the memcpy wrapper in NEWS.Debian.gz. Closes: + #630138. + * Fix preinst script wrt 3.0 kernel. Patch by Colin Watson. Closes: + #630077. + * debian/sysdeps/linux.mk: correctly check from multiarch asm/ include + directory. + * Add patches/sparc/cvs-ifunc1.diff and patches/sparc/submitted-ifunc2.diff + to fix multi-arch support on sparc. Update sysdeps/sparc.mk and + sysdeps/sparc64.mk to re-enable multi-arch support on sparc and sparc64. + Closes: #625607. + * debhelper.in/libc.preinst: improve error message when an old copy of ld.so + is found. Closes: #629983. + * debhelper.in/libc.preinst: automatically remove leftovers from libc5 to + libc6 transition (upgrade from Bo to Hamm). Closes: #629534. + + -- Aurelien Jarno Sun, 12 Jun 2011 20:33:19 +0200 + +eglibc (2.13-6ubuntu2) oneiric; urgency=low + + * Fix preinst to cope with two-digit kernel version numbers, such as 3.0. + + -- Colin Watson Fri, 10 Jun 2011 17:21:32 +0100 + +eglibc (2.13-6ubuntu1) oneiric; urgency=low + + * Merge with Debian (r4726, 2.13-6). + * Fix installation of ld.co.conf.d file for biarch builds. + + -- Matthias Klose Thu, 09 Jun 2011 17:35:12 +0200 + +eglibc (2.13-6) unstable; urgency=low + + [ Aurelien Jarno ] + * kfreebsd/local-sysdeps.diff, update to revision 3406 (from glibc-bsd), + to fix . Closes: #629289, #629426. + * debian/sysdeps/linux.mk: remove obsolete comment and code about + asm-sparc64. Use the multiarch asm directory if present. + * debian/copyright: update. + * Update breaks on pre-multiarch packages. + * Allow tst-writev to fail due to changes on recent kernels. Closes: + #629862. + + [ Samuel Thibault ] + * Update "expected" hurd-i386 failures. + + [ Clint Adams ] + * Remove spurious exclamation point in architecture dependency. + * Add lintian overrides for eglibc-source, from Marcin Juszkiewicz. + + [ Steve Langasek ] + * debian/debhelper.in/libc.preinst: additional check for extra copies of + /lib/ld-2.*.so not known to dpkg, as these cause problems when the real + linker moves to /lib/ for multiarch and ldconfig leaves + /lib/ld-linux.so.N pointing at an old glibc. Closes: #629534. + + -- Aurelien Jarno Thu, 09 Jun 2011 14:30:19 +0200 + +eglibc (2.13-5ubuntu1) oneiric; urgency=low + + * Revert: + - Provide compatibility symlinks for .o files in /usr/lib. + - debian/control.in/libc: Remove the Multi-Arch: same attribute. + * Run the ldconfig trigger in verbose mode again, if it failed. + * Merge with Debian (r4710, trunk). + + -- Matthias Klose Wed, 08 Jun 2011 20:09:08 +0200 + +eglibc (2.13-5) unstable; urgency=low + + [ Aurelien Jarno ] + * Update from stable branch: + - Remove any/cvs-rtld-prelink.diff (merged upstream). + * debhelper.in/libc.preinst: require a 8.0 kernel on GNU/kFreeBSD. + Closes: #626422. + * Bump to Standards-Version 3.9.2 (no changes). + * Revert changes to patches/any/local-no-pagesize.diff, instead make + sure PAGE_SIZE is not used internally. Closes: #627273. + * Add Swahili, Fulah and Bemba locales, backport from HEAD. + * locale-gen: don't remove /usr/lib/locale/* in locale-gen. Closes: + #626575. + * Add patches/any/cvs-setlocale.diff from upstream fixing reset to + C locale issue in setlocale(). Closes: #627355. + * Add patches/amd64/cvs-powl.diff from upstream to fix corner cases + in powl() on amd64. + * Add patches/localedata/locale-sv_FI.diff from upstream to fix date + format. Closes: #577988. + * Add patches/any/submitted-rlimit-rttime.diff to fix missing + RLIMIT_RTTIME entry in . Closes: #627619. + * patches/any/local-ld-multiarch.diff: add the multiarch compat dir + instead of the multiarch dir. + * Use the multiarch path for the native version and optimized flavors. + * kfreebsd/local-sysdeps.diff, update to revision 3303 (from glibc-bsd), + to fix brk(), semctl() and if_nameindex() bugs. + * Add patches/any/local-tst-writev.diff to fix compilation of tst-writev.c. + * Add breaks on packages which don't support multiarch paths. + * Add patches/any/cvs-regex-oom.diff to fix an oom issue triggerable with + some regexes. + * Add patches/any/cvs-getaddrinfo-single-lookup.diff to fix fallback to + single lookup dns requests. Closes: #541167. + * Add patches/any/cvs-unique_sym_table-corruptions.diff to fix + unique_sym_table corruptions when doing STB_GNU_UNIQUE or + ELF_RTYPE_CLASS_COPY lookups. + * Replace patches/any/local-dl-deps.diff by upstream version + patches/any/cvs-dl-deps.diff. + * Add patches/mips/submitted-dl-platform.diff from Robert Millan to + add dl-platform support for MIPS. + * Add a loongson2f optimized library. Closes: #601419. + * Update local/manpages/ld.so.8 with hardware capabilities documentation. + Closes: #622385. + * Update patches/localedata/submitted-bz9725-locale-sv_SE.diff to fix time + format in sv_SE locale. Closes: #604125. + * Add patches/mips/submitted-wordsize-clang.diff to make clang usable on + mips/mipsel. Closes: #601645. + * Add patches/any/submitted-mqueue-throw.diff to fix different declarations + of mq_open(). Closes: #595380. + + [ Steve Langasek ] + * Tighten the dependency on dpkg to a multiarch aware version. + * Simplify the creation of /etc/ld.so.conf.d/.conf. + * Add multiarch fields to debian/control. + * debian/debhelper.in/libc.preinst, debian/debhelper.in/libc.prerm: + remove the ld.so.cache when upgrading from or downgrading to a + pre-multiarch version; otherwise maintainer scripts start segfaulting + immediately, and dpkg will entertainingly roll back the libc upgrade. + * debian/control.in/libc: make the main multiarch main libc replace the + biarch or triarch libc-foo package of the *corresponding* architecture; + this gives us a libc6:i386 package that Replaces libc6-i386, since both + packages contain the same linker and we want multiarch to take + precedence. + + [ Clint Adams ] + * Patch from Marcin Juszkiewicz to provide the debian/ directory in + eglibc-source. + + [ Samuel Thibault ] + * patches/hurd-i386/local-madvise_warn.diff: Drop "unimplemented" warning + for madvise. + + -- Aurelien Jarno Sat, 04 Jun 2011 22:30:47 +0200 + +eglibc (2.13-4) unstable; urgency=low + + * debian/sysdeps/amd64.mk: don't redefine libc6_extra_pkg_install. + Closes: #626447, #626449, #626450. + + -- Aurelien Jarno Thu, 12 May 2011 07:16:55 +0200 + +eglibc (2.13-3) unstable; urgency=low + + * patches/any/local-no-pagesize.diff: use __sysconf() instead of + sysconf(). + * patches/any/local-bindresvport_blacklist.diff: use feof_unlocked() + instead of feof(). + * Add patches/any/cvs-resolv-tld.diff from upstream to fix resolution + of unqualified domain names. + * Add patches/any/cvs-sys-param-ARG_MAX.diff from upstream to fix + bassackwards tests for ARG_MAX in sys/param.h. Closes: #583433. + * Add support for the new armhf triplet (Closes: #625846): + - Update patches/any/submitted-autotools.diff to detect the new triplet. + - Add patches/arm/submitted-armhf-triplet.diff to support the + new triplet. + * Add patches/any/submitted-at-pagesize.diff from Fedora to fix + getpagesize() on static binaries. Closes: #626379. + * sysdeps/sparc.mk, sysdeps/sparc64.mk: disable multiarch support. + Workarounds: #625607. + * debian/local/memcpy-wrapper/*: on amd64, provide and build two wrappers + to workaround and debug memcpy() issues. Explain how to use them in + debian/debhelper.in/libc.NEWS. + + -- Aurelien Jarno Wed, 11 May 2011 23:03:15 +0200 + +eglibc (2.13-2ubuntu1) oneiric; urgency=low + + * Merge with Debian (r4637, trunk). + + -- Matthias Klose Wed, 04 May 2011 11:02:30 +0200 + +eglibc (2.13-2) unstable; urgency=low + + [ Aurelien Jarno ] + * kfreebsd/local-sysdeps.diff, update to revision 3299 (from glibc-bsd), + fix libc.so linking on kfreebsd after recent linker changes. + + -- Aurelien Jarno Mon, 02 May 2011 06:11:16 +0200 + +eglibc (2.13-0ubuntu15) oneiric; urgency=low + + * Re-enable the memcpy multiarch implementaiton on x86_64. LP: #727064. + * Merge with Debian (r4609, 2.13 branch). + * Update to r13356 from the eglibc-2.13 branch. + + -- Matthias Klose Tue, 26 Apr 2011 14:03:32 +0200 + +eglibc (2.13-0ubuntu13) natty; urgency=low + + * debian/sysdeps/linux.mk: detect when linux-libc-dev has moved its + headers to the multiarch dir, and create the symlink to the right place + so we can find those headers for building. LP: #750585. + + -- Steve Langasek Mon, 11 Apr 2011 02:15:33 -0700 + +eglibc (2.13-0ubuntu12) natty; urgency=low + + * For memcpy-ssse3, enable chk symbols in static builds. LP: #726802. + * Disable the memcpy multiarch implementaiton on x86_64. LP: #727064. + * Merge from Debian: + - Add patches/i386/cvs-cacheinfo.diff to fix empty LEVEL*CACHE* getconf() + entries for some CPU. Closes: #609389. + + -- Matthias Klose Tue, 05 Apr 2011 10:54:32 +0200 + +eglibc (2.13-0ubuntu11) natty; urgency=low + + * debian/rules.d/build.mk: when building 32-bit biarch libraries for + 64-bit archs, ship an /etc/ld.so.conf/biarch.conf config snippet adding + /lib32,/usr/lib32 to the path; these are already included in the path + for the biarch build itself, but the biarch ld.so may be Replaced: by + the multiarch libc which does not have built-in support for these + non-standard paths. + * debian/rules.d/debhelper.mk: the ld.so.conf snippet isn't included in + all of the alternate libc builds, only in libc6-i386 and libc6-powerpc; + so we add this by hand to the dh_install invocation for these packages. + LP: #741949. + * debian/debhelper.in/libc.preinst: don't restart kdm on upgrade. It may + no longer be required, and in any case the restart will break running + sessions so we want to avoid this for beta1. LP: #744944. + + -- Steve Langasek Tue, 29 Mar 2011 23:15:42 -0700 + +eglibc (2.13-0ubuntu10) natty; urgency=low + + * Provide compatibility symlinks for .o files in /usr/lib. LP: #744908. + * debian/control.in/libc: Remove the Multi-Arch: same attribute. + + -- Matthias Klose Tue, 29 Mar 2011 17:03:27 +0200 + +eglibc (2.13-0ubuntu9) natty; urgency=low + + * Update to r13241 from the eglibc-2.13 branch. + * Create ARM unwind records for system call stubs (Ulrich Weigand). + LP: #684218. + + -- Matthias Klose Wed, 23 Mar 2011 00:35:13 +0100 + +eglibc (2.13-0ubuntu8) natty; urgency=low + + * debian/rules.d/debhelper.mk: when doing a stage1 build, all our files are + in /lib, not in $slibdir (which is not the same thing under multiarch). + * debian/sysdeps/armhf.mk: use /lib/$(DEB_HOST_MULTIARCH) for rtlddir, so + that we avoid a file conflict with the armel libc and armel+armhf can + be multiarch-coinstallable. + * debian/control.in/libc, debian/control.in/main: make multiarch-support a + real package depending on the native libc; this eliminates the problem + of a circular depends/pre-depends loop never permitting apt to install + the base libraries for any foreign architecture. We still have the + dependency loop for the native architecture, which is safe (and needs to + be enforced!), but whenever a package is installed non-native, it's ok + to bypass this requirement (which is effectively what we're doing by + making multiarch-support Multi-Arch: foreign), because none of the + concerned library packages are installable at all unless a Multi-Arch: + same libc6 is available. + + -- Steve Langasek Mon, 21 Mar 2011 01:39:32 -0700 + +eglibc (2.13-0ubuntu7) natty; urgency=low + + * debian/patches/any/local-ldconfig-system-dirs.diff: make ldconfig + use the built-in system paths. Closes LP: #736932. + + -- Steve Langasek Thu, 17 Mar 2011 16:01:07 -0700 + +eglibc (2.13-0ubuntu6) natty; urgency=low + + * Build for multiarch. FFe LP: #733501. + + [ Aurelien Jarno ] + * Use the multiarch path for the native version and optimized flavors, and + mark these packages as Multi-Arch: same. + * patches/any/local-ld-multiarch.diff: add the multiarch compat dir + instead of the multiarch dir. + * Simplify the creation of /etc/ld.so.conf.d/.conf. + * Install a symlink ABI -> multiarch path. + + [ Steve Langasek ] + * build-depend on the multiarch dpkg-dev. + * debian/control.in/libc: add 'multiarch-support' provide. + * debian/control.in/libc: make the main multiarch main libc replace the + biarch or triarch libc-foo package of the *corresponding* architecture; + this gives us a libc6:i386 package that Replaces libc6-i386, since both + packages contain the same linker and we want multiarch to take + precedence. + * Use globbing in lintian overrides instead of directory names, so that we + can use an architecture-agnostic override file. + * debian/debhelper.in/libc.preinst, debian/debhelper.in/libc.prerm: + remove the ld.so.cache when upgrading from or downgrading to a + pre-multiarch version; otherwise maintainer scripts start segfaulting + immediately, and dpkg will entertainingly roll back the libc upgrade. + * debian/rules.d/build.mk: populate /etc/ld.so.conf.d with the + $(DEB_HOST_MULTIARCH) paths, but also include $(DEB_HOST_GNU_TYPE) paths + if this is a different triplet to ensure backwards-compatibility with + packages already using the multiarch paths (on i386) + * Remove spurious debian/control.in/libc?* files from the source package, + since their presence caused the latest build to be Multi-Arch: no + * Include $rtlddir in the debhelper substitution rules + + -- Steve Langasek Tue, 15 Mar 2011 19:50:48 -0700 + +eglibc (2.13-0ubuntu5) natty; urgency=low + + * Enable SSE2 memset for AMD's upcoming Orochi processor and bugfix. + LP: #735020. + + -- Matthias Klose Mon, 14 Mar 2011 21:35:41 +0100 + +eglibc (2.13-0ubuntu4) natty; urgency=low + + * Merge with Debian (r4564, 2.13 branch). + * Merge Debian 2.11.2-12. + - Fix a typo in debian/patches/any/local-rtld.diff. Closes: #615806. + * Merge Debian 2.11.2-13. + [ Aurelien Jarno ] + - Re-enable build failure in case of testsuite regressions. + - Add patches/any/cvs-fnmatch-alloca.patch from upstream to fix a + memory corruption in fnmatch() that can lead to code execution. + Closes: #615120. + - Add patches/any/cvs-qsort-race.diff from upstream to fix race in + qsort_r(). Closes: #614892. + [ Samuel Thibault ] + - patches/any/submitted-sched_h.diff: Synchronize bits/sched.h with + sysdeps/unix/sysv/linux/bits/sched.h (Closes: #527589), rename to + cvs-sched_h.diff. + - patches/hurd-i386/cvs-if_freereq.diff: Fix crash when siocgifconf + actually succeeds. + [ Clint Adams ] + - Patch from Nobuhiro Iwamatsu to cope with the removal of + patch --unified-reject-files. closes: #612540. + [ Steve Langasek ] + - Merge parts of multiarch patch: + - Use the correct path in the ldd script as well + - Set default rtlddir to /lib and override it when needed. + - Install xen library in $(libdir)/xen instead of /usr/lib/xen. + * On ppc64, build with -O3 -fno-tree-vectorize. + * Update to r13065 from the eglibc-2.13 branch. + - debian/patches/any/cvs-rtld-prelink.diff: Remove, applied upstream. + - debian/patches/ppc64/submitted-loader-no-vsx.diff: Likewise. + * Re-enable the upstream change: + 2010-06-02 Kirill A. Shutemov + * elf/dl-reloc.c: Flush cache after solving TEXTRELs if arch + requires it. + Working OpenJDK ARM assembler interpreter. LP: #605042. + + -- Matthias Klose Tue, 08 Mar 2011 00:47:30 +0100 + +eglibc (2.13-0ubuntu3) natty; urgency=low + + [ Matthias Klose ] + * Add expected test results for ppc64. + + [ Dave Gilbert ] + * debian/patches/arm/local-linaro-cortex-strings.diff: + - ports/sysdeps/arm/memchr.S: Import fast multibyte memchr optimised + for ARM v7 from linaro cortex-strings bzr repo. + - ports/sysdeps/arm/strchr.S: Import simple strchr optimised for + ARM v7 from linaro cortex-strings bzr repo. + + -- Matthias Klose Thu, 24 Feb 2011 07:37:20 +0100 + +eglibc (2.13-0ubuntu2) natty; urgency=low + + * Apply upstream patch to fix prelinking. + + -- Colin Watson Wed, 23 Feb 2011 03:36:25 +0000 + +eglibc (2.13-0ubuntu1) natty; urgency=low + + * Upload to natty, fixing ld.so assertion on many programs (LP: #721469). + * Replace ppc64/local-loader-no-vsx.diff with submitted version from Ryan + S. Arnold. + + -- Colin Watson Fri, 18 Feb 2011 23:43:05 +0000 + +eglibc (2.13-0ubuntu1~ppa2) natty; urgency=low + + * Apply other part of proposed workaround for PR 12454 (as amended by Kees + Cook). + + -- Colin Watson Fri, 18 Feb 2011 21:18:42 +0000 + +eglibc (2.13-0ubuntu1~ppa1) natty; urgency=low + + * Upload as 2.13. + * Apply proposed workaround for PR 12454. + + -- Matthias Klose Fri, 18 Feb 2011 12:07:54 +0100 + +eglibc (2.13~pre1-0ubuntu1) natty; urgency=low + + * Generate 2.13 tarball based on r12879/2.13 branch. + * Merge Debian 2.11.2-8 - -11. + * patches/kfreebsd/local-sysdeps.diff: remove stub marks for at* + syscalls as we don't support FreeBSD 7.x kernels anyway. Closes: + #610749. + * Add patches/amd64/cvs-avx-tcb-alignment.diff from upstream to fix + alignement issues on CPU supporting the AVX instruction set. Closes: + #610657. + * Disable build failure in case of testsuite regressions, will be + re-enabled after squeeze release. + * Japanese debconf translation update from Nobuhiro Iwamatsu. + closes: #604752. + * Add expected gettext failure on hurd-i386. + * Update patches/localedata/locale-et_EE.diff to switch Estonian currency + to euro. Closes: #608803. + * Revert incorrect upstream patch for CVE-2010-3847 and use the correct + set of patches: + - Remove patches/any/submitted-origin.diff + - Add patches/any/cvs-dont-expand-dst-twice.diff + - Add debian/patches/any/cvs-ignore-origin-privileged.diff + - Keep debian/patches/any/cvs-audit-suid.diff + * Merge with Debian (r4525, 2.13 branch). + + -- Matthias Klose Fri, 18 Feb 2011 12:05:45 +0100 + +eglibc (2.13-1) unstable; urgency=low + + [ Aurelien Jarno ] + * New upstream release: + - Fix spurious warning in bswap_16() with -Wconversion. Closes: + #561249. + - Add back support for m68k. Closes: #446503, #601126. + - Add support for NTP API 4. Closes: #558314. + - Fix memchr() on alpha. Closes: #521737. + - Add optimized string functions via STT_GNU_IFUNC on PowerPC. Closes: + #408959. + - Provide POSIX2008 compliant futimens(). Closes: #563724. + - Fix auxilary cache file creation. Closes: 588218. + - Fix POSIX2008 compliance. Closes: #610824. + - Implement accurate fma() (according to C99). Closes: #372544. + - Build correctly with --no-add-needed. Closes: #616298. + - Fix SOCK_CLOEXEC value on hppa. Closes: #617973. + - Add inotify support on alpha. Closes: #614099. + - Update patches/locale/locale-print-LANGUAGE.diff. + - Update patches/localedata/sort-UTF8-first.diff. + - Remove patches/localedata/submitted-pt_BR.diff (merged upstream). + - Update patches/localedata/locale-et_EE.diff (partially merged upstream). + - Remove patches/localedata/locale-es_CR.diff (merged upstream). + - Update patches/localedata/locales-fr.diff. + - Update patches/localedata/tailor-iso14651_t1.diff. + - Remove patches/localedata/fr_BE-first_weekday.diff (merged upstream). + - Update localedata/first_weekday.diff. + - Remove patches/alpha/submitted-dl-procinfo.diff (merged upstream). + - Remove patches/alpha/submitted-fpu-round.diff (merged upstream). + - Remove patches/alpha/submitted-asm-memchr.diff (merged upstream). + - Remove patches/alpha/submitted-sock_nonblock.diff (merged upstream). + - Remove patcheS/alpha/submitted-epoll.diff (merged upstream). + - Remove patches/alpha/cvs-timer_settime.diff (merged upstream). + - Remove patches/alpha/submitted-PTR_MANGLE.diff (obsolete). + - Remove patches/alpha/local-fcntl_h.diff (obsolete). + - Remove patches/alpha/local-longjmp-chk.diff (obsolete). + - Remove patches/alpha/submitted-fdatasync.diff (obsolete). + - Remove patches/amd64/cvs-avx-tcb-alignment.diff (merged upstream). + - Remove patches/arm/local-no-hwcap.diff (merged upstream). + - Remove patches/arm/local-hwcap-updates.diff (merged upstream). + - Remove patches/hppa/cvs-nptl-compat.diff (merged upstream). + - Update patches/hppa/local-stack-grows-up.diff. + - Remove patches/hppa/cvs-vfork.diff (merged upstream). + - Remove patches/hurd-i386/submitted-rtld_lock_recursive.diff (merged + upstream). + - Remove patches/hurd-i386/cvs-getcwd.diff (merged upstream). + - Remove patches/hurd-i386/cvs-setsid.diff (merged upstream). + - Remove patches/hurd-i386/cvs-linkat.diff (merged upstream). + - Remove patches/hurd-i386/cvs-ttyname.diff (merged upstream). + - Remove patches/hurd-i386/cvs-getnprocs.diff (merged upstream). + - Remove patches/hurd-i386/cvs-select.diff (merged upstream). + - Remove patches/hurd-i386/cvs-sched_param.diff (merged upstream). + - Remove patches/hurd-i386/cvs-sendmsg-leak.diff (merged upstream). + - Update patches/i386/local-pthread_cond_wait.diff. + - Remove patches/m68k/cvs-define-m68k-tls-relocations.patch (merged + upstream). + - Remove patches/m68k/cvs-tls-support.patch (merged upstream). + - Remove patches/m68k/cvs-versions-def-2-12.patch (merged upstream). + - Remove patches/mips/cvs-mips-atomic_h.diff (merged upstream). + - Remove patches/mips/cvs-non-pic-n32-64-syscall.diff (merged upstream). + - Remove patches/s390/cvs-makecontext.diff (merged upstream). + - Update patches/s390/submitted-nexttowardf.diff. + - Remove patches/sh4/local-fpscr_values.diff (merged upstream). + - Remove patches/sh4/submitted-set_fpscr.diff (merged upstream). + - Remove patches/sparc/cvs-sparcv9-memchr.diff (merged upstream). + - Remove patches/sparc/submitted-epoll.diff (merged upstream). + - Remove patches/sparc/submitted-msgrcv.diff (merged upstream). + - Update patches/any/local-ldso-disable-hwcap.diff. + - Remove patches/any/local-ntp-update.diff (obsolete). + - Update patches/any/local-no-pagesize.diff. + - Update patches/any/submitted-longdouble.diff. + - Remove patches/any/cvs-resolv-bindv6only.diff (merged upstream). + - Remove patches/any/cvs-futimens.diff (merged upstream). + - Remove patches/any/cvs-malloc_info-init.diff (merged upstream). + - Remove patches/any/cvs-stat-issock.diff (merged upstream). + - Remove patches/any/cvs-remove.diff (merged upstream). + - Remove patches/any/cvs-getaddrinfo.diff (merged upstream). + - Remove patches/any/cvs-umount-nofollow.diff (merged upstream). + - Remove patches/any/cvs-glob.diff (merged upstream). + - Remove patches/any/cvs-flush-cache-textrels.diff (merged upstream). + - Remove patches/any/submitted-group_member.diff (merged upstream). + - Remove patches/any/cvs-redirect-throw.diff (merged upstream). + - Remove patches/any/cvs-__block.diff (merged upstream). + - Remove patches/any/cvs-sunrpc-license.diff (merged upstream). + - Remove patches/any/submitted-resolv.conf-thread.diff (merged upstream). + - Remove patches/any/cvs-audit-suid.diff (merged upstream). + - Remove patches/any/cvs-dont-expand-dst-twice.diff (merged upstream). + - Remove patches/any/cvs-ignore-origin-privileged.diff (merged upstream). + - Remove patches/any/cvs-fnmatch-alloca.diff (merged upstream). + - Remove patches/any/cvs-qsort-race.diff from upstream (merged upstream). + - Remove patches/any/submitted-etc-resolv.conf.diff (obsolete). + - Update patches/any/submitted-bits-fcntl_h-at.diff. + - Remove patches/any/submitted-nis-shadow.diff (obsolete). + - Remove patches/any/submitted-futex_robust_pi.diff (obsolete). + - Update patches/kfreebsd/local-readdir_r.diff. + * debian/sysdeps/*.mk, debhelper.in/libc.preinst: bump minimal Linux + kernel version to 2.6.26, and minimal FreeBSD kernel version to + 8.0.0. Closes: #610475. + * Add /etc/default/nss. + * Add patches/all/local-nis-shadow.diff to change default value of + ADJUNCT_AS_SHADOW to TRUE. This avoid NIS password leakage + (CVE-2010-0015), but can be changed to FALSE to accomomdate some + NIS installations. Closes: #566297, #566844. + * kfreebsd/local-sysdeps.diff, kfreebsd/local-linuxthreads29.diff: + update to revision 3286 (from glibc-bsd) Closes: #602776. + * debian/rules: split build-indep and build-arch targets. Closes: + #611926. + * sysdeps/sparc.mk, sysdeps/sparc64.mk: build with --enable-multi-arch. + * sysdeps/powerpc.mk, sysdeps/ppc64.mk: build with --enable-multi-arch. + * Drop libc6-sparcv9b package on sparc/sparc64, optimizations are now + done through multi-arch (STT_GNU_IFUNC). + * Add patches/localedata/locale-C.diff to create a C locale. + * Build and install the C locales in libc-bin. Closes: #609306. + * Bump to Standards-Version 3.9.1 (no changes). + * Add patches/submitted-rwlock-stack-imbalance.diff to fix regression + in pthread_rwlock_timedrdlock() and pthread_rwlock_timedwrlock(). + * Whitelist tst-makecontext3.out test on ia64, as it is new and can't + succeed on this architecture. + * Build depends on binutils (>= 2.21) on sparc and sparc64 to gain + STT_GNU_IFUNC support. + * Add patches/any/submitted-ldsodefs_rtld_debug.diff to fix + EGLIBC_RTLD_DEBUG support on non NPTL systems. + * Add patches/any/local-relro-mprotect.patch to not crash with PaX + kernels. Closes: #611195. + * Add patches/any/cvs-dl-missing-deps.diff to output an early error + when dependencies are missing. Closes: #612792. + * Add patches/any/cvs-rtld-prelink.diff to fix segfault on prelinked + binaries. + * Add patches/sparc/submitted-bzero.diff to fix bzero() on sparc. + * Add patches/powerpc/local-libgcc_eh-ld.so.diff to fix bug-atexit3 + test on PowerPC. + * Add patches/alpha/submitted-fcntl_h.diff, submitted-stackinfo.diff, + submitted-libm-hidden.diff, submitted-statfs.diff and + submitted-fxstatat.patch to fix FTBFS on alpha. + * Add patches/any/local-linuxthreads-deps.diff to fix testsuite issues + on GNU/kFreeBSD. + * Add patches/s390/cvs-iconv-z9-109.diff to fix FTBFS on s390 with + recent binutils. + * Add patches/hppa/submitted-fcntl_h.diff, hppa/submitted-stackinfo.diff + and hppa/submitted-libm-hidden.diff to fix FTBFS on hppa. + * Add patches/alpha/submitted-____longjmp_chk.diff to fix longjmp() with + FORTIFY on alpha. + * Add patches/alpha/submitted-PTR_MANGLE.diff to fix exceptions on alpha. + * Add patches/i386/cvs-cacheinfo.diff to fix empty LEVEL*CACHE* getconf() + entries for some CPU. Closes: #609389. + * Add patches/any/local-ldconfig-multiarch.diff from Steve Langasek to + add multiarch support to ldconfig. + * Add patches/alpha/local-strncmp.diff to remove broken alpha specific + implementation of strncmp(). + * Add patches/alpha/submitted-sysconf-cache.diff to fix sysconf() + LEVEL*CACHE* entries. Closes: #620203. + * Add patches/i386/cvs-memmove-static.diff to fix static linking + with FORTIFY. + * Add patches/amd64/cvs-getcontext.diff to fix getcontext() on amd64. + * Add patches/any/cvs-fopen.diff to fix fopen() with 7 bytes string. + * Add patches/amd64/cvs-memset.diff to fix memset() on amd64 for + misaligned blocks larger than 144 Bytes. + * Add patches/any/local-dl-deps.diff to workaround assert triggered by + some binaries. Closes: #624515. + * Add patches/any/submitted-fwrite-wur.diff to not warn about unused + result for fwrite(). Closes: #616627. + + [ Samuel Thibault ] + * Add patches/any/cvs-glro_dl_debug_mask.diff to fix build without + EGLIBC_RTLD_DEBUG support. + * Add patches/hurd-i386/cvs-header-prot.diff, + patches/hurd-i386/cvs-psiginfo.diff, and + patches/hurd-i386/local-ptsname.diff to fix hurd-i386 build. + * Update expected hurd-i386 failures with new tests. + * Add patches/hurd-i386/submitted-add-needed.diff to fix getting functions + from libmachuser and libhurduser with gold linking. + * Add patches/hurd-i386/local-ED.diff to avoid letting the + (standard-compliant!) prank bring FTBFSes. + * Add defining LIBPTHREAD_VERSION to + patches/hurd-i386/local-pthread_posix-option.diff + + [ Steve Langasek ] + * Set Multi-Arch: foreign on the appropriate packages. + * debian/rules.d/debhelper.mk: set $rtlddir in the debhelper substitution + rules, so we don't substitute an empty string. + + -- Aurelien Jarno Sun, 01 May 2011 19:53:41 +0200 + +eglibc (2.12.1-0ubuntu16) natty; urgency=low + + * ppc64/local-loader-no-vsx.diff: Build ppc64 ld.so with -mno-vsx, since + otherwise it tries to load a constant from the TOC before the TOC + reference has been relocated. + * any/submitted-sys-uio-vector.diff: Add patch from Petr Baudis to avoid a + clash with Altivec. + + -- Colin Watson Tue, 15 Feb 2011 09:32:49 +0000 + +eglibc (2.12.1-0ubuntu15) natty; urgency=low + + * Drop dependencies on findutils, obsolete post-lucid. + + -- Steve Langasek Wed, 09 Feb 2011 15:13:13 -0800 + +eglibc (2.12.1-0ubuntu14) natty; urgency=low + + [ Matthias Klose ] + * Call locale-gen --purge when updating from eglibc-2.11.x. LP: #504198. + + -- Colin Watson Fri, 28 Jan 2011 13:31:14 +0000 + +eglibc (2.12.1-0ubuntu13) natty; urgency=low + + * SECURITY UPDATE: setuid iconv users could load arbitrary libraries. + - debian/patches/any/submitted-origin.diff: refresh with new + proposed solution, avoiding iconv issues (LP: #701783). + + -- Kees Cook Tue, 11 Jan 2011 22:45:54 -0800 + +eglibc (2.12.1-0ubuntu12) natty; urgency=low + + * do not run 'telinit u' on upgrade, as this will break upstart. + touch /var/run/init.upgraded instead, which will force a re-exec just + before remounting root read-only. LP: #672177, LP: #694772. + + -- Clint Byrum Mon, 03 Jan 2011 10:17:18 -0800 + +eglibc (2.12.1-0ubuntu11) natty; urgency=low + + * Update to the eglibc 2.12 branch (r12365). + - Fix alignment of AVX safe area on x86_64, issue #12113. LP: #662511. + - Fix issue #12159, x86-64 strchr propagation of search byte into all bytes + of SSE register. (LP: #615953) + - any/cvs-audit-suid.diff, any/cvs-getlogin_r-error-handling-1.patch, + any/cvs-getlogin_r-error-handling-2.patch, any/cvs-issue12092.diff, + any/cvs-getlogin_r-error-handling-3.patch, any/cvs-issue12113.diff, + any/cvs-issue11968.diff: Remove, merged upstream. + - any/cvs-dst-expansion-fix.diff, any/submitted-etc-resolv.conf.diff, + locale/locale-print-LANGUAGE.diff: Updated. + + * Sort changelog entries with bzr-builddeb's merge_changelog to help merging + with Debian; update Debian changelog entries to their latest version, and + drop Debian changelog entries which aren't in the unstable changelog; this + keeps the diff between Debian unstable's changelog and Ubuntu's changelog + minimal (only Ubuntu entries) and makes it easier to review new Debian + changes. + * Copy binutils [mips mipsel] build-dep to minimize delta with Debian's + build-deps. + * Drop Vcs-Bzr; this package is now maintained in lp:ubuntu/eglibc. + * Drop version in texinfo build-dep; this is satisfied even in dapper. + * Move belocs-locales-bin conflicts around to lower the diff with Debian's + control. + * Copy Debian's libc6-dev-i386 Conflicts with libc6-i386 (<= 2.9-18) for + some older upgrades; this seems to apply to Ubuntu as well, and reduces + the delta with Debian just a bit. libc6-dev-i386 is not a commonly + installed package, and this is satisfied in lucid and later anyway, so it + shouldn't make upgrades harder, except if people use backports. + * Drop debian/control.in/libc0.1, libc0.3, libc6, and libc6.1 (these are + automatically generated) after confirming that generating them results in + the same data. + * Drop debian/debhelper.in/glibc-doc.docs; ChangeLog* is already listed in + debian/debhelper.in/glibc-doc.install. + * Drop debian/debhelper.in/libc-alt-dev.postinst as it only helps powerpc + upgrades from dapper versions which aren't supported on powerpc anymore. + * debian/debhelper.in/libc.postinst: drop inconsistent quotes around 2.12. + * debian/local/manpages/gencat.1, iconvconfig.8, mtrace.1: revert differing + RCS timestamps. + * debian/patches/series: drop reference to changelog version with respect to + local-ipv6-lookup.diff as the reference is bogus. + * Drop debian/patches/alpha/submitted-getsysstats.diff, + submitted-includes.diff, submitted-lowlevellock.diff, + submitted-procfs_h.diff; these should have been dropped in earlier merges + as they are not applied anymore and were dropped from Debian. + * Drop commented-out hppa/* lines from patches/series to be consistent with + how other arches were handled. + * debian/sysdeps/amd64.mk: symlink ld-linux with the same rune as Debian. + * Drop changes to debian/sysdeps/hurd.mk; Ubuntu doesn't build for Hurd. + * Remove debian/wrapper/objcopy; was dropped in Debian already. + * Add debian/ubuntu-changes trying to document all Debian -> Ubuntu + changes, albeit some remain obscure. + * Merge Debian 2.11.2-3. + - Drop new sparc/hurd/kfreebsd etc. patches from series. + - Replace any/submitted-etc-resolv.conf.diff by upstream version + patches/any/cvs-etc-resolv.conf.diff. + - Remaining changes are listed in debian/ubuntu-changes. + - Prefix "Embedded" to binary packages' short descriptions; + Debian #587586. + - debian/control.in/libc: conflicts with prelink (<< 0.0.20090925) as + earlier versions corrupts libc 2.11+ libraries; Debian #593966. + - Look for apache2.2-common instead of apache2-common in nsscheck; + Debian #586527. + - Always try to restart init when needed, and ignore the possible errors; + Debian #588922, #590175. + - Add localedata/locale-tt_RU.diff from upstream to fix the name of the + tt_RU.UTF-8@iqtelif locale; Debian #588478. + - Update Galician debconf translation, by Jorge Barreiro; Debian #592807. + * debian/control.in/opt, debian/control: Use ${binary:Version} instead of + ${Source-Version} for sparc flavors. + * Merge Debian 2.11.2-4. + - Drop new patches/hurd-i386/submitted-sched_param.diff from series. + - Remove manpages now provided by manpages-dev; Debian #595194); + LP: #669361. + * Merge Debian 2.11.2-5. + - Replace any/cvs-etc-resolv.conf.diff with previous version + any/submitted-etc-resolv.conf.diff; Debian #595269. + - Update any/cvs-sunrpc-license.diff from upstream. + * Merge Debian 2.11.2-6. + - Update Arabic debconf translation, by Ossama Khayat; Debian #596161. + - update-locale: if LANGUAGE is not compatible with the selected default + locale, emit a warning and disable it instead of failing; + Debian #596695. + - Add armhf support; Debian #596804. + - any/submitted-resolv.conf-thread.diff: new patch to correctly reload + resolv.conf for all threads; Debian #596499. + * Merge Debian 2.11.2-7. + - Update Portuguese debconf translation, by Pedro Ribeiro; Debian #597348. + - Don't add any/submitted-origin.diff as we have + any/dst-expansion-fix.diff already. + - Add any/cvs-audit-suid.diff to only load SUID audit objects in SUID + binaries. Fix CVE-2010-3847. Debian #600667. + - Update Catalan debconf translation, by Jordi Mallach; Debian #601085. + - Update Vietnamese debconf translation, by Clytie Siddall; + Debian #601531. + - Add arm/local-sigaction.diff to match sigaction with SA_RESTORER + behaviour with other architectures; Debian #595403. + + [ Matthias Klose ] + * any/cvs-at-pagesize.diff: Don't assume AT_PAGESIZE is always available. + LP: #672352. + * Remove po/header.pot file. LP: #670678. + * On ARM, use the atomic builtins provided by GCC (Ken Werner). LP: #643171. + * Build using GCC-4.5. + + [ Kees Cook ] + * Rearrange recent security patches: + - disable-ld_audit.diff: + - should live in patches/ubuntu for now. + - updated comments to include CVE-2010-3856. + - any/dst-expansion-fix.diff renamed to any/cvs-dst-expansion-fix.diff. + - series updated to move upstream fixes out of Ubuntu-specific section. + + -- Matthias Klose Tue, 21 Dec 2010 20:35:36 +0100 + +eglibc (2.12.1-0ubuntu10) maverick-proposed; urgency=low + + * any/cvs-at-pagesize.diff: Don't assume AT_PAGESIZE is always available. + LP: #672352. + * Fix issue #12159, x86-64 strchr propagation of search byte into all bytes + of SSE register. + * Fix issue12113, alignment of AVX safe area on x86_64. LP: #662511. + * Fix ifunc thunk for strspn on x86 in static libc. LP: #615953. + + -- Matthias Klose Sun, 14 Nov 2010 23:49:36 +0100 + +eglibc (2.12.1-0ubuntu9) maverick-proposed; urgency=low + + * debian/patches/any/cvs-getlogin_r-error-handling-1.patch, + debian/patches/any/cvs-getlogin_r-error-handling-2.patch, + debian/patches/any/cvs-getlogin_r-error-handling-3.patch: + Take upstream commits c8727fa6, 5305f9b0, d48b7607 from + release/2.12/master to fix a crash in getlogin(). (LP: #658907) + + -- Anders Kaseorg Mon, 01 Nov 2010 15:42:35 -0400 + +eglibc (2.12.1-0ubuntu8) maverick-security; urgency=low + + * SECURITY UPDATE: root escalation via LD_AUDIT DST expansion. + - debian/patches/any/dst-expansion-fix.diff: upstream fixes. + - CVE-2010-3847 + - debian/patches/any/disable-ld_audit.diff: turn off LD_AUDIT + for setuid binaries. + + -- Kees Cook Thu, 21 Oct 2010 12:45:24 -0700 + +eglibc (2.12.1-0ubuntu7) maverick-proposed; urgency=low + + * Fix issue #12092, strstr broken for some inputs on pre-SSE4 machines. + LP: #655463. + + -- Matthias Klose Thu, 07 Oct 2010 09:01:06 +0200 + +eglibc (2.12.1-0ubuntu6) maverick; urgency=low + + * Fix applying the local-syscall-mcount.diff. + + -- Matthias Klose Fri, 10 Sep 2010 18:47:31 +0200 + +eglibc (2.12.1-0ubuntu5) maverick; urgency=low + + [ Steve Langasek ] + * debian/patches/arm/local-syscall-mcount.diff: unset CALL_MCOUNT for + __libc_do_syscall. Thanks to Peter Pearse + . Closes LP: #605030. + + [ Matthias Klose ] + * Fix _FORITY_SOURCE version of longjmp for Linux/x86-64 (Chung-Lin Tang) + LP: #601030. + + -- Matthias Klose Fri, 10 Sep 2010 18:19:01 +0200 + +eglibc (2.12.1-0ubuntu4) maverick; urgency=low + + * Again, revert the upstream change from the last upload to + enable running java on the babbage boards. + + -- Matthias Klose Wed, 08 Sep 2010 00:02:11 +0200 + +eglibc (2.12.1-0ubuntu3) maverick; urgency=low + + * Reapply the upstream change (tested by Yao Qi). LP: #605042. + 2010-06-02 Kirill A. Shutemov + * elf/dl-reloc.c: Flush cache after solving TEXTRELs if arch + requires it. + + -- Matthias Klose Mon, 06 Sep 2010 12:33:53 +0200 + +eglibc (2.12.1-0ubuntu2) maverick; urgency=low + + [ Marcin Juszkiewicz ] + * Add build support to only build single stages. LP: #603498. + + -- Matthias Klose Mon, 23 Aug 2010 17:05:04 +0200 + +eglibc (2.12.1-0ubuntu1) maverick; urgency=low + + * Build eglibc_2.12.1.orig.tar.gz, based on 2.12 branch (r11211). + * Provide packaging rules in eglibc-source binary packag. LP: #609162. + * Don't patch the sources when PATCHED_SOURCES is set to `yes'. + LP: #612631. + + -- Matthias Klose Mon, 16 Aug 2010 09:55:40 +0200 + +eglibc (2.12-0ubuntu5) maverick; urgency=high + + * Revert upstream change: + 2010-06-02 Kirill A. Shutemov + * elf/dl-reloc.c: Flush cache after solving TEXTRELs if arch + requires it. + Breaks the OpenJDK ARM assembler interpreter. LP: #605042. + * expected-results-arm-linux-gnueabi-libc: Remove scanf15, scanf17 + and tst-eintr1, passing the tests on the buildds. + + -- Matthias Klose Wed, 14 Jul 2010 01:06:39 +0200 + +eglibc (2.12-0ubuntu4) maverick; urgency=low + + * Update to the eglibc 2.12 branch (r10817). + - patches/any/cvs-flush-cache-textrels.diff: Remove. + - patches/any/cvs-redirect-throw.diff: Remove. + * Merge with Debian (r4360, trunk, 2.11.2-2). + * On i386, don't build with -Wa,-mtune=i686. LP: #587186. + + -- Matthias Klose Mon, 28 Jun 2010 00:47:05 +0200 + +eglibc (2.12-0ubuntu3) maverick; urgency=low + + * Merge with Debian (r4318, trunk). + * Rebuild for i386. LP: #587186. + + -- Matthias Klose Fri, 04 Jun 2010 14:32:19 +0200 + +eglibc (2.12-0ubuntu2) maverick; urgency=low + + * Apply hppa/local-dlfptr.diff, containing architecture independent + chunks needed for ia64. + + -- Matthias Klose Sun, 30 May 2010 14:36:27 +0200 + +eglibc (2.12-0ubuntu1) maverick; urgency=low + + * Build eglibc_2.12.orig.tar.gz, based on 2.12 branch (r10591). + * Merge with Debian (r4299, trunk). + + -- Matthias Klose Sun, 30 May 2010 11:05:12 +0200 + +eglibc (2.12~20100519-0ubuntu1) maverick; urgency=low + + * Mark testcases as failing: + - ia64: tst-makecontext3.out. + - sparc: testgrp.out, tst-cancelx4.out, tst-cancelx5.out + + -- Matthias Klose Fri, 28 May 2010 14:19:11 +0200 + +eglibc (2.12~20100519-0ubuntu1~ppa1) maverick; urgency=low + + * Update to the eglibc 2.12 branch (r10508). + * Remove patches applied upstream: any/arm-syscalls-out-of-line.diff, + any/cvs-futimens.diff, any/cvs-malloc_info-init.diff, any/cvs-remove.diff, + any/cvs-resolv-bindv6only.diff, any/libc-arch-1.patch, + any/libc-arch-2.patch, any/libc-memcpy-1.patch, + any/libc-memcpy-ssse3-fixes.diff, any/local-ntp-update.diff, + any/submitted-stat-issock.diff, any/x86.git-*.patch, + localedata/fr_BE-first_weekday.diff, localedata/locale-es_CR.diff, + localedata/locale-et_EE.diff, localedata/submitted-pt_BR.diff, + sparc/cvs-sparcv9-memchr.diff, sparc/submitted-msgrcv.diff. + * Update patches: any/local-disable-test-tgmath2.diff, + any/local-ldso-disable-hwcap.diff, any/local-no-pagesize.diff, + any/submitted-futex_robust_pi.diff, any/submitted-longdouble.diff, + localedata/first_weekday.diff, localedata/locales-fr.diff, + localedata/sort-UTF8-first.diff. + * debian/shlibver: Bump to 2.12~ + * debian/symbols.wildcards: Update version. + * debian/debhelper.in/libc.{pre,post}inst: Restart services on update to 2.12. + + -- Matthias Klose Wed, 19 May 2010 12:21:27 +0200 + +eglibc (2.11.2-7) unstable; urgency=low + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-sendmsg-leak.diff: New upstream patch from Emilio + Pozuelo Monfort to fix a memory leak on the error path of sendmsg. + * patches/hurd-i386/local-sendmsg-SCM_RIGHTS.diff: New patch from Emilio + Pozuelo Monfort to implement SCM_RIGHTS in sendmsg(). + + [ Aurelien Jarno ] + * Update Portuguese debconf translation, by Pedro Ribeiro. Closes: #597348. + * Add any/submitted-origin.diff from Andreas Schwab to forbid the use + of $ORIGIN in privileged programs. Add any/cvs-audit-suid.diff to + only load SUID audit objects in SUID binaries. Fix CVE-2010-3847. + Closes: #600667. + * Update Catalan debconf translation, by Jordi Mallach. Closes: #601085. + * Update Vietnamese debconf translation, by Clytie Siddall. Closes: + #601531. + * Add arm/local-sigaction.diff to match sigaction with SA_RESTORER + behaviour with other architectures. Closes: #595403. + + -- Aurelien Jarno Sat, 30 Oct 2010 18:15:54 +0200 + +eglibc (2.11.2-6) unstable; urgency=low + + [ Aurelien Jarno ] + * Update Arabic debconf translation, by Ossama Khayat. Closes: #596161. + * libc6-i386: remplace <= breaks by << breaks now that the transitioned + version of the packages is known. Closes: #566720. + * kfreebsd/local-linuxthreads29.diff: correctly disable SO_CLOEXEC + support when it is not available. Closes: #596367. + * update-locale: if LANGUAGE is not compatible with the selected default + locale, emit a warning and disable it instead of failing. + Closes: #596695. + * Add armhf support. Closes: #596804. + * any/submitted-resolv.conf-thread.diff: new patch to correctly reload + resolv.conf for all threads. Closes: #596499. + + [ Samuel Thibault ] + * patches/hurd-i386/submitted-catch-signal.diff: New patch to fix + signal-catching functions. + + -- Aurelien Jarno Wed, 15 Sep 2010 01:53:09 +0200 + +eglibc (2.11.2-5) unstable; urgency=low + + [ Samuel Thibault ] + * mv patches/hurd-i386/{submitted,cvs}-sched_param.diff. + + [ Aurelien Jarno ] + * Replace any/cvs-etc-resolv.conf.diff by my previous version + any/submitted-etc-resolv.conf.diff. At least it really fixes the + original issue. Closes: bug#595269. + * testsuite/alpha: allow tst-timer4.out to fail as it fails on one of + the build daemon. + * Update any/cvs-sunrpc-license.diff from upstream. + + -- Aurelien Jarno Fri, 03 Sep 2010 19:16:09 +0200 + +eglibc (2.11.2-4) unstable; urgency=low + + [ Samuel Thibault ] + * patches/hurd-i386/submitted-sched_param.diff: New patch to permit other + headers to get a __sched_param structure. + + [ Aurelien Jarno ] + * Remove manpages now provided by manpages-dev (closes: bug#595194): + - pthread_kill_other_threads_np (3) + - pthread_sigmask (3) + + -- Aurelien Jarno Wed, 01 Sep 2010 23:15:05 +0200 + +eglibc (2.11.2-3) unstable; urgency=low + + [ Samuel Thibault ] + * testsuite-checking/expected-results-i486-gnu-libc: update. + * patches/hurd-i386/cvs-select.diff: New patch to fix select timeout + value. + * patches/hurd-i386/local-locarchive.diff: Extend to permit generating several + locales. + * mv patches/hurd-i386/{submitted,cvs}-ttyname.diff. + * mv patches/hurd-i386/{submitted,cvs}-getnprocs.diff. + * patches/hurd-i386/local-i686.diff: New patch to fix i686 build. + * patches/hurd-i386/local-no-hp-timing.diff: New patch to disable i686 HP + timing support. + * testsuite-checking/expected-results-i686-{i386,i686,xen}: New + expected results. + * debian/control, debian/control.in/libc, debian/control/opt, + debian/sysdeps/hurd-i386.mk: Add lib0.3-{i686,xen} variants. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 3156 (from glibc-bsd). + Closes: #522698. + * Add kfreebsd/local-grantpt.diff to handle EINTR returned by waitpid. + It fixes konsole blank (terminal) display on kfreebsd-*. Closes: #573063. + + [ Clint Adams ] + * Reflect EGLIBC in binary package short descriptions. closes: #587586. + + [ Finn Thain ] + * Backport m68k TLS from version 2.12. Closes: #586005. + + [ Aurelien Jarno ] + * Always try to restart init when needed, and ignore the possible errors. + Closes: #588922, 590175. + * Look for apache2.2-common instead of apache2-common in nsscheck. + Closes: #586527. + * Update Galician debconf translation, by Jorge Barreiro. Closes: #592807. + * Replace any/submitted-etc-resolv.conf.diff by upstream version + patches/any/cvs-etc-resolv.conf.diff. + * Add mips/cvs-non-pic-n32-64-syscall.diff from upstream to fix non-PIC + syscall on MIPS n32 and 64 ABI. + * debian/control.in/libc: conflicts with prelink (<= 0.0.20090311-1). + Earlier versions corrupts libc 2.11 libraries. Closes: #593966. + * Add alpha/submitted-epoll.diff and sparc/submitted-epoll.diff to fix + epoll_create1() on Alpha and SPARC. Closes: #576826. + * Remove patches/alpha/cvs-longjmp-chk.diff and restore + patches/alpha/local-longjmp-chk.diff as the upstream version causes + regressions. + * Add localedata/locale-tt_RU.diff from upstream to fix the name of the + tt_RU.UTF-8@iqtelif locale. Closes: #588478. + * Add any/cvs-sunrpc-license.diff from upstream to fix the license of + Sun RPC: contrary to what Simon Phipps announced on his blog, and + according to the lawyers, the copy in glibc wasn't contained in the + agreement from February, 2009. In August, 2010, Oracle confirmed that + the code has been relicensed under BSD. Update debian/copyright + accordingly. + * Disable any/cvs-flush-cache-textrels.diff to workaround a possible + CPU or kernel bug. Closes: #594807. + + -- Aurelien Jarno Wed, 01 Sep 2010 11:46:14 +0200 + +eglibc (2.11.2-2) unstable; urgency=medium + + [ Aurelien Jarno ] + * control.in/libc: update the Conflicts on binutils to (<< 2.20.1-1) + and add a Conflicts on binutils-gold (<< 2.20.1-11). Closes: #585937. + * Replace patches/alpha/local-longjmp-chk.diff by upstream version + patches/alpha/cvs-longjmp-chk.diff. + * Add patches/any/cvs-redirect-throw.diff to fix some header files + with regard to C++. + * Add patches/any/cvs-flush-cache-textrels.diff to fix random crashes + on ARM, if the executable or shared library has TEXTREL. + * Add patches/any/cvs-__block.diff from upstream to not conflict with + clang. + * script.in/nohwcap.sh: consider all packages not in status "n" (not + installed) and not in status "c" (conf-files) as installed. Closes: + bug#586241. + + [ Samuel Thibault ] + * patches/hurd-i386/local-pthread_posix-option.diff: Avoid letting glibc try + to install its own headers for libpthread. + + [ Carlos O'Donell] + * Add patches/hppa/cvs-vfork.diff to fix stack frame creating during + vfork in multithreaded environments. + + -- Aurelien Jarno Thu, 24 Jun 2010 21:03:55 +0200 + +eglibc (2.11.2-1) unstable; urgency=low + + * New upstream stable release: + - Remove debian/patches/amd64/submitted-cpuid.diff (merged). + - Remove debian/patches/sh4/cvs-register_dump.diff (merged). + + [ Samuel Thibault ] + * Add patches/hurd-i386/local-mkdir_root.diff to fix busybox' mkdir -p. + + [ Aurelien Jarno ] + * Danish debconf translation update from Joe Hansen. Closes: #585548. + * Add patches/localedata/submitted-translit-colon.diff to add + transliteration support for â‚¡ sign. Closes: #585727. + * control.in/libc: add a Breaks: on locales (<< 2.11), locales-all + (<< 2.11). Closes: bug#585737. + * Add patches/any/submitted-group_member.diff to fix an off-by-one error + in group_member(). Closes: bug#570047. + * Update local/manpages/getconf.1. Closes: bug#576691. + + -- Aurelien Jarno Sun, 13 Jun 2010 23:22:29 +0200 + +eglibc (2.11.1-3) unstable; urgency=low + + [ Samuel Thibault ] + * Add patches/hurd-i386/cvs-linkat.diff to fix new coreutils' ln. + * Add patches/hurd-i386/submitted-ttyname.diff to fix io/tst-ttyname_r, + marked as such in testsuite-checking/expected-results-i486-gnu-libc. + * Restore patches/hurd-i386/submitted-getnprocs.diff which got lost during + the 2.11 merge. + + [ Aurelien Jarno ] + * Add patches/i386/local-cpuid-level2.diff to not trigger an abort + when an i586 Intel CPU is running the i686 library, as valgrind does. + Closes: bug#584748. + * mips testsuite: allow failure of tst-tls3 as it is not a regression. + * Add patches/any/submitted-string2-strcmp.diff to fix warnings in the + testsuite on armel. + * Add patches/alpha/submitted-syscall.diff from Mike Hommey to add support + for 6th argument system calls on alpha. Closes: bug#583911. + * Temporarily add patches/i386/local-pthread_cond_wait.diff to use the C + version of pthread_cond_wait() which uses cleanup functions to reacquire + the mutex on cancellation (instead of unwinding for the assembly + version). Closes: bug#551903. + + -- Aurelien Jarno Tue, 08 Jun 2010 10:05:49 +0200 + +eglibc (2.11.1-2) unstable; urgency=low + + [ Aurelien Jarno] + * nscd.init: don't use and absolute path to call start-stop-daemon, the + PATH variable already take care of that. + * check-execstack.out is a new test, therefore not a regression. Mark it + as failing in expected-results-powerpc64-linux-gnu-ppc64. + * Update tst-ttyname_r.out error value in expected-results-i486-gnu-libc + as part of the test is now passing. + * Add patches/mips/cvs-mips-atomic_h.diff to fix atomic issues on MIPS. + * Add patches/amd64/submitted-cpuid.diff to fix properly check CPU + family and model. + * sysdeps/i386.mk, control.in/main: switch i386 to gcc-4.4. Closes: + bug#583858. + + -- Aurelien Jarno Tue, 01 Jun 2010 05:50:51 +0200 + +eglibc (2.11.1-1) unstable; urgency=low + + [ Clint Adams ] + * New upstream release: + - Fixes a house of mind attack. Closes: bug#568488. + - Add the fallocate64() syscall. Closes: bug#568924. + - Add RES_USE_DNSSEC support. Closes: bug#569592. + - Don't abort in getifaddrs. Closes: bug#582383. + - Update debian/patches/all/local-pthread-manpages.diff + - Remove debian/patches/alpha/submitted-getsysstats.diff (merged) + - Remove debian/patches/alpha/submitted-includes.diff (merged) + - Remove debian/patches/alpha/submitted-lowlevellock.diff (merged) + - Remove debian/patches/alpha/submitted-procfs_h.diff (merged) + - Remove debian/patches/any/cvs-broken-dns.diff (merged) + - Remove debian/patches/any/cvs-getutmpx-compat.diff (merged) + - Remove debian/patches/any/cvs-ksm.diff (merged) + - Remove debian/patches/any/cvs-malloc_info-output.diff (merged) + - Remove debian/patches/any/cvs-nis-not-configured.diff (merged) + - Remove debian/patches/any/cvs-nptl-init.diff (merged) + - Remove debian/patches/any/cvs-resolv-edns0.diff (merged) + - Remove debian/patches/any/cvs-resolv-init.diff (merged) + - Remove debian/patches/any/cvs-resolv-uninitialized.diff (merged) + - Remove debian/patches/any/cvs-resolv-v6mapped.diff (merged) + - Remove debian/patches/any/cvs-sched_h.diff (merged) + - Remove debian/patches/any/local-dynamic-resolvconf.diff (merged) + - Update debian/patches/any/local-libgcc-compat-main.diff + - Remove debian/patches/any/submitted-confname.h.diff (merged) + - Remove debian/patches/any/submitted-getent-gshadow.diff (merged) + - Remove debian/patches/any/submitted-getaddrinfo-nodata.diff (merged) + - Remove debian/patches/any/submitted-gethostbyname3.diff (merged) + - Update debian/patches/any/submitted-missing-etc-hosts.diff. + - Remove debian/patches/arm/cvs-setjmp-longjmp-fpu.diff (merged) + - Update debian/patches/hppa/cvs-nptl-compat.diff. + - Update debian/patches/hppa/local-stack-grows-up.diff from + Carlos O'Donell. + - Remove debian/patches/hppa/submitted-pie.diff (merged) + - Remove debian/patches/hppa/submitted-sock_nonblock.diff (merged) + - Update debian/patches/hurd-i386/cvs-setsid.diff. + - Remove debian/patches/hurd-i386/cvs-termios-IXANY.patch (merged) + - Remove debian/patches/hurd-i386/submitted-getnprocs.diff (merged) + - Update debian/patches/hurd-i386/submitted-readlinkat.diff + - Remove debian/patches/ia64/cvs-memchr.diff (merged) + - Remove debian/patches/ia64/submitted-memchr.diff (merged) + - Remove debian/patches/ia64/submitted-siginfo.diff (merged) + - Update debian/patches/kfreebsd/local-readdir_r.diff. + - Remove debian/patches/locale/cvs-C-first_weekday.diff (merged) + - Update debian/patches/localedata/first_weekday.diff + - Update debian/patches/localedata/tailor-iso14651_t1.diff + - Remove debian/patches/mips/local-lazy-eval.diff (obsolete) + - Remove debian/patches/s390/submitted-siginfo.diff (merged) + - testsuite-checking/expected-results-ia64-linux-gnu-libc: update + - Update testsuite-checking/expected-results-sparc-linux-gnu-libc + - Update testsuite-checking/expected-results-sparcv9b-linux-gnu-sparcv9b + + * Add debian/patches/alpha/local-fcntl_h.diff. + * Add debian/patches/ia64/local-dlfptr.diff and + debian/patches/hppa/local-dlfptr.diff from Carlos O'Donnell. + * Add debian/patches/localedata/locale-hsb_DE.diff + + [ Aurelien Jarno ] + * Enable multi-arch. + * kfreebsd/local-sysdeps.diff: update to revision 3039 (from glibc-bsd). + * Add debian/patches/alpha/local-longjmp-chk.diff and + debian/patches/alpha/cvs-timer_settime.diff to fix FTBFS on alpha, and + debian/patches/alpha/local-lowlevellock.diff to fix the testsuite. + * Add debian/patches/mips/local-lowlevellock.diff to fix the testsuite + on mips. + * Re-enable the testsuite on mips/mipsel build daemons. + * Add debian/patches/arm/local-atomic.diff and + debian/patches/arm/local-lowlevellock.diff to fix the testsuite on arm. + * Add debian/patches/hppa/local-longjmp-chk.diff to fix FTBFS on hppa. + * Add debian/patches/hppa/local-lowlevellock.diff to fix the testsuite + on hppa. + * Add debian/patches/s390/cvs-makecontext.diff from upstream to fix + makecontext() on s390. + * Replace debian/patches/submitted/cvs-stat-issock.diff by the upstream patch + debian/patches/any/cvs-stat-issock.diff. + * Explictely call /sbin/start-stop-daemon in nscd.init. Closes: bug#575404. + * Add debian/patches/any/cvs-getaddrinfo.diff from upstream to not abort + the getaddrinfo loop on the first successful. + * Add debian/patches/any/cvs-umount-nofollow.diff from upstream to define + UMOUNT_NOFOLLOW. + * Add debian/patches/any/cvs-glob.diff from upstream to fix glob() with empty + pattern. + * Add debian/patches/submitted-tst-audit6-avx.diff to skip AVX tests if if + AVX is not available. + * Allow failures of the testsuite on HPPA until bugs are fixed: + - tstdiomisc.out (due to bug #582787 on gcc-4.4) + - tst-fork1.out (due to bug #561203 on linux-2.6) + * Add debian/patches/sh4/cvs-register_dump.diff from upstream to fix + iov[] size register-dump.h. + * Add debian/patches/hurd-i386/submitted-regex_internal.diff to fix FTBFS on + hurd-i386. + + [ Samuel Thibault ] + * debian/patches/hurd-i386/submitted-rtld_lock_recursive.diff: New patch to + fix elf/ build on hurd-i386. + * debian/patches/hurd-i386/local-longjmp_chk.diff: New patch to fix + debug/____longjmp_chk.S build on hurd-i386. + * Update debian/patches/hurd-i386/local-pthread.diff. + * Update debian/testsuite-checking/expected-results-i486-gnu-libc. + + [ Petr Salinger] + * define __rtld_lock_initialize also in linuxthreads + variant (enhance local-linuxthreads-weak.diff). + * allow failure of tst-longjmp_chk.out on GNU/kFreeBSD + * Add kfreebsd/local-dosavesse.diff, which does not work, + so rather use also added kfreebsd/local-nosavesse.diff + + -- Aurelien Jarno Sat, 29 May 2010 14:31:50 +0200 + +eglibc (2.11.1-0ubuntu9) maverick; urgency=low + + * Merge with Debian (r4267, trunk). + * Update to the eglibc 2.11 branch (r10490). + - patches/ia64/submitted-memchr.diff, patches/any/cvs-readdir_r.diff, + patches/any/submitted-confname.h.diff: Remove, applied upstream. + * Stop building libc6-i686 on architecture i386. + * Disable patches/any/arm-syscalls-out-of-line.diff to fix build + failure on armel. + + -- Matthias Klose Wed, 19 May 2010 12:21:27 +0200 + +eglibc (2.11.1-0ubuntu8) maverick; urgency=low + + * Apply from the 2.11-x86 branch: + - x86-64 SSE4 optimized memcmp. + * [armel] make syscalls out-of-line to improve debugging. LP: #571647 . + + -- Matthias Klose Sat, 01 May 2010 14:30:23 +0200 + +eglibc (2.11.1-0ubuntu7) lucid; urgency=low + + * Fix logic that tests if gdm needs a restart or a reload + to handle both the initscript and upstart cases. This fixes + a gdm restart during a hardy to lucid upgrade (LP: #568292) + + -- Michael Vogt Thu, 22 Apr 2010 10:40:19 +0200 + +eglibc (2.11.1-0ubuntu6) lucid; urgency=low + + [ Kees Cook ] + * [BZ #11333], Handle unnecessary padding in getdents64. LP: #392501. + + [ Matthias Klose ] + * Apply from the 2.11-x86 branch: + - Fix bugs in strcmp-sse4.S and strcmp-ssse3.S (H.J. Lu). LP: #563291. + - Fix bugs in memcpy-ssse3. LP: #560135. + * Assign global scope to RFC 1918 addresses in getaddrinfo(). Thanks + Tore Anderson. LP: #555210. + * Re-enable the local-ipv6-lookup patch. Addresses #417757. + + -- Matthias Klose Sun, 18 Apr 2010 00:05:05 +0200 + +eglibc (2.11.1-0ubuntu5) lucid; urgency=low + + * Apply from the 2.11-x86 branch: + - Append -U__i686 in ASFLAGS on x86. + - Backport 32bit SSSE3/SSE4 optimized memcmp and strcmp from trunk. + - Correct unwind info in strcmp-sse4.S. + - Fix sysdeps/i386/i686/multiarch/memcmp-ssse3.S. + * Extend logic to restart upstart based services on NSS upgrade. + LP: #505838. + + -- Matthias Klose Sun, 21 Mar 2010 15:11:00 +0100 + +eglibc (2.11.1-0ubuntu4) lucid; urgency=low + + * debian/patches/any/submitted-nis-shadow.diff: updated to fix + incorrect password overwriting (LP: #526530). + * debian/control.in/main: update already uploaded g++ version Depend. + + -- Kees Cook Wed, 03 Mar 2010 11:48:30 -0800 + +eglibc (2.11.1-0ubuntu3) lucid; urgency=low + + * Merge with Debian (r4205, trunk). + * Merge from debian-2.11 branch: + - Add debian/patches/arm/local-atomic.diff to fix the testsuite on arm. + + -- Matthias Klose Fri, 26 Feb 2010 05:14:17 +0100 + +eglibc (2.11.1-0ubuntu2) lucid; urgency=low + + * Update to the eglibc 2.11 branch (r9744). + + -- Matthias Klose Wed, 27 Jan 2010 11:40:07 +0100 + +eglibc (2.11.1-0ubuntu1) lucid; urgency=low + + * Build package as eglibc-2.11.1 (based on r9672). + * Merge with Debian (r4096, trunk). + + -- Matthias Klose Mon, 18 Jan 2010 17:48:39 +0100 + +eglibc (2.11~20100104-0ubuntu5) lucid; urgency=low + + * debian/*symbols*: Replace the upper dependency on (<< 2.11) with (<< 2.12). + dpkg-gensymbols didn't complain about missing symbols in earlier uploads. + LP: #508702. + * Add expected testsuite failures: + - tst-cputimer1.out (powerpc 64bit). + + -- Matthias Klose Sun, 17 Jan 2010 15:24:48 +0100 + +eglibc (2.11~20100104-0ubuntu4) lucid; urgency=low + + * Still build the package as a 2.11 pre-release; packages like + libglib2.0-0, libnih1 and upstart have 'libc6 (<< 2.11)' dependencies, + for whatever reason, but they already did fail to see the pre-release. + See LP: #508702. + * Backport from the trunk: Optimize 32bit memset/memcpy with SSE2/SSSE3 + (H.J. Lu). + + -- Matthias Klose Sun, 17 Jan 2010 12:42:12 +0100 + +eglibc (2.11~20100104-0ubuntu3) lucid; urgency=low + + * Upgrade the NSS min compat version to 2.11 in the maintainer scripts, to + force maintainer restarts. LP: #504847. + * debian/control: point Vcs-Bzr at a branch whose access rights match those + of the archive. + + -- Steve Langasek Fri, 08 Jan 2010 19:34:19 +0000 + +eglibc (2.11~20100104-0ubuntu2) lucid; urgency=low + + [ Matthias Klose ] + * Mark test-fenv.out as failing on powerpc again. + * Mark tst-backtrace2.out, tst-longjmp_chk2.out as failing on sparc64 + again. + * Call locale-gen --purge when updating from eglibc-2.10.x. LP: #504198. + * Merge with Debian (r4063, trunk, 2.10.2-4). + + [ Kees Cook ] + * debian/patches/ubuntu/*: update patch tags on patches recommended + to Debian (Debian bug 563637). + + -- Matthias Klose Thu, 07 Jan 2010 13:32:10 +0100 + +eglibc (2.11~20100104-0ubuntu1) lucid; urgency=low + + * Remove expected test failures: + - test-fenv.out (powerpc). + * Add expected testsuite failures: + - tst-cputimer1.out (powerpc 32bit), check-execstack.out (powerpc 64bit). + + -- Matthias Klose Wed, 06 Jan 2010 12:52:31 +0100 + +eglibc (2.11~20100104-0ubuntu1~ppa1) lucid; urgency=low + + * Test build, trunk 20100104 (r9600). + * Merge with Debian (r4046, trunk). + * Merge with Ubuntu 2.10.2-3ubuntu1. + * Don't apply the any/cvs-futimens.diff patch on powerpc. The powerpc + buildds still run linux-2.6.15. + + -- Matthias Klose Tue, 05 Jan 2010 10:45:37 +0100 + +eglibc (2.11~20091226-0ubuntu1~ppa3) lucid; urgency=low + + * Remove expected test failures: + - globtest.out (ix86). User and default group must exist in + /etc/{passwd,group}. + - tst-cputimer1.out, tst-nanosleep.out (powerpc). + - tst-cancel1.out, test-memchr.out (sparc, sparc64, sparcv9b). + * Add expected testsuite failures: + - tst-backtrace2.out, tst-longjmp_chk2.out (sparc64, sparcv9b). + + -- Matthias Klose Mon, 28 Dec 2009 01:44:39 +0100 + +eglibc (2.11~20091226-0ubuntu1~ppa2) lucid; urgency=low + + * ia64/submitted-siginfo.diff, s390/submitted-siginfo.diff: Remove, + applied upstream. + + -- Matthias Klose Sun, 27 Dec 2009 01:01:22 +0100 + +eglibc (2.11~20091226-0ubuntu1~ppa1) lucid; urgency=low + + * Merge with Debian (r4035, trunk). + * Test build, trunk 20091226 (r9539). + + -- Matthias Klose Sat, 26 Dec 2009 11:47:39 +0100 + +eglibc (2.11~20091201-0ubuntu1~ppa1) lucid; urgency=low + + * Test build, trunk 20091201 (r9153). + + -- Matthias Klose Tue, 01 Dec 2009 16:13:20 +0100 + +eglibc (2.11~20091028-0ubuntu1~ppa1) lucid; urgency=low + + * Test build, trunk 20091028 (r9153). + * Configure with --enable-multi-arch on ix86. + + -- Matthias Klose Wed, 28 Oct 2009 17:54:06 +0100 + +eglibc (2.10.2-9) unstable; urgency=low + + [ Aurelien Jarno ] + * Add powerpcspe port support. Closes: #579778. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 3038 (from glibc-bsd). + Closes: #581545. + + [ Aurelien Jarno ] + * debian/control.in/libc: don't make libc0.1/0.3/6/6.1 depends on + ${misc:Depends} as suggested by lintian, as it is turned out into a + debconf depends. Closes: #581835. + * debian/debhelper.in/nscd.init: stop supporting the reload argument. + Closes: #578870. + * debian/script.in/nsscheck.sh: correctly detect stopped and running + services. Closes: #573247, #575868. + * debian/patches/mips/submitted-rld_map.diff: don't segfault for MIPS + binaries with RLD_MAP set to 0. Closes: #579917. + * Add debian/source/format and debian/source/lintian-overrides files. + + -- Aurelien Jarno Thu, 20 May 2010 12:09:58 +0200 + +eglibc (2.10.2-8) unstable; urgency=low + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 3036 (from glibc-bsd). + + [ Clint Adams ] + * Spanish debconf translation update from Omar Campagne Polaino. + closes: #579351. + * Add patches/arm/cvs-setjmp-longjmp-fpu.diff. closes: #580529 + ("setjmp/longjmp broken on ARM w/ FPU"). + + -- Clint Adams Tue, 27 Apr 2010 20:33:40 -0400 + +eglibc (2.10.2-7) unstable; urgency=low + + [ Samuel Thibault ] + * patches/hurd-i386/local-pthread.diff: Refresh patch. + * Update debian/testsuite-checking/expected-results-i486-gnu-libc. + * patches/hurd-i386/cvs-setsid.diff: Update to git version. + * patches/hurd-i386/local-locarchive.diff: New patch to fix installation of + locales-all. + * patches/hurd-i386/cvs-remove.diff: New upstream patch to fix remove() + on directory on non-Linux ports. + + [ Aurelien Jarno ] + * debian/control.in/*: add ${misc:Depends} to all binary packages. + * debian/*symbols*: simplify symbol files by using the new #PACKAGE# + feature. + * Bump to Standards-Version 3.8.4. + * Update patches/alpha/submitted-sock_nonblock.diff to also fix + SOCK_CLOEXEC. Closes: #569646. + * Update patches/hppa/submitted-sock_nonblock.diff to also fix + SOCK_CLOEXEC. + * Add patches/any/submitted-stat-issock.diff to define the S_ISSOCK + macro starting with POSIX 2001. Closes: #569517. + * scripts.in/nsscheck.sh: remove non-breaking space. Closes: #569701. + * rules.d/debhelper.mk: remove obsolete comment. Closes: #570946. + * Replace patches/sparc/local-sparcv9-memchr.diff by + patches/sparc/cvs-sparcv9-memchr.diff. + * Add patches/sparc/submitted-msgrcv.diff to fix msgrcv() on sparc64, + and with it fakeroot. + * Add patches/any/submitted-nptl-invalid-td.patch to also catch + uninitialized thread descriptors in INVALID_TD_P macro. Closes: + #571639. + * Fix lang_ab field in es_CR locales. Closes: #571755. + + [ Petr Salinger] + * kfreebsd/local-sysdeps.diff: update to revision 3034 (from glibc-bsd). + * any/local-linuxthreads-stacksize.diff: New patch to restrict + max stack size in threads + + [ Clint Adams ] + * Add any/local-gai-rfc1918-scope-global.patch. closes: #468801. + + -- Clint Adams Thu, 22 Apr 2010 09:38:27 -0400 + +eglibc (2.10.2-6) unstable; urgency=low + + [ Aurelien Jarno ] + * kfreebsd/local-sysdeps.diff: update to revision 2957 (from glibc-bsd). + * Don't run the testsuite in parallel, as it sometimes causes some failures + in some tests. + * Add patches/any/cvs-malloc_info-init.diff to fix malloc_info() with no + malloc() done. Closes: #562679. + * Add patches/sh4/submitted-set_fpscr.diff to add __set_fpscr() prototype. + Closes: #565369. + * debian/rules.d/build.mk: Add --with-pkgversion and --with-bugurl + arguments. + * Add patches/ia64/submitted-memchr.diff to fix memchr() overshoot on ia64. + Closes: #563882 + * Add patches/any/submitted-leading-zero-stack-guard.diff and + patches/any/submitted-stack-guard-quick-randomization.diff from Ubuntu and + Fedora to improve stack randomisation. Closes: #568488. + * Update es_CR locale from Marcelo Magallon. Closes: #567351. + * debian/script.in/nsscheck.sh: Only restart services that are currently + running. Closes: #528755. + * Move locales and locales-all to section localization. Closes: #568753. + + [ Samuel Thibault ] + * patches/hurd-i386/local-pthread.diff: New hurd-only patch to provide + LIBPTHREAD_SO and disable nscd. + * patches/hurd-i386/local-pthread_posix-option.diff: Tell glibc Makefiles that + we have a libpthread. + * testsuite-checking/expected-results-i486-linux-gnu-libc: Update results. + * patches/hurd-i386/submitted-posix_opt.h.diff: Update. + * patches/hurd-i386/submitted-sysvshm.diff: Resync. + * patches/hurd-i386/submitted-net.diff: New patch to factorize net/ files + between Linux and Hurd. + * patches/hurd-i386/submitted-getnprocs.diff: New patch to add get_nprocs() + and such weak aliases. + + -- Aurelien Jarno Sun, 07 Feb 2010 16:54:24 +0100 + +eglibc (2.10.2-5) unstable; urgency=low + + [ Petr Salinger] + * Update kfreebsd/local-no-SOCK_NONBLOCK.diff to cvs-resolv-* changes. + Move it into any/local-no-SOCK_NONBLOCK.diff, as it is used also on hurd. + Closes: #564008. + + [ Samuel Thibault ] + * patches/hurd-i386/submitted-posix_opt.h.diff: New patch to update standard + macros in posix_opt.h. + * patches/hurd-i386/local-pthread_posix-option.diff: Refresh and update + standard macros in posix_opt.h. + * patches/hurd-i386/submitted-sysvshm.diff: Add standard macro _XOPEN_SHM in + posix_opt.h. + * patches/hurd-i386/local-tls-support.diff: Use kern_return_t instead of + error_t to avoid a dependency on a GNU-specific type. + * patches/hurd-i386/submitted-getcwd.diff: renamed to cvs-getcwd.diff since + merged upstream. + * patches/hurd-i386/submitted-setsid.diff: renamed to cvs-setsid.diff since + merged upstream. + + [ Aurelien Jarno ] + * Fix sparc64 build. + + -- Aurelien Jarno Thu, 07 Jan 2010 20:57:49 +0100 + +eglibc (2.10.2-4) unstable; urgency=low + + [ Samuel Thibault ] + * testsuite-checking/expected-results-i486-linux-gnu-libc: Add + tst-atime.out failure. + + [ Aurelien Jarno ] + * Also build a libc6-sparcv9b package on sparc64. + * Disable debian/patches/any/cvs-futimens.diff. Addresses: #563726, + #563754. + * Add debian/patches/localedata/locale-et_EE.diff to change weekday + and workday to Monday. Closes: #563636. + * Add debian/patches/any/cvs-resolv-init.diff to fix mixing IPv4 and + IPv6 name server in resolv.conf. + * Add debian/patches/any/cvs-resolv-uninitialized.diff to fix an + uninitialized variable in resolv code. + * Add debian/patches/any/cvs-resolv-bindv6only.diff to not use + IPV4-mapped addresses in the resolver code. Closes: #563552. + * Add debian/patches/any/cvs-resolv-edns0.diff to handle overly large + answer buffers in resolver. + * Add debian/patches/any/cvs-resolv-v6mapped.diff to fix lookup failure + with IPv6 mapping enabled and big answers. Closes: #558984. + * Add debian/patches/any/submitted-nis-shadow.diff to remove encrypted + passwords from passwd entries, and add them in shadow entries. + Closes: #560333. + + [ Petr Salinger] + * kfreebsd/local-sysdeps.diff: update to revision 2907 (from glibc-bsd). + + -- Aurelien Jarno Wed, 06 Jan 2010 22:18:19 +0100 + +eglibc (2.10.2-3ubuntu1) lucid; urgency=low + + * Merge with Debian (r4046, trunk). + + -- Matthias Klose Mon, 04 Jan 2010 10:10:22 +0100 + +eglibc (2.10.2-3) unstable; urgency=low + + [ Aurelien Jarno ] + * Update from the latest SVN, branch eglibc-2_11: + - Remove any/cvs-malloc-check.diff (merged upstream). + * debhelper.in/libc.postinst: also restart incron on upgrade. Closes: + #557801. + * debhelper.in/libc.postinst: restart the services instead of stopping + them and then starting them again. Closes: #211784. + * Use gcc/g++-4.4 on hppa, hurd-i386, mips and mipsel. + * Mention EGLIBC in packages description. Closes: #559121. + * Add support for sparc64 architecture. + * debian/sysdeps/mips.mk, debian/sysdeps/mipsel.mk: remove hack to support + buildds kernels now that they have been upgraded. + * debian/control.in/main: add a Homepage: pseudo header. Closes: #561034. + * debian/local/manpages/gai.conf.5: fix a typo. Closes: #560144. + * Replace debian/any/submitted-nis-not-configured.diff by upstream patch + debian/any/cvs-nis-not-configured.diff. + * Add debian/patches/any/local-ntp-update.diff to partially update the NTP + API, backported from upstream. Closes: #559482. + * Add debian/patches/any/cvs-malloc_info-output.diff from upstream to fix + malloc_info() output. Closes: #562678. + * Add debian/patches/any/cvs-futimens.diff from upstream to correctly handle + AT_FDCWD in futimens(). + + [ Samuel Thibault ] + * testsuite-checking/expected-results-i486-linux-gnu-libc: Add hurd-i386 + testsuite results. + * sysdeps/hurd.mk: Enable testsuite. + * patches/hurd-i386/submitted-getcwd.diff: Add patch to fix duplicate port + deallocation. + * patches/hurd-i386/submitted-setsid.diff: Add patch to fix bogus port + deallocation. + + [ Petr Salinger] + * kfreebsd/local-sysdeps.diff: update to revision 2904 (from glibc-bsd). + + -- Aurelien Jarno Sat, 02 Jan 2010 13:07:44 +0100 + +eglibc (2.10.2-2ubuntu4) lucid; urgency=low + + * Update to r9527 from the eglibc-2.10 branch. + - LP: #425723. + * Merge with Debian (r4032, trunk). + * Rebuild to link with --hash-style=both on armel. + + -- Matthias Klose Wed, 23 Dec 2009 21:40:58 +0100 + +eglibc (2.10.2-2ubuntu3) lucid; urgency=low + + * Mark tst-eintr1 as failing on armel; fails on the buildd with -mthumb, + not reproducible with a local build. + + -- Matthias Klose Mon, 14 Dec 2009 17:34:20 +0100 + +eglibc (2.10.2-2ubuntu2) lucid; urgency=low + + * glibc-doc: Fix installation of manual files. + + -- Matthias Klose Mon, 30 Nov 2009 16:33:20 +0100 + +eglibc (2.10.2-2ubuntu1) lucid; urgency=low + + * Merge with Debian (r4021, trunk). + + -- Matthias Klose Sat, 28 Nov 2009 17:48:13 +0100 + +eglibc (2.10.2-2) unstable; urgency=low + + [ Carlos O'Donell] + * debian/patches/hppa/cvs-nptl-compat.diff: new version to fix + pthread structures alignment on hppa. + + [ Aurelien Jarno ] + * debian/control: bump libc-bin breaks on libc0.1/0.3/6/6.1 to (<< 2.10). + Closes: #556945. + * patches/localedata/submitted-pt_BR.diff: new patch to fix the thousand + separator on pt_BR locale. Closes: #474479. + * debhelper.in/locales.postinst: if an selected entry is present more than + once, only uncomment the first one. Closes: #529368. + * patches/any/submitted-gethostbyname3.diff: return an error if the + nameserver timeouts. Closes: #499781. + + -- Aurelien Jarno Tue, 24 Nov 2009 06:12:57 +0100 + +eglibc (2.10.2-1) unstable; urgency=low + + [ Aurelien Jarno ] + * New upstream minor release. + - fix build timeout on SH4. Closes: #552407. + - disabled patches/svn-updates.diff. + - remove patches/powerpc/cvs-readahead.diff (merged). + - remove patches/any/submitted-libgcc_s.so.diff (merged). + - remove patches/any/cvs-preadv-pwritev.diff (merged). + - remove patches/any/cvs-getaddrinfo-nss-notfound.diff (merged). + * patches/ia64/cvs-memchr.diff: new patch from upstream replacing + patches/ia64/submitted-memchr.diff. + * patches/any/cvs-malloc-check.diff: new patch from upstream to fix bugs + with MALLOC_CHECK. Closes: #557158. + * patches/any/cvs-ksm.diff: add support to KSM, define MADV_MERGEABLE and + MADV_UNMERGEABLE. Closes: #556631. + * Replace patches/locale/fix-C-first_weekday.diff by upstream version + patches/locale/cvs-C-first_weekday.diff. Closes: #556884. + * rules.d/debhelper.mk: don't use --strip-unneeded when stripping .o + objects. Closes: #556951. + * patches/any/submitted-bits-fcntl_h-at.diff: new patch to move AT_* + constants from to . Closes: #555303. + * Replace patches/any/submitted-sched_h.2.diff by upstream version + patches/any/cvs-sched_h.diff. + * Use gcc/g++-4.4 on sparc. + * patches/any/submitted-nis-not-configured.diff: fix getaddrinfo() if + NIS is not configured. Fixes CVE-2010-0015. Closes: #556600. + * patches/any/submitted-getaddrinfo-nodata.diff: new patch from Michael + Stone to fix getaddrinfo() if a plugin returns TRY_AGAIN or NO_DATA. + Closes: #557596. + + [ Carlos O'Donell] + * patches/hppa/local-stack-grows-up.diff: new version. + + [ Petr Salinger] + * kfreebsd/local-sysdeps.diff: update to revision 2859 (from glibc-bsd). + Closes: #557248. + + -- Aurelien Jarno Mon, 23 Nov 2009 09:46:23 +0100 + +eglibc (2.10.1-7) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/all/local-ldd.diff: new patch to handle the case where ld.so is + not executable (wrong architecture), and always trace dynamic library + dependencies through the dynamic linker. Closes: #502189, + #552518, #499016. + * Strip *.o files manually (dh_strip does not do it) to prevent + leakage of the build directory (has been lost in a merge). + * script.in/nsscheck.sh: fix call to invoke-rc.d. Closes: #555463. + * patches/ia64/submitted-memchr.diff: fix memchr() when data is shorter + than software pipeline. + * Bump to Standards-Version 3.8.3. + * Re-enable PIE on mips and build-depends on binutils (>= 2.20-3). + * Build-depends on g++-4.4 (>= 4.4.2-2) and use gcc-4.4 on armel. + * libc-bin-dev: recommends manpages-dev. Closes: #485608. + * Generate /usr/lib{,32,64}/gconv/gconv-modules.cache at build time + instead of during package installation. Closes: #548042. + * debhelper.in/locales-all.prerm: remove /usr/lib/locale on removal, to + make puiparts happy. + + [ Carlos O'Donell] + * patches/hppa/local-stack-grows-up.diff: fix pthread stack related + functions when the stack grows up. Closes: #553722. + + -- Aurelien Jarno Thu, 12 Nov 2009 12:53:04 +0100 + +eglibc (2.10.1-6) unstable; urgency=high + + [ Aurelien Jarno ] + * Don't ask to stop gdm before an upgrade, but run reload in the postint + Closes: #553362. + * patches/powerpc/cvs-readahead.diff: fix readahead on PowerPC. + * patches/any/cvs-preadv-pwritev.diff: fix preadv, pwritev and fallocate + for-D_FILE_OFFSET_BITS=64. Closes: #554608. + * patches/any/submitted-sched_h.2.diff: allow const argument to CPU_ISSET() + Closes: #554901. + * kfreebsd/local-sysdeps.diff: update to revision 2819 (from glibc-bsd). + * patches/any/submitted-etc-resolv.conf.diff: also handle case when the file + is present, but a nameserver entry is missing. Closes: #552010. + + -- Aurelien Jarno Sun, 08 Nov 2009 18:56:15 +0100 + +eglibc (2.10.1-5) unstable; urgency=low + + [ Samuel Thibault ] + * patches/hurd-i386/local-disable-ioctls.diff: New patch to disable some + non-working ioctls. + * patches/hurd-i386/local-pthread_types.diff: Fix path typo. + + [ Aurelien Jarno ] + * Move xz-utils to Build-Depends from Build-Depends-Indep. + + -- Aurelien Jarno Sun, 01 Nov 2009 17:19:00 +0100 + +eglibc (2.10.1-4) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/any/submitted-localedef-mmap.diff: new patch to cope with + different mmap alignment restrictions between MMAP_SHARED and + MMAP_PRIVATE. On SPARC64, MMAP_SHARED implies a 16kB alignment (L1 + D-Cache size), while MMAP_PRIVATE implies a 8kB alignment (page + size). Closes: #552233. + * patches/any/submitted-confname.h.diff: new patch to fix build of + bits/confname.h with -pedantic-errors. Closes: #552819. + * kfreebsd/local-sysdeps.diff: update to revision 2817 (from glibc-bsd). + Fixes . Closes: #552138. + * Disable PIE on MIPS/MIPSEL. + * Replace patches/s390/submitted-getutmpx.diff by upstream version + (patches/any/cvs-getutmpx-compat.diff). + * Don't include debian/ and stamp-dir/ in eglibc source tarball. Closes: + #553053. + * Switch to the more common xz format from lzma for eglibc-source + tarball. + + -- Aurelien Jarno Fri, 30 Oct 2009 09:48:09 +0100 + +eglibc (2.10.1-3) unstable; urgency=low + + [ Samuel Thibault ] + * patches/hurd-i386/local-bigmem.diff: Fix patch. + + [ Aurelien Jarno ] + * patches/s390/submitted-getutmpx.diff: new patch to fix getutmpx() on + s390. Closes: #544838. + * patches/any/submitted-missing-etc-resolv.conf.diff: new patch to fix + name resolution with empty or missing /etc/resolv.conf. Closes: + #552453. + * debian/sysdeps/i386.mk: build with gcc-4.3 on i386. Closes: #551903. + + -- Aurelien Jarno Mon, 26 Oct 2009 19:40:34 +0100 + +eglibc (2.10.1-2) unstable; urgency=low + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2806 (from glibc-bsd). + * Drop kfreebsd/local-sysdeps-2.10.diff (merged in local-sysdeps.diff). + + [ Samuel Thibault ] + * patches/hurd-i386/local-bigmem.diff: New patch to fix dl.so crash when + running on GNU Mach with VM_MAX_ADDRESS < 0xc0000000. + + [ Aurelien Jarno ] + * patches/any/submitted-missing-etc-hosts.diff: return HOST_NOT_FOUND + instead of NO_DATA. Closes: #551622, #551760, #551879, #552010. + * Restart NSS related services after upgrade. Closes: #551971, #551885. + * testsuite-checking/*kfreebsd*: the *at syscalls emulation is not + working under all conditions, allow failure of related tests. That + should be removed after switching to kernel 8.0. + + -- Aurelien Jarno Fri, 23 Oct 2009 08:48:29 +0200 + +eglibc (2.10.1-1) unstable; urgency=low + + [ Aurelien Jarno ] + * New upstream release. + - Fix C++ declaration of string functions. Closes: #496763. + - Add Handling for group shadow files. Closes: #519479. + - Use AT_RANDOM for randomized stack protector value. Closes: + #533077. + - don't trigger assertion on __pthread_mutex_lock anymore. Closes: + #479952. + - Fix week specifier in en_GB. Closes: #511474. + - Update sys/timex.h. Closes: #550857. + - debian/copyright, debian/*symbols*, debian/shlibver, + debian/locales-depver, debian/debhelper.in/*.lintian: upgrade + to 2.10. + - alpha has been moved to ports, update debian/sysdeps/alpha.mk and + debian/patches/alpha/* accordingly. + - Remove debian/patches/arm/submitted-setjmp.diff (merged). + - Remove debian/patches/arm/submitted-fpu_control_h.diff (merged). + - Remove debian/patches/hppa/cvs-tsd.diff (merged). + - Remove debian/patches/hppa/cvs-nptl.diff (merged). + - Remove debian/patches/hurd-i386/cvs-resource-prio.diff (merged). + - Remove debian/patches/hurd-i386/cvs-hurdsig-fix.diff (merged). + - Remove debian/patches/hurd-i386/cvs-net-headers.diff (merged). + - Remove debian/patches/hurd-i386/cvs-report-wait-fix.diff (merged). + - Remove debian/patches/hurd-i386/cvs-get_pc_thunk.diff (merged). + - Remove debian/patches/hurd-i386/cvs-strerror_l.diff (merged). + - Remove debian/patches/hurd-i386/cvs-rtld.diff (merged). + - Update debian/patches/hurd-i386/local-tls-support.diff. + - Update debian/patches/hurd-i386/submitted-extern_inline.diff. + - Update debian/patches/hurd-i386/local-atomic-no-multiple_threads.diff. + - Remove debian/patches/mips/cvs-context.diff (merged). + - Remove debian/patches/sparc/cvs-siginfo.diff (merged). + - Remove debian/patches/all/submitted-readme-version.diff (merged). + - Remove debian/patches/any/submitted-install-map-files.diff (merged). + - Remove debian/patches/any/cvs-pthread_h.diff (merged). + - Remove debian/patches/any/local-bashisms.diff (merged). + - Remove debian/patches/any/cvs-bz7058-nss_nss-nis.diff (merged). + - Remove debian/patches/any/cvs-iconv-utf16.diff (merged). + - Remove debian/patches/any/submitted-cross-zic.diff (merged). + - Remove debian/patches/any/cvs-binutils_2.20.diff (merged). + - Remove debian/patches/any/submitted-nss-nsswitch.diff (merged). + - Remove debian/patches/any/cvs-bz9706-nss_nss-files_files-parse.diff + (merged). + - Update debian/patches/any/cvs-broken-dns.diff. + - Remove debian/patches/any/cvs-bz9697-posix-regcomp.diff (merged). + - Remove debian/patches/any/cvs-bz697-posix-regexec.diff (merged). + - Remove debian/patches/any/submitted-broken-dns.diff (merged). + - Remove debian/patches/any/submitted-mount_h.diff (merged). + - Update debian/patches/any/submitted-futex_robust_pi.diff. + - Update debian/patches/any/local-dynamic-resolvconf.diff. + - Update debian/patches/any/local-libgcc-compat-main.diff. + - Update debian/patches/any/local-libgcc-compat-ports.diff. + - Update debian/patches/any/local-no-pagesize.diff. + - Remove debian/patches/any/submitted-date-and-unknown-tz.diff (merged). + - Remove debian/patches/any/cvs-sunrpc-license.diff (merged). + - Remove debian/patches/any/submitted-tst-cpucount.diff (merged). + - Remove debian/patches/any/submitted-signalfd-eventfd.diff (merged). + - Remove debian/patches/any/cvs-unsetenv.diff (merged). + - Remove debian/patches/localedata/mt_MT_euro.diff (merged). + - Remove debian/patches/localedata/submitted-bz9731-el_CY_euro.diff + (merged). + - Remove debian/patches/localedata/sk_SK_euro.diff (merged). + - Remove debian/patches/localedata/submitted-bz9730-locale-sv_FI.diff + (merged). + - Remove debian/patches/localedata/cvs-el_CY-el_GR-frac_digits.diff + (merged). + - Update debian/patches/localedata/sort-UTF8-first.diff. + - Update debian/patches/localedata/fr_CA-first_weekday.diff + - Update debian/patches/localedata/fr_BE-first_weekday.diff + - Update debian/patches/localedata/cy_GB-first_weekday.diff + - Remove debian/patches/localedata/submitted-bz9835-en_GB-first_day.diff + (merged). + - Update debian/patches/localedata/first_weekday.diff + - Update debian/patches/localedata/fr_LU-first_weekday.diff + - Update debian/patches/localedata/fr_CH-first_weekday.diff + - Remove debian/patches/sh4/cvs-headers-update.diff (merged). + - Remove debian/patches/any/local-revert-3270.diff (fixed upstream). + * Remove localedata/locale-fr_FR.diff as coreutils has been fixed. + * Add debian/patches/any/submitted-autotools.diff to update config.guess + and config.sub. + * Remove debian/patches/powerpc/local-sysconf.diff, as it only concerns + kernel that are not supported anymore. + * Add debian/patches/ia64/submitted-sysconf.diff to fix sysconf() on ia64. + * Add debian/patches/alpha/submitted-getsysstats.diff, + debian/patches/alpha/submitted-includes.diff and + debian/patches/alpha/submitted-lowlevellock.diff to partially fix FTBFS + on alpha. + * Add debian/patches/any/local-linuxthreads-unwind.diff to fix exception + handling with linuxthreads. + * Add debian/patches/any/cvs-nptl-init.diff to allow overwriting + architectures init.c in csu and nptl individually. + * Add debian/patches/any/submitted-accept4-hidden.diff to fix build + on non Linux architectures. + * Add debian/patches/kfreebsd/local-sysdeps-2.10.diff to update sysdeps + for glibc 2.10 on GNU/kFreeBSD. + * Add debian/patches/alpha/submitted-rtld-fPIC.diff to fix build on alpha. + * Add debian/patches/any/submitted-getent-gshadow.diff to add gshadow + support to getent. + * debian/rules.d/tarball.mk: store the checkout revision in the tarball + (file .svn-revision). + * debian/rules.d/tarball.mk: add an "update-from-upstream-svn" rule to + automatically update debian/patches/svn-updates.diff. + * patches/ia64/submitted-libm.diff: new patch to fix errors in the + math testsuite on ia64. + * Use gcc 4.4 by default, except on armel, hppa, mips, mipsel, sparc and + hurd-i386. + * Update to upstream revision 8758. + * patches/any/submitted-missing-etc-hosts.diff: new patch from Steve + Langasek to treat a missing /etc/hosts as a simple "not found", not as + an internal error. Closes: bug#539950. + * libc.postinst: only call telinit on Linux as originally. + * Fix package name in alpha/ia64 private symbols versioning. + * Add patches/sparc/local-sparcv9-memchr.diff to fix test-memchr. + + [ Petr Salinger ] + * Add kfreebsd/local-no-SOCK_NONBLOCK.diff to fix build on GNU/kFreeBSD. + + [ Samuel Thibault ] + * Add debian/patches/hurd-i386/local-_dl_random.diff to fix build on + hurd-i386. + * Add debian/patches/hurd-i386/local-unwind-resume.diff to fix build on + hurd-i386. + * Fix debian/patches/hurd-i386/local-tls-support.diff to align up includes + on Linux, to fix build. + + [ Carlos O'Donell ] + * Add hppa/cvs-nptl-compat.diff to keep ABI compatibility between + linuxthreads and NPTL on HPPA. + * sysdeps/hppa.mk: switch to NPTL. Closes: bug#538513. + * testsuite-checking/expected-results-hppa-linux-gnu-libc: update. + + -- Aurelien Jarno Sun, 18 Oct 2009 18:35:20 +0200 + +eglibc (2.10.1-0ubuntu15) karmic; urgency=low + + * Don't fail the build explicitely on any architecture (used for ppa + uploads to save buildd resources). + + -- Matthias Klose Tue, 06 Oct 2009 23:59:12 +0200 + +eglibc (2.10.1-0ubuntu14) karmic; urgency=low + + * Tighten build dependencies for binutils and gcc-4.4 with fix + for PR debug/40521. LP: #440172. + * On armel, don't explicitely build with -fno-dwarf2-cfi-asm. + * On armel, remove check-textrel.out test from expected to fail. + + -- Matthias Klose Tue, 06 Oct 2009 23:48:37 +0200 + +eglibc (2.10.1-0ubuntu13) karmic; urgency=low + + * On armel build with -fno-dwarf2-cfi-asm (will be the default with + gcc-4.4 (>= 4.4.1-5ubuntu1). + * Build-depend on binutils fixing PR ld/9863. + + -- Matthias Klose Thu, 01 Oct 2009 17:22:58 +0200 + +eglibc (2.10.1-0ubuntu12) karmic; urgency=low + + [ Steve Langasek ] + * Restore missing depends/conflicts/replaces handling for findutils and + belocs-locales-bin, lost in the latest merge. + * Move ldconfig trigger handling to libc-bin postinst, since that's where + ldconfig and the trigger are actually located. + * Drop debian/local/etc_init.d from the source, which is no longer shipped + in the package having been dropped in Debian + * debian/rules.d/debhelper.mk: revert breakage from Debian experimental; + pulling in file substitutions from script.in has to happen before + substituting other tokens, since script.in/nohwcap.sh contains other + tokens that have to be replaced. LP: #427288. + + [ Matthias Klose ] + * Don't apply hppa patches, don't apply + any/local-linuxthreads-kill_other.diff. + + -- Steve Langasek Mon, 14 Sep 2009 16:16:10 -0700 + +eglibc (2.10.1-0ubuntu11) karmic; urgency=low + + * Fix merge error resulting in a build failure of glibc-doc. + + -- Matthias Klose Sat, 12 Sep 2009 14:32:03 +0200 + +eglibc (2.10.1-0ubuntu10) karmic; urgency=low + + [ Matthias Klose ] + * Merge with Debian (r3833, eglibc-2.10 branch). + * Don't build libc6-vfp anymore. + * Update from the eglibc 2.10 maintainance branch (rev 8895). + - Remove patches/any/submitted-libgcc_s.so.diff. + * Move the ldconfig trigger from libc6 to libc-bin. + + [ Loïc Minier + * Update testsuite for armel since the real FPU on the buildds passes more + tests than the software emulation. + * Fix Vcs-Bzr URL to use https. + + -- Matthias Klose Sat, 12 Sep 2009 11:45:41 +0200 + +eglibc (2.10.1-0ubuntu9) karmic; urgency=low + + * debian/sysdeps/i386.mk: cherrypick fix from Debian, lost somewhere along + the way, that prevents /etc/ld.so.conf.d/xen.conf being added to the + libc6-xen package. LP: #427288. This still leaves us with a delta + relative to the Debian conffile name, which we ought to clean up at some + later date. + + -- Steve Langasek Sat, 12 Sep 2009 00:31:45 +0000 + +eglibc (2.10.1-0ubuntu8) karmic; urgency=low + + * Refresh debian/patches/ubuntu/retain-fatal-msg.diff to match the + final upstream commit. + + -- Kees Cook Fri, 28 Aug 2009 09:54:10 -0700 + +eglibc (2.10.1-0ubuntu7) karmic; urgency=low + + * patches/ubuntu/submitted-leading-zero-stack-guard.diff: require that + the stack guard start with a zero-byte to protect against str* + function more completely (LP: #413278). + + -- Kees Cook Wed, 12 Aug 2009 16:35:43 -0700 + +eglibc (2.10.1-0ubuntu6) karmic; urgency=low + + * patches/all/submitted-missing-etc-hosts.diff: a missing /etc/hosts should + be treated as a simple "not found", not as an internal error. + LP: #408901. + + -- Steve Langasek Tue, 11 Aug 2009 19:58:18 +0000 + +eglibc (2.10.1-0ubuntu5) karmic; urgency=low + + * Expected testsuite results on powerpc64: Mark test-fenv.out as + failing again. + + -- Matthias Klose Fri, 07 Aug 2009 12:05:04 +0200 + +eglibc (2.10.1-0ubuntu4) karmic; urgency=low + + * Expected testsuite results on powerpc: Mark tst-cputimer1.out as failing. + + -- Matthias Klose Fri, 07 Aug 2009 01:25:47 +0200 + +eglibc (2.10.1-0ubuntu3) karmic; urgency=low + + * Expected testsuite results on powerpc64: Mark test-fenv.out and + tst-timer5.out as succeeding, tst-cputimer1.out as failing. + + -- Matthias Klose Thu, 06 Aug 2009 18:14:20 +0200 + +eglibc (2.10.1-0ubuntu2) karmic; urgency=low + + * Merge with Debian (r3733, eglibc-2.10 branch). + * Update to r8758 from the eglibc-2.10 branch. + * Remove testcases from expected results, which don't fail anymore (ia64). + * Mark test-memchr.out as failing on sparc. + * patches/any/local-ipv6-lookup.diff: Don't apply. LP: #239701, #374674. + * Work around Ubuntu buildd limitation: allow just 2.6.15 for libc6 + installation, although 2.6.18 is required for some patches (requested by + soyuz maintainers). + + -- Matthias Klose Tue, 04 Aug 2009 00:36:31 +0200 + +eglibc (2.10.1-0ubuntu1) karmic; urgency=low + + * Rebuild .orig.tar.gz, based on revision 8733 of the eglibc-2.10 branch. + * Merge with Debian (r3733, eglibc-2.10 branch). + + -- Matthias Klose Mon, 03 Aug 2009 10:17:12 +0200 + +eglibc (2.10.1-0ubuntu1~ppa11) karmic; urgency=low + + * Merge with Debian (r3719, eglibc-2.10 branch). + + -- Matthias Klose Thu, 30 Jul 2009 19:09:16 +0200 + +eglibc (2.10.1-0ubuntu1~ppa10) karmic; urgency=low + + * Merge with Debian (r3641, eglibc-2.10 branch). + * Mark test cases as failing: + - armel: check-textrel + - sparc: tst-cancel1 + + -- Matthias Klose Fri, 24 Jul 2009 16:19:39 +0200 + +eglibc (2.10.1-0ubuntu1~ppa9) karmic; urgency=low + + * Update to r8680 from the eglibc-2.10 branch. + * Remove tst-fgetwc.out testcase as failing on all architectures; + fixed by update to the current eglibc-2.10 branch. + * Merge with Debian (r3625, eglibc-2.10 branch). + * Build using GCC-4.4. + + -- Matthias Klose Sat, 18 Jul 2009 18:12:57 +0200 + +eglibc (2.10.1-0ubuntu1~ppa8) karmic; urgency=low + + * Mark tst-fgetwc.out testcase as failing on all architectures; remove + testcases from expected results, which don't fail anymore. + + -- Matthias Klose Wed, 08 Jul 2009 15:39:50 +0200 + +eglibc (2.10.1-0ubuntu1~ppa7) karmic; urgency=low + + * Merge with Debian (r3600, eglibc-2.10 branch). + * Drop changes for Debian's /emul/ia32-linux to /usr/lib32 transition. + + -- Matthias Klose Tue, 07 Jul 2009 12:16:06 +0200 + +eglibc (2.10.1-0ubuntu1~ppa6) karmic; urgency=low + + [ Matthias Klose ] + * Merge with Debian (r3562, eglibc-2.10 branch). + * Drop changes for Debian's /emul/ia32-linux to /usr/lib32 transition. + + -- Matthias Klose Thu, 25 Jun 2009 10:14:41 +0200 + +eglibc (2.10.1-0ubuntu1~ppa4) UNRELEASED; urgency=low + + * Add debian/patches/ubuntu/retain-fatal-msg.diff: attempt to retain the + assert and internal error messages so they can be examined during core + dump analysis. + + -- Kees Cook Tue, 02 Jun 2009 11:56:21 -0700 + +eglibc (2.10.1-0ubuntu1~ppa3) karmic; urgency=low + + [ Kees Cook ] + * debian/patches/ubuntu/stack-guard-quick-randomization.diff: Update + and reenable. + + [ Matthias Klose ] + * Merge with Debian (r3498, eglibc-2.10 branch). + * Recognize sparcv9v2 and sparc64v2 as valid machine names. The configure.in + still supports these machines, and the Debian build system misuses this as + the name of the build directory. + * Build with -fno-stack-protector -U_FORTIFY_SOURCE on ia64. + + -- Matthias Klose Wed, 13 May 2009 10:58:16 +0200 + +eglibc (2.10.1-0ubuntu1~ppa2) karmic; urgency=low + + * Fix build failure on ia64. LP: #375509. + + -- Matthias Klose Tue, 12 May 2009 18:16:44 +0200 + +eglibc (2.10.1-0ubuntu1~ppa1) karmic; urgency=low + + * WARNING: Ignore regressions in the testsuite, install at your own risk. + + * Build .orig.tar.gz from eglibc-2_10 branch (r8444). + * Merge with Debian (r3494, eglibc-2.10 branch); remaining changes: + - Packaging: + + External tzdata + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + + Use .conf for files in /etc/ld.so.conf.d. + + Add vfp pass for armel. + + Set DEB_BUILD_OPTIMIZING_SIZE=0 on lpia. + - Patches: + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + + Applied debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff. + + Updated arm/local-no-hwcap. + + Don't declare the fwrite and fwrite_unlocked functions with + __attribute__((warn_unused_result)). + * debian/patches/arm/local-memset.diff: Remove, applied upstream. + * debian/patches/arm/local-memset.diff: Likewise. + * debian/patches/ubuntu/stack-guard-quick-randomization.diff: Disable. + * debian/patches/ubuntu/no-sprintf-pre-truncate.diff: Update. + + -- Matthias Klose Tue, 12 May 2009 15:36:04 +0200 + +eglibc (2.9-27) unstable; urgency=low + + [ Aurelien Jarno ] + * Extend description of libc-bin, patch by Christoph Berg. Closes: + bug#544389. + * Strip *.o files manually (dh_strip does not do it) to prevent + leakage of the build directory. + * libc.postinst: re-add "telinit u", removed by accident in version + 2.9-24. Closes: bug#545179. + * nscd.init: set PATH to "/sbin:/usr/sbin:/bin:/usr/bin". Closes: + bug#544942. + * nscd.conf.5: add documentation for max-db-size and auto-propagate + options. Closes: bug#544544. + * Merge from the multiarch branch: + - allow to specify libdir and slibdir also for the main flavor. + - use real dependencies between the build_* and binaryinst_* + targets. + - simplify clean target. + * Set the minimum kernel version to 6.0.0 for biarch library on + kfreebsd-amd64 to match the main library. + * alpha/submitted-sock_nonblock.diff: adjust patch location (alpha is + still a main architecture in glibc 2.9). Closes: bug#540871. + + [ Samuel Thibault ] + * debian/debhelper.in/libc.install: Install libc/*-gnu*/ instead of + libc/*-*-gnu*/, to fix FTBFS on hurd-i386 due to it now being i486-gnu/. + * debian/patches/hurd-i386/submitted-null-pathname.diff: New patch to fix + chdir("") and chroot("") into returning ENOENT. + * debian/patches/hurd-i386/submitted-sbrk.diff: New patch to fix sbrk beyond + 128MB. + * debian/patches/hurd-i386/local-thread-cancel.diff: New patch to fix ext2fs + crash. + * debian/patches/hurd-i386/submitted-readlinkat.diff: New patch to add + support for readlinkat(), to fix insserv build. + * debian/patches/hurd-i386/cvs-termios-IXANY.patch: New patch to + define IXANY in XOpen environment too, to fix libgphoto2 build. + * debian/patches/hurd-i386/submitted-SOL_IP.patch: New patch to add SOL_IP + definition, to fix directfb build. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2779 (from glibc-bsd). + + [ Clint Adams ] + * debian/rules.d/debhelper.mk: make sure that snippets are included + before doing CURRENT_VER substitution; fix thanks to Steve + Langasek. + * Bump to Standards-Version 3.8.3. + + -- Clint Adams Wed, 30 Sep 2009 16:24:56 -0400 + +eglibc (2.9-26) unstable; urgency=low + + [ Aurelien Jarno ] + * alpha/submitted-sock_nonblock.diff, hppa/submitted-sock_nonblock.diff: + create the files at the correct location. Closes: bug#540871. + * Use the full triplet for optimized and biarch packages. + * cvs-unsetenv.diff: new patch to not segfault in unsetenv() if run after + clearenv(). + + [ Samuel Thibault ] + * Convert config_os' gnu-gnu into gnu to fix multiarch paths. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2744 (from glibc-bsd). + * any/local-linuxthreads-kill_other.diff, fixes ruby 1.9 testsuite failure + + -- Aurelien Jarno Mon, 31 Aug 2009 07:05:00 +0200 + +eglibc (2.9-25) unstable; urgency=low + + * Remove Ben Collins from the uploaders (Closes: + bug#540901). + * Recommends libc6-i686 on i386 and libc0.1-i686 on kfreebsd-i386 + (instead of amd64 and kfreebsd-amd64). Closes: bug#455603. + * rules.d/debheper.in: fix a one letter typo causing libc6-udeb to be + empty. Closes: bug#541725. + * alpha/submitted-sock_nonblock.diff, hppa/submitted-sock_nonblock.diff: + new patches to accommodate SOCK_NONBLOCK != O_NONBLOCK on these + architectures. Closes: bug#540871. + * Add dependency on $syslog in /etc/init.d/nscd. Closes: bug#541492. + + -- Aurelien Jarno Sun, 16 Aug 2009 13:43:11 +0200 + +eglibc (2.9-24) unstable; urgency=low + + [ Aurelien Jarno ] + * Remove any/cvs-pthread_mutex_lock.diff following upstream decision. + * Replace debian/sysdeps/depflags.{mk,pl} by entries in debian/control + using the "new" dpkg-dev features. Clean-out some very old entries. + * Recommends libc6-i686 on amd64 and libc0.1-i686 on kfreebsd-amd64 + (Closes: bug#455603). + * Don't access dpkg files directly in libc6.preinst. + * patches/any/local-ld-multiarch.diff: convert i586 and i686 into i486 + (Closes: bug#540646). + * debian/rules.d/debhelper.mk: use dh_lintian instead doing the work + manually. + * Split out libc-bin from libc6 and libc-dev-bin from libc6-dev. + (Closes: #330735). + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2696 (from glibc-bsd). + + -- Aurelien Jarno Mon, 10 Aug 2009 14:32:35 +0200 + +eglibc (2.9-23) unstable; urgency=low + + * debhelper.in/libc.postinst, sysdeps/depflags.pl: remove upgrade code + for pre-etch installations. + * Don't ship /etc/init.d/glibc.sh anymore: the GNU libc is now smart + enough to print "FATAL: kernel too old" alone. This also speed up + the boot a bit. + * Don't ship /usr/share/doc/libc6/TODO, but keep the file in the + sources. + * Don't ship /usr/share/doc/libc6/{README,PROJECT}.gz, they are + irrelevant for an already built GNU libc. + * Move /usr/share/doc/libc6/{CONFORMANCE,NAMESPACE,NOTES}.gz to + libc6-dev. + * Move all upstream changelogs in glibc-docs, and install a small + changelog file explaining the reason. + * Ship README.libm in libc6-dev. + * Update any/cvs-broken-dns.diff from upstream. + * any/cvs-pthread_mutex_lock.diff: new patch from upstream to fix + a memory ordering problem in pthread_mutex_{,timed}lock. + * Replace any/submitted-signalfd-eventfd.diff by upstream version + any/cvs-signalfd-eventfd.diff. + * alpha/submitted-asm-memchr.diff: new patch to fix broken prefetching + in memchr() on alpha. + * control.in/i386: replace the Pre-Depends by a Conflicts. Closes: + #538807. Update the breaks version of the packages not yet + transitioned. + + -- Aurelien Jarno Mon, 27 Jul 2009 15:37:54 +0200 + +eglibc (2.9-22) unstable; urgency=low + + * kfreebsd/local-sysdeps.diff: update to revision 2670 (from glibc-bsd). + * any/submitted-signalfd-eventfd.diff: new patch to support < 2.6.27 + kernels in eventfd/signalfd. Closes: #537509. + * alpha/submitted-fdatasync.diff: update to keep fdatasync() as a + cancellation point. Closes: #537586. + * sparc/cvs-siginfo.diff, s390/submitted-siginfo.diff, + ia64/submitted-siginfo.diff: new patches to get "struct sigevent" + from bits/siginfo.h in sync with the kernel version. Closes: #534548. + * debhelper.in/libc-alt.preinst: also clear old /lib32 and /usr/lib32 + symlinks on install, as they might have been left by a previous + installation of the package. + * patches/any/cvs-getaddrinfo-nss-notfound.diff: new patch to correctly + handle missing NSS modules. Closes: #535106, #298290. + * Add X-Interactive: true to /etc/init.d/glibc.sh. Closes: #538435. + + -- Aurelien Jarno Sun, 26 Jul 2009 10:16:30 +0200 + +eglibc (2.9-21) unstable; urgency=low + + [ Aurelien Jarno ] + * Re-add /usr/include/scsi/scsi.h. Closes: #537354. + * libc6-dev-i386: pre-depends on libc6-i386. Closes: #535313. + * /etc/bindresvport.blacklist: add rsync (port 873). Closes: #537289. + * any/local-bindresvport_blacklist.diff: update from latest openSUSE + version. + * kfreebsd/local-sysdeps.diff: update to revision 2643 (from glibc-bsd). + Closes: #537492. + * debian/local/etc_init.d/glibc.sh: add support for start/stop/restart/ + force-reload options. + * debian/debhelper.in/libc-alt.preinst: add set -e. + + -- Aurelien Jarno Sun, 19 Jul 2009 21:09:38 +0200 + +eglibc (2.9-20) unstable; urgency=low + + [ Clint Adams ] + * Bump to Standards-Version 3.8.2. + + [ Aurelien Jarno ] + * Don't ship /usr/include/scsi/scsi.h anymore. Closes: #535809. + * Add sysdeps/sh4.mk. Closes: #536199. + * debian/control.in/main: Build-Depends on dpkg-dev (>= 1.15.3.1). + Closes: #536482. + * kfreebsd/local-sysdeps.diff: update to revision 2624 (from glibc-bsd). + + -- Aurelien Jarno Sun, 12 Jul 2009 14:39:01 +0200 + +eglibc (2.9-19) unstable; urgency=low + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2611 (from glibc-bsd). + Closes: #534115. Thanks to Javier Mendez Gomez. + + [ Aurelien Jarno ] + * libc6-i386/presubj: remove. Closes: #533768. + * eu.po update from Piarres Beobide. closes: #534283. + * arm/local-hwcap-updates.diff, arm/local-no-hwcap.diff: update ARM + hwcaps to support NEON and VFP. Closes: #534126. + * control.in/i386: add a breaks nvidia-glx-ia32 (<= 185.18.14-1) and + nvidia-libvdpau-ia32 (<= 185.18.14-1). Closes: #534874. + * Merge any/submitted-broken-dns.diff into any/cvs-broken-dns.diff and + update from upstream. + + [ Clint Adams ] + * ru.po update from Yuri Kozlov. closes: #534781. + * cs.po update from Miroslav Kure. closes: #534787. + + -- Clint Adams Sun, 05 Jul 2009 11:49:39 -0400 + +eglibc (2.9-18) unstable; urgency=low + + * Remove /lib32 and /usr/lib32 in the libc6-i386 preinst. closes: #533773. + + -- Clint Adams Sun, 21 Jun 2009 03:17:50 -0400 + +eglibc (2.9-17) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix the versionned conflict of libc6-i386 with libc6-i386-dev. Closes: + #533482. + + [ Clint Adams ] + * Use Breaks instead of Conflicts for the /emul/ia32-linux transition. + closes: #533503. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2599 (from glibc-bsd). + + -- Clint Adams Thu, 18 Jun 2009 18:36:51 -0400 + +eglibc (2.9-16) unstable; urgency=low + + * Restore /lib/ld-linux.so.2 symlink. Closes: #533364. + * control.in/i386: tighten a bit the conflicts given the recent uploads. + + -- Aurelien Jarno Wed, 17 Jun 2009 07:32:47 +0200 + +eglibc (2.9-15) unstable; urgency=low + + * kfreebsd/local-sysdeps.diff: update to revision 2587 (from glibc-bsd). + Update expected testsuite results accordingly. + * any/cvs-broken-dns.diff: backport more parts from upstream. + * Update Italian debconf translation, by Luca Monducci. Closes: #531431. + * sh4/cvs-headers-update.diff: new patch from upstream to fix build failure + on SH4. Closes: #532385. + * sysdeps/amd64.mk: fix i386_slibdir. + * control.in/i386: remove duplicate entries. + + -- Aurelien Jarno Sat, 13 Jun 2009 22:25:41 +0200 + +eglibc (2.9-14) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/debhelper.in/locales.postrm: remove /etc/default/locale on + purge. Closes: #530902. + + [ Clint Adams ] + * Move /emul/ia32-linux libraries to /usr/lib32. + + -- Clint Adams Sat, 13 Jun 2009 09:51:12 -0400 + +eglibc (2.9-13ubuntu1~ppa1) karmic; urgency=low + + * WARNING: Ignore regressions in the testsuite, install at your own risk. + + * Build .orig.tar.gz from eglibc-2_9 branch (r7806). + * Merge with Debian (r3491, trunk); remaining changes: + - Packaging: + + External tzdata + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + + Use .conf for files in /etc/ld.so.conf.d. + + Add vfp pass for armel. + + Set DEB_BUILD_OPTIMIZING_SIZE=0 on lpia. + - Patches: + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + + Applied debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff. + + Updated arm/local-no-hwcap. + + Don't declare the fwrite and fwrite_unlocked functions with + __attribute__((warn_unused_result)). + + -- Matthias Klose Mon, 11 May 2009 13:24:56 +0200 + +eglibc (2.9-13) unstable; urgency=low + + * debian/debhelper.in/nscd.init: fix return code when querying status + and nscd is not running to comply with LSB. Closes: #527883. + * debian/debhelper.in/locales.config: don't use "echo -e". Closes: + #527945, #529173. + * debian/patches/localedata/supported.diff: add kk_KZ.RK1048 locale. + Closes: #528177. + * debian/debhelper.in/locales.config: use previous debconf settings if + /etc/environment and /etc/default/locale do not exist. + * debian/bug/locales/presubj: fix a typo. Closes: #528353. + * debian/local/manpages/validlocale.8: fix a typo. Closes: #528658. + * debian/patches/any/cvs-sunrpc-license.diff: new patch from upstream + to change the SUNRPC license into BSD one. Update debian/copyright + accordingly. Closes: #382175. + * debian/patches/any/submitted-tst-cpucount.diff: new patch to fix + tst-cpucount test on non Linux kernels. + * kfreebsd/local-sysdeps.diff: update to revision 2545 (from glibc-bsd). + * debian/patches/kfreebsd/local-config_h_in.patch: new patch to correctly + define __KFREEBSD_KERNEL_VERSION. + * debian/sysdeps/kfreebsd.mk: bump minimal kernel version to 6.0. + * debian/debhelper.in/libc.NEWS: detail the exact line that has to be + added to /etc/resolv.conf. + + -- Aurelien Jarno Tue, 26 May 2009 13:45:58 +0200 + +eglibc (2.9-12) unstable; urgency=low + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2503 (from glibc-bsd). + + [ Aurelien Jarno ] + * any/local-revert-3270.diff: new patch to revert fix for PR nptl/3270. + (closes: bug#527541). + + -- Aurelien Jarno Fri, 08 May 2009 11:57:16 +0200 + +eglibc (2.9-11) unstable; urgency=low + + * Switch to Embedded GLIBC (EGLIBC), sources taken from the 2.9 + branch. + - Update all/submitted-readme-version.diff. + - Update any/local-bashisms.diff. + - Update any/cvs-bz9697-posix-regcomp.diff. + - Update any/cvs-binutils_2.20.diff. + - Drop any/local-makeconfig.diff. + - Drop any/submitted-getcwd-sys_param_h.diff (merged in eglibc). + - Add any/submitted-cross-zic.diff to fix biarch builds. + - Add any/submitted-nss-nsswitch.diff to fix linuxthreads builds. + - Add any/submitted-install-map-files.diff to fix GNU/Hurd builds. + - More tests of flavour/biarch builds are run, update the expected + testsuite results accordingly. + - Rename glibc-source package into eglibc-source. + + -- Aurelien Jarno Tue, 05 May 2009 09:54:14 +0200 + +glibc (2.9-10) unstable; urgency=low + + [ Samuel Thibault ] + * hurd-i386/local-pthread_posix-option.diff: Set _POSIX_TIMEOUTS to 200112 + too, to fix gthread compilation in gcc-4.4 + + [ Petr Salinger ] + * fix up GNU/kFreeBSD specific macro LIST_FOREACH_SAFE. + + [ Aurelien Jarno ] + * any/cvs-broken-dns.diff: backport more parts from upstream. + * any/submitted-broken-dns.diff: new patch to not raise an error if one + query returns NOTIMP or FORMERR and the other NOERROR. Closes: #526823. + + -- Aurelien Jarno Tue, 05 May 2009 01:39:50 +0200 + +glibc (2.9-9ubuntu1) karmic; urgency=low + + * Merge with Debian (r3342, trunk); remaining changes: + - Packaging: + + External tzdata + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + + Use .conf for files in /etc/ld.so.conf.d. + + Add vfp pass for armel. + - Patches: + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + + Applied debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff. + + Updated arm/local-no-hwcap. + + Don't declare the fwrite and fwrite_unlocked functions with + __attribute__((warn_unused_result)). + * Fix build failure with recent binutils. + * Set DEB_BUILD_OPTIMIZING_SIZE=0 on lpia. + + -- Matthias Klose Wed, 29 Apr 2009 18:20:17 +0200 + +glibc (2.9-9) unstable; urgency=low + + * mips/cvs-context.diff: add missing part from upstream. + + -- Aurelien Jarno Tue, 28 Apr 2009 23:11:30 +0200 + +glibc (2.9-8) unstable; urgency=low + + [ Aurelien Jarno ] + * Update Swedish debconf translation, by Martin Bagger. Closes: #522982. + * mips/cvs-context.diff: new patch from upstream to add getcontext, + setcontext, makecontext, swapcontext. + * any/submitted-mount_h.diff: new patch to add MNT_DETACH and MNT_EXPIRE to + sys/mount.h. Closes: #523952. + * arm/submitted-fpu_control_h.diff: new patch to disable macros from + on EABI. Closes: #525261. + * any/cvs-iconv-utf16.diff: new patch from upstream to reject UTF-8-encoded + UTF-16 surrogates in iconv. Closes: #525299. + * any/local-getaddrinfo-interface.diff: ignore addresses with no interface + assigned while sorting with rule 7. Closes: #521439. + * any/cvs-broken-dns.diff: new patch from CVS to provide a fallback for + broken DNS server while doing unified IPv4/IPv6 requests. The first lookup + will be slow, but subsequent requests will fallback to the previous + behaviour. This can be enabled by default by setting 'single-request' in + /etc/resolv.conf. + * debhelper.in/libc.NEWS: add entry explaining the new behaviour and the new + option. + * any/local-disable-gethostbyname4.diff: disabled this patch to re-enable + unified IPv4/IPv6 requests. Closes: bug#343140, bug#435646. + * localedata/cvs-el_CY-el_GR-frac_digits.diff: new patch from CVS to fix + frac_digits and int_frac_digits on el_CY ad el_GR locales. Closes: + bug#511621. + * mips_asm_unistd.h, sysdeps/mipsel.mk, sysdeps/mips.mk: use our own version + of unistd.h corresponding to the one of a 2.6.24 kernel to workaround kernel + bugs on the build daemons. + * any/cvs-binutils_2.20.diff: new patch from upstream to fix build failure + with binutils 2.20. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2482 (from glibc-bsd). + Closes: #522686. Thanks to Jan Christoph Nordholz. + + [ Samuel Thibault ] + * hurd-i386/cvs-rtld.diff: new patch, fixes boot of glibc built with + binutils >= 2.19. + + -- Aurelien Jarno Mon, 27 Apr 2009 00:44:59 +0200 + +glibc (2.9-7) unstable; urgency=low + + [ Aurelien Jarno ] + * Update German debconf translation, by Helge Kreutzman. Closes: #519992. + * Update testsuite results on alpha, tst-timer.out exits with SIGILL on + some machines, it was already the case with glibc 2.7 on the same + machines. + * Update testsuite results on hppa, tst-posix_fallocate.out and + tst-makecontext.out are known to fail with a 32-bit kernel. + * debian/script.in/nsscheck.sh: fix a typo. Closes: #520455. + * kfreebsd/local-sysdeps.diff: update to revision 2390 (from glibc-bsd). + * libc6.1.symbols.alpha: fix package name for private symbols. + + [ Samuel Thibault ] + * debian/rules.d/debhelper.mk: let grep libpthread.so fail because on + hurd-i386 glibc does not provide it. + + -- Aurelien Jarno Tue, 07 Apr 2009 07:58:50 +0200 + +glibc (2.9-6) unstable; urgency=low + + [ Samuel Thibault ] + * debian/patches/hurd-i386/local-tls-support.diff: fix typo in tlsdesc.sym. + + [ Aurelien Jarno ] + * debian/po/de.po: fix German translation. Closes: bug#519612. + * Update French debconf translation, by Christian Perrier. Closes: #519662. + * any/local-disable-gethostbyname4.diff: disable unified lookup for + getaddrinfo(). While unified lookup fix the problem of DNS servers simply + dropping AAAA requests, it breaks lookup with even more broken DNS servers + only returning a broken AAAA answer. As it seems the second type of broken + DNS concerns more users, let's revert to the old behaviour. Closes: + #516218. + * any/submitted-getaddrinfo-lo.diff: correctly handle the lo interface and + associated addresses when checking for native connection. Closes: + bug#519545. + * debian/control.in/libc: change -dbg packages to section debug. + * debian/control.in/main: update Standards-Version to 3.8.1: + - debian/local/etc_init.d/glibc.sh: move set -e out from the shebang line. + - debian/debhelper.in/nscd.init: exit successfully if the daemon was + already running. + * debian/debhelper.in/nscd.dirs: remove /var/run/nscd directory. + + -- Aurelien Jarno Sun, 15 Mar 2009 21:22:48 +0100 + +glibc (2.9-5) unstable; urgency=low + + [ Clint Adams ] + * Change first day of the week in ru_UA locale to Monday. closes: + #517386. + + [ Aurelien Jarno ] + * testsuite-checking/expected-results-i486-linux-gnu-libc, + testsuite-checking/expected-results-i686-linux-i686: remove + testgrp.out from the ignore list, it was due to a misconfiguration + of the build daemon. + * debhelper.in/libc.{preinst,postint}: bump the version triggering the + restart of NSS related services to 2.9-5. + * debhelper.in/libc.postint: change cupsys into cups. + * script.in/nsscheck.sh: convert mysql-server into mysql. Closes: + bug#172123. + * merge lost patch from lenny: + - debhelper.in/locales.config: use previous debconf settings if + /etc/locales does not exists. Closes: bug#517884. + * debian/local/manpages/ld.so.8: fix a typo. Closes: bug#518394. + * debhelper.in/libc.preinst, debhelper.in/libc.templates: warn users + about the need to disable xscreensaver and xlockmore before libc6 + is unpacked. Closes: bug#517795. + + [ Samuel Thibault ] + * debian/patches/hurd-i386/cvs-ECANCELED.diff: rename into + submitted-ECANCELED.diff + * debian/patches/hurd-i386/local-net-headers.diff: rename into + cvs-net-headers.diff + * debian/patches/hurd-i386/local-pthread_types.diff: make it create a new + sysdep/mach/hurd/bits/pthreadtypes.h instead of modifying + bits/pthreadtypes.h. Move from series.hurd-i386 to series. + * debian/patches/hurd-i386/local-tls-dtv-offset.diff: remove patch, make + local-tls-support.diff create tlsdesc.sym instead. + * debian/patches/hurd-i386/local-no-strerror_l.diff: remove patch, replaced + by... + * debian/patches/hurd-i386/cvs-strerror_l.diff: new patch from Thomas + Schwinge. + + -- Aurelien Jarno Thu, 12 Mar 2009 00:13:02 +0100 + +glibc (2.9-4ubuntu5) jaunty; urgency=low + + * This upload allows NEON hwcap usage; FFE LP: #343602. + * New patch, arm/local-hwcap-updates, add support for some recent ARM hwcaps + additions. + * Update patch arm/local-no-hwcap to also flag HWCAP_ARM_NEON as an + important hwcap; this adds /lib/neon, /usr/lib/neon etc. to the ldconfig + and ld.so search pathes. + + -- Loic Minier Tue, 31 Mar 2009 20:28:41 +0200 + +glibc (2.9-4ubuntu4) jaunty; urgency=low + + * Don't declare the fwrite and fwrite_unlocked functions with + __attribute__((warn_unused_result)). See + https://lists.ubuntu.com/archives/ubuntu-devel/2009-March/027832.html + + -- Matthias Klose Fri, 27 Mar 2009 21:17:24 +0100 + +glibc (2.9-4ubuntu3) jaunty; urgency=low + + [ Colin Watson ] + * Rename Debian's Vcs-* fields in debian/control to XS-Debian-Vcs-* to + reduce confusion. + + [ Loic Minier ] + * Add vfp pass for armel. + - sysdeps/armel.mk: add vfp pass with the same add-ons as the libc pass, + with "-mfpu=vfp -mfloat-abi=softfp" appended to CFLAGS, using + /lib/vfp as slibdir (could as well be /lib/tls/vfp but the armel port + was always NPTL which implies TLS), and configured with + --disable-profile like the other optimized passes. + - control.in/opt, control: add libc6-vfp package on armel. + - script.in/nohwcap.sh: list libc6-vfp in hwcappkgs on armel. + - testsuite-checking/expected-results-arm-linux-gnueabi-vfp: copied from + testsuite-checking/expected-results-arm-linux-gnueabi-libc. + + -- Loic Minier Thu, 19 Mar 2009 21:34:59 +0100 + +glibc (2.9-4ubuntu2) jaunty; urgency=low + + * Merge with Debian (r3342, trunk); remaining changes: + - Packaging: + + External tzdata + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + + Use .conf for files in /etc/ld.so.conf.d. + - Patches: + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + + Applied debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff. + + Updated arm/local-no-hwcap. + * Remove some passing testcases from the expected test results. + + -- Matthias Klose Mon, 02 Mar 2009 08:57:05 +0100 + +glibc (2.9-4) unstable; urgency=low + + * testsuite-checking/expected-results-ia64-linux-gnu-libc: ignore + result of tst-oddstacklimit.out, it is known to fail with old + kernels, just like in glibc 2.7. + * debian/debhelper.in/libc{-alt,-otherbuild,}.lintian: remove outdated + overrides. + * debhelper.in/libc.postinst: restart NSS services on upgrades from + versions prior to 2.9-1. + * testsuite-checking/expected-results-arm-linux-gnueabi-libc: ignore + result of test-fenv.out and test-fpucw.out, as they were already + failing with glibc 2.7. + * patches/any/submitted-futex_robust_pi.diff: new patch to correctly + define when PI futexes and robust mutexes have been introduced + in the kernel, on a per architecture basis. + * testsuite-checking/expected-results-{alpha,ia64}-linux-gnu-libc: + remove PI futexes failures. + * patches/all/submitted-readme-version.diff: fix the upstream version + number in upstream README. Closes: bug#516908. + * debian/rules.d/build.mk: disable the testsuite on ball/mayr/mayer/rem + build daemons. + * debian/rules.d/info.mk: new file to dump useful info in the build log. + * debian/rules: always define and export SHELL as "/bin/bash -e". + Closes: bug#517077. + * patches/any/cvs-bz7058-nss_nss-nis.diff: new patch to fix crash when + doing host lookup with nss-nis. Closes: bug#517094. + * Add debian/libc6-mips{n32,64}.symbols.mips{el,} symbol files. + * debian/debhelper.in/glibc-source.install, debian/rules.d/build.mk: + switch the format of glibc-source to lzma, sparing 6MB. + * debian/libc6.1.symbols.{alpha,ia64}: fix symbols. + * debian/*symbols*: rename symbols.common into libc6.symbols.common. + * rules.d/debhelper.mk: don't strip debugging symbols. Remove + debhelper.in/libc-dbg.{install,lintian} and wrapper/objcopy. + control.in/libc: update description of libc-dbg. Closes: bug#516516. + * patches/kfreebsd/local-scripts.diff: correctly define the soname of + libthread_db. + * libc0.1.symbols.common, libc0.1.symbols.kfreebsd-{amd64,i386], + libc0.1-i386.symbols.kfreebsd-amd64: new files. + + -- Aurelien Jarno Fri, 27 Feb 2009 19:01:26 +0100 + +glibc (2.9-3) unstable; urgency=low + + * debhelper.in/nscd.init: fix the for loop. Closes: bug#516509. + + -- Aurelien Jarno Sat, 21 Feb 2009 11:40:24 +0100 + +glibc (2.9-2) unstable; urgency=low + + [ Aurelien Jarno ] + * testsuite-checking/*: ignore tst-cpuclock2 test, as it fails on + machines using cpufreq. + * Rename submitted/cvs-tsd.diff into hppa/cvs-tsd.diff. + * patches/any/local-bashisms.diff: fix more bashisms in the testsuite. + * rules.d/build.mk: define SHELL as /bin/bash. + * patches/any/cvs-pthread_h.diff: patch from upstream to fix warning + in pthread.h. + * debhelper.in/libc.preinst: restart NSS services on upgrades from + versions prior to 2.9-1. + * debhelper.in/*symbols*, rules.d/debhelper.mk: allow linking against + private symbols again, but with a strict dependency on the upstream + version. + * debhelper.in/nscd.init: fix cache flushing on restart/reload. Closes: + bug#516212. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2370 (from glibc-bsd). + * drop kfreebsd/local-sysdeps28.diff (merged into local-sysdeps.diff). + + -- Aurelien Jarno Fri, 20 Feb 2009 22:25:19 +0100 + +glibc (2.9-1) unstable; urgency=low + + [ Aurelien Jarno ] + * New upstream release. + - This version has been tagged in the CVS, update debian/rules and + debian/rules.d/tarball.mk accordingly. + - shs_CA locale is enabled. Closes: #504663. + - fix snprintf with low-memory. Closes: #481543. + - fix mtrace warning message. Closes: #507488. + - Disable m68k/local-mathinline_h.diff. + - Update any/local-bashisms.diff. + - Update hurd-i386/local-tls-support.diff. + - Update localedata/locale-en_DK.diff. + - Update localedata/sort-UTF8-first.diff. + - Update localedata/supported.diff. + - Update localedata/first_weekday.diff. + - Remove all/submitted-iconv-latin9.diff (merged). + - Remove any/submitted-user_h.diff (merged). + - Remove any/cvs-bug-iconv6_tst-iconv7.diff (merged). + - Remove any/cvs-getaddrinfo.diff (merged). + - Remove any/cvs-iconv-braces.diff (merged). + - Remove any/cvs-nscd-getservbyport.diff (merged). + - Remove any/cvs-regex_anchor.diff (merged). + - Remove any/cvs-tst-regex.diff (merged). + - Remove any/submitted-rpcgen-makefile.diff (merged). + - Remove hppa/cvs-context.diff (merged). + - Remove hppa/submitted-atomic_h.diff (merged). + - Remove hppa/submitted-fesetenv.diff (merged). + - Remove hurd-i386/cvs-lock-memory-clobber.diff (merged). + - Remove hurd-i386/cvs-mig-init.diff (merged). + - Remove hurd-i386/cvs-MSG_NOSIGNAL.diff (merged). + - Remove hurd-i386/cvs-open_2.diff (merged). + - Remove hurd-i386/cvs-signal-werror.diff (merged). + - Remove hurd-i386/cvs-termios.diff (merged). + - Remove hurd-i386/cvs-fcntl-types.diff (merged). + - Remove mips/local-setjmp.diff (merged). + - Remove sparc/cvs-context.diff (merged). + - Remove localedata/locale-ks_IN.diff (replaced upstream by + ks_IN@devanagari). + - debian/shlibver: bump to 2.9. + - debian/locales-depver: bump to 2.9. + - debian/sysdeps/depflags.pl: add a conflict on nscd (<< 2.9) to libc. + - Finnish (fi_FI) time format is fixed. closes: #468849. + * debhelper.in/locales.config: convert ks_IN into ks_IN@devanagari. + * symbols.wildcards: update for glibc 2.9. + * debhelper.in/*.lintian: update for glibc 2.9. + * testsuite-checking/compare.sh: don't assume expected and current + testsuite results in same order. Closes: bug#504031. + * testsuite-checking/expected-results-powerpc64-linux-ppc64: update. + * debian/local/etc_init.d/glibc.sh: add Description and Short-Description. + Closes: bug#510083. + * Remove manpage that will be provided by manpages-dev. Closes: bug#506515, + bug#505784. + * debian/copyright: update. Closes: bug#506881. + * any/submitted-popen.diff: new patch from Gentoo to fix popen() on >= 2.6.27 + kernels. Closes: bug#512238. + * arm/submitted-setjmp.diff: new patch to fix build on arm. + * debian/rules: set BUILD_CC (host compiler) to gcc, and set CC (target + compiler) to gcc-4.3. The later can be override on a per target basis. + * debian/rules.d/build.mk: enable stackguard randomization. Closes: + bug#511811. + * expected-results-i486-linux-gnu-libc, expected-results-i686-linux-i686: + Add tests that fail on a Xen machine. Sigh. + * any/local-linuxthreads-thread_self.diff: new patch to fix a warning on + linuxthreads builds. + * rules.d/build.mk: unset LANG to make sure testsuite errors are not + localized. + * debian/rules: remove *.mo file in the clean target. + * sysdeps/alpha.mk, control.in/main: use gcc-4.3 on alpha. + * debhelper.in/locales.postinst: make sure /etc/default/locale is always + created. Closes: bug#515099. + * debian/wrapper/objcopy: apply special strip to libraries only. Closes: + bug#513882. + * debian/localedata/locale-fr_FR.diff: revert change of week of day and + month abbreviations in fr_FR locale. Closes: bug#509191. + + [ Clint Adams ] + * patches/any/cvs-bz697-posix-regexec.diff: regex fix from Paolo Bonzini. + * patches/any/cvs-bz9697-posix-regcomp.diff: regex fix from Paolo Bonzini, + closes: #510219. + * patches/localedata/submitted-bz9725-locale-sv_SE.diff: fix from David + Weinehall for incorrect sv_SE date format. closes: #489960. + * patches/any/cvs-bz9706-nss_nss-files_files-parse.diff: unify NSS + behavior between 32-bit and 64-bit platforms. addresses: #483645. + * localedata/submitted-bz9730-locale-sv_FI.diff: make sv_FI time format + conform to that of fi_FI. closes: #489946. + * Rename patches/localedata/el_CY_euro.diff to + patches/localedata/submitted-bz9731-el_CY_euro.diff. + * Rename patches/localedata/dz_BT-collation.diff to + patches/localedata/submitted-bz9732-dz_BT-collation.diff. + * patches/localedata/submitted-bz9835-en_GB-first_day.diff: new patch to + fix first_weekday and first_workday for en_GB. closes: #512343. + + [ Arthur Loiret ] + * patches/any/local-nss-overflow.diff: new patch to ignore uids and gids + greater than UINT_MAX. Closes: #483645. + * patches/hppa/submitted-tsd.diff: new patch from to fix build on hppa. + Closes: #511430. + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2352 (from glibc-bsd). + * add kfreebsd/local-linuxthreads29.diff: + update to fix build on kfreebsd architectures. + + [ Samuel Thibault ] + * hurd-i386/cvs-resource-prio.diff: new patch to fix detection of PRIO_* + values in some packages + * hurd-i386/cvs-hurdsig-fix.diff: new patch to fix hurd signal FD locking. + * hurd-i386/cvs-report-wait-fix.diff: patch from CVS instead of + hurd-i386/submitted-report-wait.diff. + * hurd-i386/submitted-critical-sections.diff: new patch to fix some missing + critical sections. + * hurd-i386/submitted-dup2-fix.diff: new patch to fix dup2 FD locking. + * hurd-i386/local-net-headers.diff: new patch to install net/*.h headers. + * hurd-i386/local-tls-dtv-offset.diff: new patch to fix DTV_OFFSET macro. + * hurd-i386/local-pthread_posix-option.diff: put back to series. + * hurd-i386/local-check_native.diff: new patch to provide a dummy + __check_native() function. + * hurd-i386/cvs-get_pc_thunk.diff: new patch to fix missing + __i686.get_pc_thunk.bx reference. + * hurd-i386/submitted-dl-sysdep.diff: new patch to fix static linking. + * hurd-i386/submitted-stat.diff: clean up patch. + * hurd-i386/submitted-itimer-lock.diff: new patch fixing itimer unlocking. + + -- Aurelien Jarno Tue, 17 Feb 2009 22:49:15 +0100 + +glibc (2.9-0ubuntu12) jaunty; urgency=low + + * debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff: Patch + from Fedora 2.9-3 to temporarily disable _nss_dns_gethostbyname4_r, + which caused problems for systems with broken IPv6 connectivity + (LP: #313218, https://bugzilla.redhat.com/show_bug.cgi?id=459756). + + -- Colin Watson Sat, 21 Feb 2009 07:40:16 +0000 + +glibc (2.9-0ubuntu11) jaunty; urgency=low + + * Update patch arm/local-no-hwcap to flag HWCAP_ARM_VFP as an important + hwcap; this adds /lib/vfp, /usr/lib/vfp etc. to the ldconfig and ld.so + search path. + * Update patch arm/local-no-hwcap to drop HWCAP_ARM_FAST_MULT from important + hwcaps as fastmult is even present on StrongARM according to Wookey; + suggested by Riku Voipio. + + -- Loic Minier Mon, 16 Feb 2009 13:32:55 +0100 + +glibc (2.9-0ubuntu10) jaunty; urgency=low + + * Move locale generation programs back to libc6, belocs-locales-bin + is dead upstream, and more and more incapable of building current + locale definitions: + - debhelper.in/libc.install: Install localedef, locale, + update-locale, and validlocale again. (locale-def will be + shipped in langpack-locales, since it is closely related to it). + - debhelper.in/libc.manpages: Install manpages for above programs. + - sysdeps/depflags.pl: Conflicts/Replaces: belocs-locales-bin. + * Merged current fixes from Debian's glibc-2.9 branch (r3269). + + -- Martin Pitt Fri, 13 Feb 2009 18:31:04 +0100 + +glibc (2.9-0ubuntu9) jaunty; urgency=low + + * Merge with Debian, glibc-2.9 branch, r3244. + - Fix testsuite failure in locale test. + + -- Matthias Klose Mon, 19 Jan 2009 21:42:02 +0100 + +glibc (2.9-0ubuntu8) jaunty; urgency=low + + * Merge with Debian, glibc-2.9 branch, r3241. + * Apply localedata patches. LP: #318507. + * Remove progressions from expected test results. + + -- Matthias Klose Mon, 19 Jan 2009 18:26:53 +0100 + +glibc (2.9-0ubuntu7) jaunty; urgency=low + + [ Matthias Klose ] + * Merge with Debian, glibc-2.9 branch, r3226. + + [ Kees Cook ] + * Added debian/patches/any/cvs-bz-9720-resource.diff: upstream + fixes for resource.h mis-compile (LP: #302087). + + -- Kees Cook Thu, 08 Jan 2009 13:27:48 -0800 + +glibc (2.9-0ubuntu6) jaunty; urgency=low + + [ Matthias Klose ] + * Merge with Debian, glibc-2.9 branch, r3200. + + [ Kees Cook ] + * Add debian/patches/ubuntu/no-sprintf-pre-truncate.diff: do not + pre-clear target buffers on sprintf to retain backward compatibility + (LP: #305901). + + -- Kees Cook Thu, 01 Jan 2009 13:28:59 -0800 + +glibc (2.9-0ubuntu5) jaunty; urgency=low + + * Mark tst-pselect.out as failing on armel. + + -- Matthias Klose Wed, 03 Dec 2008 23:16:24 +0100 + +glibc (2.9-0ubuntu4) jaunty; urgency=low + + * Mark tst-mqueue5.out as failing on sparcv9b. + * Mark tst-cpuclock2.out as failing on sparc. + + -- Matthias Klose Wed, 03 Dec 2008 01:33:20 +0100 + +glibc (2.9-0ubuntu3) jaunty; urgency=low + + * Update expected testsuite results for powerpc64. Fixes build failure + on powerpc. + * Build with gcc-4.3 on sparc again (still fails on the buildd, builds + on a T1000). + * debian/testsuite-checking/compare.sh: Robustify. + + -- Matthias Klose Sun, 30 Nov 2008 12:45:05 +0100 + +glibc (2.9-0ubuntu2) jaunty; urgency=low + + * Drop the build dependency on gcc-4.2-multilib on sparc for an initial build. + + -- Matthias Klose Sat, 29 Nov 2008 16:01:59 +0100 + +glibc (2.9-0ubuntu1) jaunty; urgency=low + + * New upstream, release, taken from the glibc-2_9-base tag. + - Remove patches applied upstream: any/cvs-bug-iconv6_tst-iconv7.diff, + sparc/cvs-context.diff, any/cvs-getaddrinfo.diff, + any/cvs-iconv-braces.diff, any/cvs-nscd-getservbyport.diff, + any/cvs-nscd-getservbyport.diff, any/cvs-tst-regex.diff, + any/cvs-regex_anchor.diff, hppa/submitted-atomic_h.diff, + hppa/submitted-fesetenv.diff, any/submitted-rpcgen-makefile.diff, + any/regexp_h___REPB_PREFIX.diff. + - Update patches: any/local-bashisms.diff, any/local-ipv6-lookup.diff. + - any/submitted-user_h.diff: Remove, replaced with #error stub. + - Use barriers and SMP-safe operations on ARM NPTL. LP: #303188. + * debian/symbols.wildcards: Update for 2.9. + * Add tst-tls6.out to expected test failures on sparc64. + * Merge with Debian, r3198. + * patches/arm/local-memset.diff: Performance improve on ARM memset. + + -- Matthias Klose Sat, 29 Nov 2008 15:25:22 +0100 + +glibc (2.8+20081027-0ubuntu10) jaunty; urgency=low + + * Mark tst-cancel7.out, tst-cancelx7.out, tst-cleanup0.out and tst-fmon.out + as failing on armel as well. + + -- Matthias Klose Sat, 15 Nov 2008 13:56:40 +0100 + +glibc (2.8+20081027-0ubuntu9) jaunty; urgency=low + + * debian/testsuite-checking/compare.sh: Output the contents of the failure + logs to the build log for non-regressions as well. + Report progressions as well. + * Mark test failures on armel as expected for a first build. + + -- Matthias Klose Sat, 15 Nov 2008 09:34:14 +0100 + +glibc (2.8+20081027-0ubuntu8) jaunty; urgency=low + + * debian/testsuite-checking/compare.sh: if there are regressions in + the test suite, output the contents of the failure logs to the build + log. (wanted for debugging current armel build failure) + + -- Steve Langasek Sat, 15 Nov 2008 00:44:59 +0000 + +glibc (2.8+20081027-0ubuntu7) jaunty; urgency=low + + * debian/sysdeps/ia64.mk, debian/sysdeps/sparc.mk, + debian/sysdeps/powerpc.mk, debian/sysdeps/linux.mk, + debian/script.in/kernelcheck.sh: make 2.6.15 the minimum kernel + version across all archs, because there are no major differences + between 2.6.15 and 2.6.18 for any architectures and this lets us run + jaunty chroots on kernels from Ubuntu 6.06 LTS. + + -- Steve Langasek Fri, 14 Nov 2008 19:22:19 +0000 + +glibc (2.8+20081027-0ubuntu6) jaunty; urgency=low + + * debian/script.in/kernelcheck.sh: Treat `uname -m` == powerpc* or ppc* as + powerpc. (Argh.) + + -- Colin Watson Tue, 04 Nov 2008 01:48:57 +0000 + +glibc (2.8+20081027-0ubuntu5) jaunty; urgency=low + + * debian/script.in/kernelcheck.sh: Treat `uname -m` == sparc64 as sparc. + + -- Colin Watson Mon, 03 Nov 2008 12:39:47 +0000 + +glibc (2.8+20081027-0ubuntu4) jaunty; urgency=low + + * debian/testsuite-checking/expected-results-ia64-linux-gnu-libc, + debian/testsuite-checking/expected-results-powerpc-linux-gnu-libc, + debian/testsuite-checking/expected-results-powerpc64-linux-ppc64, + debian/testsuite-checking/expected-results-sparc-linux-gnu-libc, + debian/testsuite-checking/expected-results-sparc64-linux-sparc64, + debian/testsuite-checking/expected-results-sparcv9b-linux-sparcv9b: Add + tst-pselect, since the Ubuntu buildds for these architectures are still + running 2.6.15 and pselect is racy there. + + -- Colin Watson Mon, 03 Nov 2008 11:50:33 +0000 + +glibc (2.8+20081027-0ubuntu3) jaunty; urgency=low + + * debian/sysdeps/ia64.mk, debian/sysdeps/sparc.mk, + script.in/kernelcheck.sh: Set the minimal kernel version to 2.6.15 for + ia64 and sparc, whose Ubuntu buildds are also still running 2.6.15. + * debian/patches/ubuntu/stack-guard-quick-randomization.diff: Add test + changes from Fedora patch by Jakub Jelinek: + - elf/tst-stackguard1.c (do_test): Don't fail if the poor man's + randomization doesn't work well enough. + * debian/testsuite-checking/expected-results-powerpc-linux-gnu-libc: + Expect failure from test-fenv, since it's been failing at least back to + Ubuntu 8.04 and this is probably due to use of an old kernel on the + Ubuntu powerpc buildds (LP: #292360). + + -- Colin Watson Sun, 02 Nov 2008 11:28:16 +0000 + +glibc (2.8+20081027-0ubuntu2) jaunty; urgency=low + + * Reapply changes from 2.8~20080505-0ubuntu7. + * debian/sysdeps/powerpc.mk, script.in/kernelcheck.sh: Set the + minimal kernel version to 2.6.15 for powerpc. + + -- Matthias Klose Sat, 01 Nov 2008 07:41:22 +0100 + +glibc (2.8+20081027-0ubuntu1) jaunty; urgency=low + + * Merge with Debian; remaining changes: + - Packaging: + + External tzdata + + Use external locale information + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + + Use .conf for files in /etc/ld.so.conf.d. + - Patches: + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + * testsuite-checking: Use Debian's testsuite checking, sort expected and + current test results before comparing. + + -- Matthias Klose Fri, 31 Oct 2008 19:05:39 +0100 + +glibc (2.8+20080809-3) experimental; urgency=low + + [ Aurelien Jarno ] + * New upstream release. + - Fix conversions to ISO-2022-JP. Closes: #466340. + - "Tarballs are a completely outdated concept": + + use a flat .orig.tar.gz + + rules.d/tarball.mk: remove all, add a get-orig-source target + + rules.d/quilt.mk: fix the unpatch target + - Update any/cvs-getaddrinfo.diff. + - Update any/submitted-i686-timing.diff. + - Update hurd-i386/cvs-lock-memory-clobber.diff. + - Update kfreebsd/local-sys_queue_h.diff + - Update locale/preprocessor-collate-uli-sucks.diff + - Update localedata/tailor-iso14651_t1.diff. + - Update localedata/locales-fr.diff. + - Update localedata/cy_GB-first_weekday.diff. + - Update localedata/fr_BE-first_weekday.diff. + - Update localedata/fr_CA-first_weekday.diff. + - Update localedata/fr_CH-first_weekday.diff. + - Update localedata/fr_LU-first_weekday.diff. + - Remove alpha/submitted-xstat.diff (outdated). + - Remove amd64/cvs-vdso_clock_gettime.diff (merged). + - Remove arm/cvs-ioperm.diff (merged). + - Remove arm/cvs-gcc4-inline.diff (merged). + - Remove arm/local-args6.diff (merged). + - Remove arm/submitted-RTLD_SINGLE_THREAD_P.diff (merged). + - Remove hppa/cvs-atomic.diff (merged). + - Remove hppa/cvs-lowlevellock.diff (merged). + - Remove hurd-i386/cvs-kernel-features.diff (merged). + - Remove hurd-i386/cvs-O_CLOEXEC_fix.diff (merged). + - Remove hurd-i386/cvs-epfnosupport.diff (merged). + - Remove hurd-i386/cvs-df.diff (merged). + - Remove hurd-i386/cvs-blocked-exceptions.diff (merged). + - Remove i386/cvs-short-for-fnstsw.diff (merged). + - Remove mips/cvs-memory-barriers.diff (merged). + - Remove mips/cvs-mknod.diff (merged). + - Remove mips/cvs-fcsr.diff (merged). + - Remove mips/cvs-mipsn32.diff (merged). + - Remove sh4/cvs-nptl-private-futexes.diff (merged). + - Remove all/cvs-gai_conf.diff (merged). + - Remove any/cvs-epoll_h.diff (merged). + - Remove any/cvs-ether_line.diff (merged). + - Remove any/cvs-ethertype.diff (merged). + - Remove any/cvs-fchmodat.diff (merged). + - Remove any/cvs-gcc-4.3.diff (merged). + - Remove any/cvs-iconv-iso2022jp-loop-bug.diff (merged). + - Remove any/cvs-isoc99_vscanf.diff (merged). + - Remove any/cvs-rfc3484.diff (merged). + - Remove any/cvs-sched_h.diff (merged). + - Remove any/cvs-strerror_r.diff (merged). + - Remove any/local-strfry.diff (merged). + - Remove any/cvs-strtod.diff (merged). + - Remove any/cvs-tzfile.diff (merged). + - Remove any/cvs-vfscanf.diff (merged). + - Remove any/cvs-sunrpc_rpc_thread.diff (merged). + - Remove any/cvs-wchar_h.diff (merged). + - Remove any/local-dl-execstack.diff (outdated). + - Remove any/local-gcc4-wcstol_l.diff (outdated). + - Remove any/local-ip6-localhost.diff (fixed differently). + - Remove any/local-notls.diff (outdated). + - Remove any/submitted-ieee754_h.diff (merged). + - Remove any/submitted-link-local_resolver.diff (merged). + - Remove localedata/cvs-locale-ig_NG.diff (merged). + - Remove localedata/cvs-locale-lo_LA.diff (merged). + - Remove localedata/cvs-locale-ug_CN.diff (merged). + - Remove localedata/locale-es_CR.diff (merged). + - Remove localedata/locale-pt_PT.diff (merged). + - Add patches/alpha/submitted-creat64.diff from Gentoo. + - Add patches/alpha/submitted-dl-support.diff from Gentoo. + - debian/shlibver: bump to 2.8. + - debian/locales-depver: bump to 2.8. + * Convert all patch to patchlevel -p1. Closes: #485165. + * debian/rules.d/quilt.mk: add a refresh target. + * local/manpages/*: fix comments to make lintian happy. + * locale/check-unknown-symbols.diff: changes errors to warnings. + * debian/control.in/main: update Standards-Version to 3.8.0: + - Add debian/README.source. + * debian/rules, debian/rules.d/build.mk, debian/testsuite-checking/*: + implement regression check, based on a patch from Carlos O'Donell. + * testsuite-checking/expected-results-alpha-linux-gnu-libc: new file. + * testsuite-checking/expected-results-alphaev67-linux-alphaev67: new file. + * testsuite-checking/expected-results-arm-linux-gnueabi-libc: new file. + * testsuite-checking/expected-results-hppa-linux-gnu-libc: new file. + * testsuite-checking/expected-results-i486-kfreebsd-gnu-libc: new file. + * testsuite-checking/expected-results-i486-linux-gnu-libc: new file. + * testsuite-checking/expected-results-i686-kfreebsd-i386: new file. + * testsuite-checking/expected-results-i686-kfreebsd-i686: new file. + * testsuite-checking/expected-results-i686-linux-i386: new file. + * testsuite-checking/expected-results-i686-linux-i686: new file. + * testsuite-checking/expected-results-i686-linux-xen: new file. + * testsuite-checking/expected-results-ia64-linux-gnu-libc: new file. + * testsuite-checking/expected-results-mips-linux-gnu-libc: new file + * testsuite-checking/expected-results-mips32-linux-mipsn32: new file. + * testsuite-checking/expected-results-mips64-linux-mips64: new file. + * testsuite-checking/expected-results-mips32el-linux-mipsn32: new file. + * testsuite-checking/expected-results-mips64el-linux-mips64: new file. + * testsuite-checking/expected-results-mipsel-linux-gnu-libc: new file. + * testsuite-checking/expected-results-powerpc-linux-gnu-libc: new file. + * testsuite-checking/expected-results-powerpc64-linux-ppc64: new file. + * testsuite-checking/expected-results-s390-linux-gnu-libc: new file. + * testsuite-checking/expected-results-s390x-linux-s390x: new file. + * testsuite-checking/expected-results-sparc64-linux-sparc64: new file. + * testsuite-checking/expected-results-sparc-linux-gnu-libc: new file. + * testsuite-checking/expected-results-sparcv9b-linux-sparcv9b: new file. + * testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc: new file. + * testsuite-checking/expected-results-x86_64-linux-amd64: new file. + * testsuite-checking/expected-results-x86_64-linux-gnu-libc: new file. + * control.in/main: build-depends on dpkg (>= 1.14.17). + * Add symbols files for the various libraries, based on a patch by + Raphaël Hertzog. Closes: #462444. + * localedata/supported.diff: sort locales by alphabetical order. Closes: + #493231. + * debian/rules, debian/rules.d/build.mk, debian/sysdeps.mk/*: use a common + huge TIMEOUTFACTOR for all architectures. + * debian/sysdeps/mipsel.mk: use the correct triplet for mipsn32 and mips64 + builds. + * debian/sysdeps/kfreebsd-amd64.mk: remove wrong symlink /lib32/lib32. + * debian/sysdeps/amd64.mk,kfreebsd-amd64.mk: enable i686 optimizations. + * debhelper.in/locales-all.prerm, debhelper.in/locales.postinst: remove + prepended path. + * debian/sysdeps/hppa.mk: use relative symlinks for hppa64 include + directories. + * patches/all/submitted-iconv-latin9.diff: add latin9 as an alias to + latin-9 for consistency with other charsets. Closes: #497449. + * rules, rules.d/build.mk, debhelper.in/glibc-doc.manpages: install + preprocessed manpages instead of raw ones. + * debian/sysdeps/*.mk, script.in/kernelcheck.sh: bump minimal kernel + version to 2.6.18. Closes: #499689. + * debian/control.in/main: add Vcs-Svn and Vcs-Browser field. Closes: + #499769. + * debian/sysdeps/depflags.pl: add a conflict on nscd (<< 2.8) to libc + Closes: #498516). + * rules, rules.d/build.mk, debhelper.in/glibc-doc.manpages: install the + generated manpages. + * any/cvs-bug-iconv6_tst-iconv7.diff: new patch from upstream to fix + bug-iconv6 and tst-iconv7 when the locales package is not installed. + + [ Petr Salinger ] + * add any/local-linuxthreads-ptw.diff. Closes: #494908. + * add kfreebsd/local-sysdeps28.diff, glibc 2.8 specific kfreebsd sysdeps. + + [ Samuel Thibault ] + * Add hurd-i386/submitted-report-wait.diff. + + -- Aurelien Jarno Sat, 25 Oct 2008 21:22:39 +0200 + +glibc (2.8~20080505-0ubuntu7) intrepid; urgency=low + + * Add debian/patches/ubuntu/stack-guard-quick-randomization.diff: do + light-weight randomization of the stack guard value instead of using + a static sentinel (LP: #275493). + + -- Kees Cook Sun, 28 Sep 2008 09:30:01 -0700 + +glibc (2.8~20080505-0ubuntu6) intrepid; urgency=low + + [ Matthias Klose ] + * Add debian/patches/any/regexp_h___REPB_PREFIX.diff patch (LP: #234056): + fix xview FTBFS error (Devid Filoni). LP: #234056. + + [ Michael Vogt ] + * sysdeps/depflags.pl: + - really add "findutils (>= 4.4.0-2ubuntu2)" to the libc6 depends, + this needs to be done in sysdeps/depflags.pl the regular + depend lines in debian/control.in/libc are just ignored + (LP: #234345) + + -- Michael Vogt Fri, 20 Jun 2008 17:28:24 +0200 + +glibc (2.8~20080505-0ubuntu5) intrepid; urgency=low + + * Do not run the testsuite on hppa ("threading on hppa is kinda goofy, + so the thread-stressing testsuite breaks"). + + -- Matthias Klose Tue, 10 Jun 2008 14:37:08 +0200 + +glibc (2.8~20080505-0ubuntu4) intrepid; urgency=low + + [ Michael Vogt ] + * debian/control: + - add a depends on findutils (>= 4.4.0-2ubuntu2) to libc6 to ensure + that xargs is unpacked before the new libc6 is unpacked. The xargs + from hardy crashes with the libc6 from intrepid (LP: #234345) + + [ Matthias Klose ] + * Merge Debian 2.7-12: + + [ Aurelien Jarno ] + * patches/alpha/submitted-procfs_h.diff: don't include elf/asm.h on alpha, + as it has been removed from linux-libc-dev. + * patch/arm/cvs-ioperm.diff: don't include asm/page.h as it has been removed + from linux-libc-dev. Closes: #480892. + * patches/hppa/cvs-atomic.diff: don't remove "memory" asm constraint. Fixes + FTBFS on hppa. + * Update Swedish debconf translation, by Martin Bagge. Closes: #482467. + * sysdeps/amd64.mk, sysdeps/i386.mk, control.in/main: bump g++-4.3 build-depends + to (>= 4.3.0-2) to make sure the cld fix is applied. Use gcc-4.3 on amd64 + and i386. + * patches/any/cvs-iconv-braces.diff: new patch from upstream to fix various + iconv bugs. + * local/manpages/nscd.conf.5: update nscd.conf manpage. Closes: #482505. + + [ Clint Adams ] + * Add any/cvs-regex_anchor.diff to fix performance anomaly with ^$. + closes: #475474. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-termios.diff: update patch, fixes compilation of jove. + * patches/hurd-i386/local-pthread-unsupported-stubs.diff: new patch to + declare the unsupported function stubs, fixes compilation of pike. Also + bump the dependency on hurd-dev to get . + * patches/hurd-i386/local-unlockpt-chroot.diff: new patch to fix ptys in + chroots. + + -- Matthias Klose Tue, 03 Jun 2008 16:07:12 +0200 + +glibc (2.8~20080505-0ubuntu3) intrepid; urgency=low + + * Merge from Debian: + - patches/any/local-no-pagesize.diff: don't include asm/page.h from + sys/user.h on alpha. Closes: #480295. + - patches/any/submitted-user_h.diff: don't include linux/user.h from + sys/user.h. Closes: #480093. + - patches/hppa/submitted-fesetenv.diff: fix fesetenv() on hppa with + gcc-4.3. + - sysdeps/arm.mk, sysdeps/hppa.mk, sysdeps/s390.mk, control.in/main: use + gcc-4.3 on arm, hppa and s390. + - debian/shlibs-add-udebs: new script from Frans Pop to correctly compute + the udev dependencies. Closes: #474293. + - rules.d/debhelper.mk: remove linda overrides installation. + - debhelper.in/*lintian: update. + - control.in/main: relax a few dependencies. + - rules.d/debhelper.mk: avoid creating empty directories when building + libc6-dbg. + + -- Matthias Klose Sun, 11 May 2008 13:09:59 +0200 + +glibc (2.8~20080505-0ubuntu2) intrepid; urgency=low + + * Don't build-depend on g++-multilib on lpia. + + -- Matthias Klose Fri, 09 May 2008 20:20:05 +0200 + +glibc (2.8~20080505-0ubuntu1) intrepid; urgency=low + + * New upstream version, built from a prerelease tarball. + - Remove patches applied upstream: amd64/cvs-vdso_clock_gettime.diff, + hppa/cvs-atomic.diff, hppa/hppalll.diff, sparc/submitted-v9v2.diff, + all/cvs-gai_conf.diff, any/cvs-epoll_h.diff, any/cvs-ether_line.diff, + any/cvs-ethertype.diff, any/cvs-fchmodat.diff, any/cvs-gcc-4.3.diff, + any/cvs-iconv-iso2022jp-loop-bug.diff, any/cvs-rfc3484.diff, + any/cvs-sched_h.diff, any/cvs-strtod.diff, any/cvs-tzfile.diff, + any/cvs-vfscanf.diff, any/cvs-wchar_h.diff, + any/cvs-sunrpc_rpc_thread.diff, any/cvs-strerror_r.diff, + any/cvs-short-for-fnstsw.diff, any/local-strfry.diff, + any/submitted-ieee754_h.diff, any/submitted-link-local_resolver.diff. + - Update patches: i386/submitted-i686-timing.diff. + * debian/*.symbols*: + - Add new symbols. + - Remove GLIBC_PRIVATE symbols not found anymore in 2.8: + _dl_tls_get_addr_soft@GLIBC_PRIVATE, __nss_services_lookup@GLIBC_PRIVATE. + * debhelper.in/libc.install: Relax file location for snapshot builds. + + -- Matthias Klose Fri, 09 May 2008 14:22:01 +0200 + +glibc (2.7-18) unstable; urgency=low + + * patches/localedata/mt_MT_euro.diff, patches/localedata/el_CY_euro.diff: + new patches to switch Cyprus and Malta currency to Euro. + + -- Aurelien Jarno Sun, 04 Jan 2009 11:28:23 +0100 + +glibc (2.7-17) unstable; urgency=low + + * patches/localedata/sk_SK_euro.diff: new patch to switch Slovakia + currency to Euro. Closes: bug#510423. + + -- Aurelien Jarno Fri, 02 Jan 2009 22:49:53 +0100 + +glibc (2.7-16) unstable; urgency=low + + * patches/any/submitted-rpcgen-makefile.diff: new patch to fix fancy + Makefile filename when using rpcgen -a. Closes: bug#503182. + + -- Aurelien Jarno Thu, 23 Oct 2008 15:39:04 +0200 + +glibc (2.7-15) unstable; urgency=low + + * debhelper.in/locales.config, debhelper.in/locales.postinst: modify + /etc/locale.gen instead of regenerating it. Closes: bug#494468. + * any/cvs-nscd-getservbyport.diff: new patch from upstream to fix getservbyport() + when nscd is used. Closes: bug#500055. + + -- Aurelien Jarno Sun, 12 Oct 2008 23:04:27 +0200 + +glibc (2.7-14) unstable; urgency=low + + [ Petr Salinger ] + * kfreebsd/local-sysdeps.diff: update to revision 2322 (from glibc-bsd). + * extend kfreebsd/local-ftw.diff: do not use *at functions also in glob.c, + this patch is applied only on kfreebsd, fixes globtest.out failure. + * any/local-linuxthreads-weak.diff: new patch to pass + stdio-common/scanf15.out test on linuxthreads platforms, + although it seems to be rather gcc 4.x bug, see GCC Bugzilla Bug 37266. + + [ Aurelien Jarno ] + * patches/mips/cvs-mknod.diff: new patch from upstream to allow > 255 minors + on mips. Closes: #493751. + * patches/sparc/cvs-context.diff: new patch from upstream to add + getcontext(), setcontext(), makecontext() on Sparc. Closes: #295173. + * patches/hppa/cvs-context.diff: new patch from upstream to add + getcontext(), setcontext(), makecontext() on PARISC. Closes: #492778. + * any/local-ip6-localhost.diff: new patch from upstream BTS, to remove the + ::1 -> 127.0.0.1 mapping. + * any/cvs-isoc99_vscanf.diff: new patch from upstream to fix vscanf on + non-GNU compilers. + * Fix nosegneg pseudo hwcap. Closes: #499366. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-lock-memory-clobber.diff: new patch from upstream + to fix safety of locks. + * patches/hurd-i386/local-pthread_posix-option.diff: new patch to advertise + the libpthread from the hurd packages. + * patches/hurd-i386/cvs-signal-werror.diff: new patch to fix gdb compilation. + * patches/hurd-i386/local-tls-support.diff: fix cthread compilation. + + -- Aurelien Jarno Sat, 20 Sep 2008 10:00:36 +0200 + +glibc (2.7-13) unstable; urgency=low + + [ Aurelien Jarno ] + * Update Brazilian Portuguese debconf translation, by Felipe Augusto van de + Wiel. Closes: #485381. + * patches/any/cvs-getaddrinfo.diff: new patch from CVS to correctly + initialize internal resolver structures in getaddrinfo(). Closes: + #489586. + * Update Romanian debconf translation, by Eddy PetriÅŸor. Closes: #488734. + * any/cvs-tst-regex.diff: new patch from CVS to add a timeout to tst-regex. + Closes: #489856. + * control.in/main: build depends on gcc-4.3 (>= 4.3.0-7), remove + mips/local-gcc-ice.diff. + * Update Swedish debconf translation, by Martin Bagge. Closes: #492191. + * Revert the changes to patches/hppa/cvs-atomic.diff, it was not the cause + of the "tst-regex problem". + * hppa/cvs-lowlevellock.diff: new patch from upstream to fix build of NPTL + glibc on hppa. Closes: #486589. + + [ Petr Salinger] + * debian/sysdeps/kfreebsd.mk: also use the bsm/ directory from kernel + headers. + * kfreebsd/local-sysdeps.diff: update to revision 2265 (from glibc-bsd). + * Disable call to "GL(dl_wait_lookup_done)" in linuxthreads builds. Proper + solution still have to be created. Stop crashes in mean time. See #489066. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-MSG_NOSIGNAL.diff: New patch to implement + MSG_NOSIGNAL. + * patches/hurd-i386/local-msg-nosignal.diff: Forcibly set MSG_NOSIGNAL to 0 + until pfinet gets recompiled. Only apply on hurd-i386. + * Use gcc-4.3 on hurd-i386. + * patches/hurd-i386/cvs-open_2.diff: New patch to implement __open_2 + and __openat_2. Together with kfreebsd update closes: #489357. + * patches/hurd-i386/local-pthread_types.diff: New patch to drag pthread + types from hurd headers. Bump the hurd-dev dependency version + accordingly. + * patches/hurd-i386/cvs-fcntl-types.diff: New patch to include + from like on Linux. Fixes a lot of FTBFS on + hurd. + * patches/hurd-i386/local-tls.diff: Resync with upstream. + * patches/hurd-i386/local-tls-support.diff: Make tls.h also include + and include , like on Linux. + * patches/hurd-i386/submitted-trivial.diff: Remove, thanks to updated tls.h. + + [ Pierre Habouzit ] + * Cherry-pick upstream fixes with respect to locale rwlocks, merge them into + patches/any/cvs-strerror_r.diff. Closes: #489906. + + -- Aurelien Jarno Tue, 29 Jul 2008 03:09:20 +0200 + +glibc (2.7-12) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/alpha/submitted-procfs_h.diff: don't include elf/asm.h on alpha, + as it has been removed from linux-libc-dev. + * patch/arm/cvs-ioperm.diff: don't include asm/page.h as it has been removed + from linux-libc-dev. Closes: #480892. + * patches/hppa/cvs-atomic.diff: don't remove "memory" asm constraint. Fixes + FTBFS on hppa. + * Update Swedish debconf translation, by Martin Bagge. Closes: #482467. + * sysdeps/amd64.mk, sysdeps/i386.mk, control.in/main: bump g++-4.3 build-depends + to (>= 4.3.0-2) to make sure the cld fix is applied. Use gcc-4.3 on amd64 + and i386. + * patches/any/cvs-iconv-braces.diff: new patch from upstream to fix various + iconv bugs. + * local/manpages/nscd.conf.5: update nscd.conf manpage. Closes: #482505. + + [ Clint Adams ] + * Add any/cvs-regex_anchor.diff to fix performance anomaly with ^$. + closes: #475474. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-termios.diff: update patch, fixes compilation of jove. + * patches/hurd-i386/local-pthread-unsupported-stubs.diff: new patch to + declare the unsupported function stubs, fixes compilation of pike. Also + bump the dependency on hurd-dev to get . + * patches/hurd-i386/local-unlockpt-chroot.diff: new patch to fix ptys in + chroots. + + -- Aurelien Jarno Mon, 02 Jun 2008 19:14:35 +0200 + +glibc (2.7-11ubuntu1) intrepid; urgency=low + + * Merge with Debian (r2892:2919). + - Packaging: + + External tzdata + + Use external locale information + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + + Call `sync' before building the tarball of supported locales. + + Downgrade priority of debconf questions for RELEASE_UPGRADE_MODE=desktop. + + Use the package settings for *FLAGS, not the settings from the env. + + Fail the build when regressions are detected in the testsuite. + + Build with GCC-4.3 on amd64 and i386. + - Patches: + + sparc/submitted-v9v2 + + hppa/hppalll + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + * any/cvs-short-for-fnstsw.diff: Backport from the trunk, fix build failure + with binutils from trunk. + + -- Matthias Klose Thu, 08 May 2008 12:06:01 +0200 + +glibc (2.7-11) unstable; urgency=low + + [ Aurelien Jarno ] + * Re-enable testsuite on MIPS SB1 platforms. + * mips/cvs-memory-barriers.diff: new patch from CVS to fix test_and_set. + * mips/cvs-fcsr.diff: new patch from CVS to fix floating point control + register accesses. + * local/manpages/ld.so.8: fix libraries search order. Closes: #473458. + * Update Finish debconf translation, by Esko Arajärvi. Closes: #473802. + * Replace patches/mips/submitted-mipsn32.diff by the version merged + upstream. + * patches/hppa/cvs-atomic.diff: new patch from upstream to fix atomic + locks witch gcc-4.3. + * patches/any/cvs-rfc3484.diff: update tests from CVS. Closes: #474226. + * patches/localedata/locale-shs_CA.diff: add Secwepemctsín from CVS. + * debhelper.in/libc-prof.README.Debian: new file to explain how to use + libc-prof. Closes: #442858. + * patches/any/cvs-ethertype.diff: new patch to add new ETHERTYPE_* + definitions. Closes: #474171. + * sysdeps/depflags.pl: conflicts with tzdata-etch. + * kfreebsd/local-sysdeps.diff: update to revision 2163 (from glibc-bsd). + * patches/s390/submitted-nexttowardf.diff: fix IEEE exceptions raising in + nexttowardf() on s390 with gcc-4.3. + * patches/i386/cvs-short-for-fnstsw.diff: patch for upstream to fix build + with latest binutils. + * patches/any/local-no-pagesize.diff: don't include asm/page.h from + sys/user.h on alpha. Closes: #480295. + * patches/any/submitted-user_h.diff: don't include linux/user.h from + sys/user.h. Closes: #480093. + * patches/hppa/submitted-fesetenv.diff: fix fesetenv() on hppa with + gcc-4.3. + * sysdeps/arm.mk, sysdeps/hppa.mk, sysdeps/s390.mk, control.in/main: use + gcc-4.3 on arm, hppa and s390. + * debian/shlibs-add-udebs: new script from Frans Pop to correctly compute + the udev dependencies. Closes: #474293. + * rules.d/debhelper.mk: remove linda overrides installation. + * debhelper.in/*lintian: update. + * control.in/main: relax a few dependencies. + * rules.d/debhelper.mk: avoid creating empty directories when building + libc6-dbg. + + [ Pierre Habouzit ] + * Add any/cvs-strerror_r.diff to make strerror_r actually thread safe. + Closes: #456531. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-termios.diff: new patch to revamp ioctls/termios + bits. + + -- Aurelien Jarno Sun, 11 May 2008 12:13:59 +0200 + +glibc (2.7-10ubuntu3) hardy; urgency=low + + * Probably built on the good buildds last time; pessimize expected + test results on ia64, i386. + * debian/expected_test_summary: Fix typos in expected sparc results. + + -- Matthias Klose Sat, 05 Apr 2008 00:03:19 +0200 + +glibc (2.7-10ubuntu2) hardy; urgency=low + + * Adjust debian/expected_test_summary: + - Fix typo for i386 xen. + - crypt/sha512c fails on i386 (log-test-i486-linux-gnu-libc), but not on + the PPA build. + - Add current results for ia64, powerpc, sparc. + + -- Matthias Klose Fri, 04 Apr 2008 09:09:37 +0200 + +glibc (2.7-10ubuntu1) hardy; urgency=low + + * Merge remaining changes from 2.7-10 (r2869:2892). + * If RELEASE_UPGRADE_MODE is set to `desktop', make the glibc/restart-services, + glibc/restart-failed and glibc/upgrade questions of medium priority (and + restarting the services automatically). LP: #174002. + Works as well around the upgrade errors mentioned in LP #205079 in a KDE + environment, when the upgrade is done using the update-manager. + * debian/rules: Always use the package settings for *FLAGS, not the settings + from the environment. + * Fail the build if regressions are found running the testsuite compared to + expected results from debian/expected_test_summary. Take initial values + from a PPA build predating this upload. + * Merge from Debian trunk: + - local/manpages/ld.so.8: fix libraries search order. Closes: #473458. + - Update Finish debconf translation, by Esko Arajärvi. Closes: #473802. + - Add any/cvs-strerror_r.diff to make strerror_r actually thread safe. + Closes: #456531. + * debian/rules.d/build.mk: Call `sync' before building the tarball of + supported locales. Our buildds trigger http://lkml.org/lkml/2007/8/1/337 + on every build. + + -- Matthias Klose Thu, 03 Apr 2008 21:50:42 +0200 + +glibc (2.7-10) unstable; urgency=low + + * Update Chinese debconf translation, by LI Daobing. + * Update Dutch debconf translation, by Bart Cornelis. Closes: #468300. + * Update Polish debconf translation, by Emilian Nowak. + * Update Vietnamese debconf translation, by Clytie Siddall. Closes: #468453. + * Update Basque debconf translation, by Piarres Beobide. Closes: #468463. + * Update Romanian debconf translation, by Stan Ioan-Eugen. Closes: #468671. + * Update Czech debconf translation, by Miroslav Kure. Closes: #468910. + * Update Russian debconf translation, by Sergey Alyoshin. Closes: #469037. + * Update Korean debconf translation, by Sunjae Park. Closes: #469097. + * Update French debconf translation, by Christian Perrier. Closes: #469249. + * patches/localedata/locale-es_CR.diff: chane AM/PM format to "a.m./p.m." + from "A.M/P.M.". + * Remove uk_UA from patches/localedata/first_weekday.diff: merged upstream + in a different way. Closes: bug#469439. + * patches/any/cvs-rfc3484.diff: update from CVS to allow the definition of + IPv4 scopes in /etc/gai.conf. + * patches/all/cvs-gai_conf.diff: update gai.conf from CVS to also mention + Teredo tunnels and scopev4 defaults. + * sysdeps/mips.mk, sysdeps/mipsel.mk: define TIMEOUTFACTOR. + * patches/any/cvs-strtod.diff: new patch from CVS to fix strtod(). Closes: + #465769. + * Update Italian debconf translation, by Luca Monducci. Closes: #469985. + * control.in/main, sysdeps/*.mk, rules: build with gcc-4.3 by default, + except on alpha, arm, hppa, s390 and hurd-i386. + * rules, rules.d/build.mk: fix parallel build. + * control.in/main: build witch gcc-4.2 on i386 and amd64, as gcc-4.3 does + not emit cld instructions in the prologue of the functions anymore. + Closes: #469568. + * debian/rules.d/build.mk: disable testsuite on ARM machines running a + 2.6.21 to 2.6.24 kernel. + * Replace any/submitted-gcc-4.3.diff by any/cvs-gcc-4.3.diff. + * debhelper.in/libc.preinst, debhelper.in/libc.postinst: remove support for + upgrade from Potato, and misc fixes. + * control.in/main, rules.d/control.mk: remove @threads_arches@, as all + architectures now support threads. + * control.in/main, debhelper.in/glibc-source.install: build a glibc-source + package. + * sysdeps/mips.mk, sysdeps/mipsel.mk, control.in/main: enable n32 and 64 + flavours. Closes: #341884. + * Update Arabic debconf translation, by Ossama Khayat. Closes: #471472. + * rules.d/build.mk: reset LDFLAGS, as dpkg now defines it to a default + value which breaks the glibc. + * patches/mips/local-gcc-ice.diff: decrease optimisations on a few files + to workaround gcc ICE on mips/mipsel n32/64. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-blocked-exceptions.diff: new patch to dump + core when a blocked exception arises. + * patches/hurd-i386/cvs-df.diff: new patch to clear DF for signal + handlers (Closes: #470021). + * patches/hurd-i386/local-gcc-4.1-init-first.diff: update and actually + apply. + * patches/hurd-i386/submitted-mig-init.diff: new patch to fix uninitialized + local variables. + * patches/hurd-i386/local-pthread_stubs.diff: new patch to use libpthread + stubs from libpthread-stubs. Add libpthread-stubs0-dev dependency on + hurd-i386. + + -- Aurelien Jarno Thu, 27 Mar 2008 23:09:00 +0100 + +glibc (2.7-9ubuntu2) hardy; urgency=low + + * Clear out LDFLAGS when building; glibc isn't happy building with + -Wl,-Bsymbolic-functions. LP: #201673 + + -- Steve Langasek Thu, 13 Mar 2008 08:34:28 +0000 + +glibc (2.7-9ubuntu1) hardy; urgency=low + + * Merge with Debian (r2869); remaining changes: + - Packaging: + + External tzdata + + Use external locale information + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in, build glibc-doc from this source. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + - Patches: + + sparc/submitted-v9v2 + + hppa/hppalll + + Applied any/local-ipv6-lookup. + + Not applied any/local-sysctl. + * debian/sysdeps/*.mk: Still build main flavours with -O3 (using gcc-4.2). + * Use .conf for files in /etc/ld.so.conf.d. LP: #70315 + + * patches/any/local-ipv6-lookup.diff: Update (Tollef van Heen). + + [changes from Debian svn after -9] + * Update Chinese debconf translation, by LI Daobing. + * Update Dutch debconf translation, by Bart Cornelis. Closes: #468300. + * Update Polish debcon translation, by Emilian Nowak. + * Update Vietnamese debconf translation, by Clytie Siddall. Closes: #468453. + * Update Basque debconf translation, by Piarres Beobide. Closes: #468463. + * Update Romanian debconf translation, by Stan Ioan-Eugen. Closes: #468671. + * Update Czech debconf translation, by Miroslav Kure. Closes: #468910. + * Update Russian debconf translation, by Sergey Alyoshin. Closes: #469037. + * Update Korean debconf translation, by Sunjae Park. Closes: #469097. + * Update French debconf translation, by Christian Perrier. Closes: #469249. + * patches/localedata/locale-es_CR.diff: chane AM/PM format to "a.m./p.m." + from "A.M/P.M.". + * Remove uk_UA from patches/localedata/first_weekday.diff: merged upstream + in a different way. Closes: bug#469439. + * patches/any/cvs-rfc3484.diff: update from CVS to allow the definition of + IPv4 scopes in /etc/gai.conf. + * patches/all/cvs-gai_conf.diff: update gai.conf from CVS to also mention + Teredo tunnels and scopev4 defaults. + * sysdeps/mips.mk, sysdeps/mipsel.mk: define TIMEOUTFACTOR. + * patches/any/cvs-strtod.diff: new patch from CVS to fix strtod(). Closes: + #465769. + * Update Italian debconf translation, by Lica Monducci. Closes: #469985. + * control.in/main, sysdeps/*.mk, rules: build with gcc-4.3 by default, + except on alpha, arm, armel, hppa, s390 and hurd-i386. + * rules, rules.d/build.mk: fix parallel build. + * control.in/main: build-depends on gcc-4.3 (>= 4.3.0-2) to make sure a cld + instruction is emitted in the prologue of functions using stringops. + Closes: #469568. + * debian/rules.d/build.mk: disable testsuite on ARM machines running a + 2.6.21 to 2.6.24 kernel. + + -- Matthias Klose Wed, 12 Mar 2008 22:08:00 +0100 + +glibc (2.7-9) unstable; urgency=low + + * patches/any/local-ldso-disable-hwcap.diff: revert previous changes + as they break etch -> lenny upgrades. Closes: #465753. + * kfreebsd/local-sysdeps.diff: update to revision 2137 (from glibc-bsd). + * any/submitted-link-local_resolver.diff: kernel 2.6.24 is out, don't wait + indefinitely for upstream. This patch from Pierre Ynard adds support for + link-local addresses in /etc/resolv.conf. + * Factorize NSS detection code: + - debhelper.in/libc.preinst, debhelper.in/libc.postinst: move NSS code + to... + - script.in/nsscheck.sh: ... this file. + - rules.d/debhelper.mk: Replace NSS_CHECK with code from + script.in/nsscheck.sh. + * debhelper.in/libc.preinst, debhelper.in/libc.templates: debconfize preinst + script. + * patches/localedata/locale-es_CR.diff: new patch to default to am/pm format + for es_CR locale. Closes: #466482. + * control.in/main, sysdeps/amd64.mk, sysdeps/i386.mk, + sysdeps/kfreebsd-amd64.mk, sysdeps/kfreebsd-i386.mk, sysdeps/sparc.mk : use + gcc-4.3 on amd64, i386, kfreebsd-i386, kfreebsd-amd64 and sparc. + * sysdeps/i386.mk, sysdeps/kfreebsd-i386.mk: use default gcc optimizations + on i386 and kfreebsd-i386 (-march=i486 -mtune=generic). + * debian/local/manpages/ldconfig.8: describe --ignore-aux-cache option. + Closes: #467509. + * Update Lithuanian debconf translation, by Gintautas Miliauskas. + * Update Catalan debconf translation, by Jordi Mallach. + * Update Spanish debconf translation, by Carlos Valdivia Yagüe. + * Update German debconf translation, by Helge Kreutzman. Closes: #468072. + * Update Galician debconf translation, by Jacobo Tarrio. Closes: #468080. + * Update Slovak debconf translation, by Ivan Masár. Closes: #468082. + * Update Portuguese debconf translation, by Ricardo Silva. Closes: #468091. + * update Japanese debconf translation, by Kenshi Muto. Closes: #468099. + + -- Aurelien Jarno Wed, 27 Feb 2008 19:14:37 +0100 + +glibc (2.7-8) unstable; urgency=low + + * any/cvs/rfc3484.diff: patch from CVS to fix recognition of interface + family. Closes: #465583. + + -- Aurelien Jarno Wed, 13 Feb 2008 17:12:18 +0100 + +glibc (2.7-7) unstable; urgency=low + + [ Arthur Loiret ] + * patches/sh4/cvs-nptl-private-futexes.diff: new patch from CVS to fix + FTBFS on sh4. + + [ Samuel Thibault ] + * patches/hurd-i386/cvs-epfnosupport.diff: new patch to fix socket() + error for IPV6. + + [ Aurelien Jarno ] + * patches/any/local-ldso-disable-hwcap.diff: enable tls/ directory even + when hardware capabilities are disabled. This workarounds a bug in + nvidia-glx. Closes: #453480. + * patches/mips/local-r10k.diff: new patch from Florian Lohoff to + workaround LL/SC bug on R10k. Closes: #462112. + * patches/mips/submitted-mipsn32.diff: new patch to fix truncate64() + on MIPS n32. + * kfreebsd/local-sysdeps.diff: update to revision 2129 (from glibc-bsd). + * patches/any/cvs-epoll_h.diff: new patch from CVS to define EPOLLRDHUP + in /usr/include/sys/epoll.h. Closes: #463342. + * patches/any/submitted-gcc-4.3.diff: pass -isystem option for GCC's + include-fixed/ directory. Fixes build with gcc-4.3. + * debian/control.in/main: bump to Standards-Version 3.7.3. + * debian/sysdeps/*.mk: build main flavours with -O2 instead of -O3 (risks to + trigger a bug in the compiler are higher with -O3). Remove -g from cflags, + as it is automatically added by the glibc scripts. + * debhelper.in/nscd.init: depends on $remote_fs instead of $local_fs. + Closes: #464022. + * patches/any/submitted-ieee754_h.diff: use __BIG_ENDIAN instead of + BIG_ENDIAN. Closes: #464594. + * local/manpages/ld.so.8: Add missing options to manpage. Closes: + #464395. + * rules.d/build.mk: build the locales in the build target instead of the + install one to workaround a bug in fakeroot. Closes: #464924. + * patches/alpha/local-dl-procinfo.diff: fix _dl_string_platform() to accept + NULL pointers, which happens on statically linked binaries. Closes: + bug#456260. + * local/manpages/gai.conf.5: new manpage. + * any/submitted-rfc3484-sortv4.diff: Drop. Replaced by ... + * ... any/cvs/rfc3484.diff: patch from upstream to fix various RFC3484 + issues: + - Fix source IPv4 source address length computation. Closes: bug#456779. + - Only apply rule 9 for IPv4 if source and destination addresses are on + the same subnet. Closes: bug#438179. + + -- Aurelien Jarno Tue, 12 Feb 2008 22:29:56 +0100 + +glibc (2.7-6) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/localedata/locale-ks_IN.diff: new locale contributed by Rakesh + Pandit. Closes: #457351. + * patches/series: enable patches/any/cvs-vfscanf.diff. Closes: #453408. + * Support dpkg-buildpackage -j, but only debian/rules is actually run in + parallel. + * patches/any/cvs-iconv-iso2022jp-loop-bug.diff: patch from CVS to fix + iconv hang when converting to ISO-2022-JP. Thanks to Bryan Donlan for + the patch. Closes: #458579. + * kfreebsd/local-sysdeps.diff: update to revision 2094 (from glibc-bsd). + * patches/amd64/cvs-vdso_clock_gettime.diff: new patch from CVS to fix + static linking on amd64. + * patches/any/local-linuxthreads-fd.diff: new patch to make sure + linuxthreads doesn't use stdin, stdout or stderr for its internal + use. + * debhelper.in/libc.preinst: also check for libc6-xen in non-dpkg-owned + files test. Closes: #459523. + * patches/any/submitted-rfc3484-labels.diff: remove, this patch is actually + broken, and the observed behaviour conforms with the RFC. + * patches/any/submitted-fileops-and-signals.diff: disabled as it breaks too + much programs. Closes: #459643. + * patches/localedata/locale-pt_PT.diff: new patch from Flávio Martins to + fix mon_decimal_point for pt_PT. Closes: #459217. + * debian/debhelper.in/locales.postinst: don't update /etc/default/locale + if it already exists and DEBCONF_RECONFIGURE is not empty. Closes: + #458914. + * debian/sysdeps/depflags.pl: bump conflict against tzdata to (<< 2007k-1). + + [ Clint Adams ] + * debhelper.in/nscd.init: use lsb output functions. Closes: #457661. + * patches/any/cvs-sunrpc_rpc_thread.diff: patch by André Cruz to fix + sunrpc memory leak. closes: #460226. + + [ Samuel Thibault ] + * patches/hurd-i386/submitted-extern_inline.diff: new patch to fix extern + inline declarations for c++. + + -- Aurelien Jarno Sat, 12 Jan 2008 15:33:10 +0100 + +glibc (2.7-5ubuntu2) hardy; urgency=low + + * Really stop setting MAKEINFO to :, so that the info documentation is + built. + + -- Colin Watson Tue, 01 Jan 2008 12:10:28 +0000 + +glibc (2.7-5ubuntu1) hardy; urgency=low + + * Resynchronise with Debian. Remaining changes: + - Packaging: + + External tzdata + + Use external locale information + + Addition of Niagara and Niagara2 optimised libraries + + GFDL Documentation added back in. + + Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + + Use dpkg triggers for ldconfig + + Do not die if extra libc libraries or symlinks found + + Do not do a test run of nscd when starting + + Only apply patches we actually use in Ubuntu + + Use /lib and /usr/lib for amd64 + + amd64 biarch is i686, not i486. + + Non-optimised i386 glibc is Xen-friendly. + + Support sparcv9v, v9v2, 64b, 64v, 64v2 + + Add support for lpia. + - Patches: + + any/local-ipv6-sanity + + i386/local-clone + + amd64/local-clone + + sparc/submitted-v9v2 + + hppa/hppalll + * Debian any/cvs-vfscanf patch fixes LP: #178045. Actually add it to + debian/patches/series (forgotten in Debian). + * Stop setting MAKEINFO to :, which prevented the info documentation being + built. See also 2.5-0ubuntu3. + * any/submitted-rfc3484-sortv4: Return to disabling RFC3484 s6 rule 9 by + default. As requested by Ubuntu sysadmins, we want this regardless of + the Debian technical committee's decision. + + -- Colin Watson Mon, 24 Dec 2007 09:55:32 +0000 + +glibc (2.7-5) unstable; urgency=low + + [ Aurelien Jarno ] + * Moved merged parts of patches/any/submitted-sched_h.diff into + patches/any/cvs-sched_h.diff. + * patches/any/cvs-ether_line.diff: new patch from upstream to fix + ether_line(). Closes: bug#453899. + * patches/any/cvs-vfscanf.diff: new patch from upstream to fix + crash when %as is used with sscanf(). Closes: bug#453408. + * debian/rules: also set CXX when cross-compiling. + * patches/any/submitted-malloc_h.diff: removed, replaced by + patches/any/cvs-wchar_h.diff. + * debian/sysdeps/depflags.pl: conflict against tzdata (<< 2007j-2) as + etch now have version 2007j-1etch1. Closes: bug#455783. + * debian/sysdeps/depflags.pl: suggests libc6-i686 on i386 architecture. + Closes: bug#455603. + * any/submitted-rfc3484-labels.diff: new patch to fix RFC 3484 default + label ordering. Closes: bug#456779. + * patches/alpha/local-dl-procinfo.diff: add missing part. Closes: + bug#456260. + + [ Petr Salinger] + * kfreebsd/local-sysdeps.diff: update to revision 2082 (from glibc-bsd). + * any/cvs-fchmodat.diff: properly declare as stub - needed by GNU/kFreeBSD. + + [ Samuel Thibault] + * patches/hurd-i386/submitted-ioctl-unsigned-size_t.diff: update to also + handle unsigned char/int/short/long and ssize_t. + + -- Aurelien Jarno Wed, 19 Dec 2007 01:22:06 +0100 + +glibc (2.7-4ubuntu1) hardy; urgency=low + + * Merge with Debian; remaining changes (see 2.7-1ubuntu1) + + -- Matthias Klose Mon, 10 Dec 2007 10:34:38 +0100 + +glibc (2.7-4) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/localedata/locale-de_LI.diff: fix locale. Closes: bug#453860. + * debian/debhelper.in/locales.NEWS: fix location of the README file. + Closes: bug#453515. + * debian/debhelper.in/locales.README: rename into locales.README.Debian. + * debian/debhelper/in/locales.NEWS: fix a typo. Closes: bug#453613. + * Update any/submitted-sched_h.diff: allow compilation of with + -pedantic. Closes: bug#453687. + * Fix a typo in debian/sysdeps/alpha.mk. Closes: bug#452890. + * Disable amd64/local-x86_64_bits_sigcontext.diff. Closes: #454598. + * debhelper.in/libc.preinst: check for non-dpkg owned versions of + libc6-i686 before upgrade. Closes: #454557. + * Load debconf frontend after the optimized libraries have been + re-enabled. Closes: #453480. + + -- Aurelien Jarno Fri, 07 Dec 2007 00:49:02 +0100 + +glibc (2.7-3ubuntu1) hardy; urgency=low + + [ Matthias Klose ] + * Merge with Debian; remaining changes (see 2.7-1ubuntu1) + * debian/rules.d/control.mk: Re-add support for lpia. + * debian/sysdeps/amd64.mk: Restore i386_includedir. + + [ Jeff Bailey ] + * debian/patches/hppa/hppalll.diff: Fix build failure on hppa. + + -- Matthias Klose Fri, 07 Dec 2007 23:21:12 +0100 + +glibc (2.7-3) unstable; urgency=low + + [ Aurelien Jarno ] + * Remove cs_CZ-first_weekday.diff: merged upstream in a different way. + Closes: bug#344470. + * Remove da_DK-first_weekday.diff: likewise. + * Remove de_DE-first_weekday.diff: likewise. + * Remove en_GB-first_weekday.diff: likewise. + * Remove et_EE-first_weekday.diff: likewise. + * Remove en_US-first_weekday.diff: likewise. + * Remove fr_FR-first_weekday.diff: likewise. + * Remove hu_HU-first_weekday.diff: likewise. + * Remove nb_NO-first_weekday.diff: likewise. + * Remove nn_NO-first_weekday.diff: likewise. + * Remove pl_PL-first_weekday.diff: likewise. + * Remove sk_SK-first_weekday.diff: likewise. + * amd64, i386/local-clone.diff: restore patch to fix gij running out of + memory, as it has been lost upstream. + * debian/sysdeps/alpha.mk: fix alphaev67_rltddir. Closes: #452890. + * patches/localedata/locale-de_LI.diff: new locale contributed by Giacomo + Catenazzi. Closes: #453041. + * debian/debhelper.in/locales-all.postinst: honor TMPDIR. Closes: #453326. + * patches/any/submitted-malloc_h.diff: defines __need_ptrdiff_t, + __need_size_t and __need_NULL in malloc.h. Closes: #453264. + * support user defined locales in /usr/local/share/i18n. Closes: #453131. + + -- Aurelien Jarno Thu, 29 Nov 2007 18:01:03 +0100 + +glibc (2.7-2) unstable; urgency=low + + [ Aurelien Jarno ] + * sysdeps/alpha.mk: define alphaev67_MIN_KERNEL_SUPPORTED to 2.6.9. + Closes: #452890. + * alpha/submitted-fdatasync.diff: new patch to fix fdatasync() on alpha. + Closes: #452081. + * debian/script.in/nohwcap.sh: add libc6-alphaev67 to the list of optimized + packages. + * any/cvs-tzfile.diff: new patch from CVS to fix reading version 0 timezone + data files. Closes: #451892. + * debhelper.in/locales.config, debhelper.in/locales.postinst, + rules.d/debhelper.mk: rework the maintainer scripts of locales to handle + locales addition or removal. + * debhelper.in/locales.config: convert no_NO into nb_NO while upgrading. + Closes: #452788. + * debhelper.in/locales-all.NEWS, debhlper/locales-all.NEWS: add a note + about no_NO locale. + + -- Aurelien Jarno Mon, 26 Nov 2007 19:03:17 +0100 + +glibc (2.7-1ubuntu1) UNRELEASED; urgency=low + + * Merge changes from Debian. + Remaining changes: + * Packaging: + * External tzdata + * Use external locale information + * Addition of Niagara and Niagara2 optimised libraries + * GFDL Documentation added back in. + * Transition from /usr/include/ppc64-linux-gnu to powerpc64-linux-gnu + * Use dpkg triggers for ldconfig + * Do not die if extra libc libraries or symlinks found + * Do not do a test run of nscd when starting + * Only apply patches we actually use in Ubuntu + * Use /lib and /usr/lib for amd64 + * amd64 biarch is i686, not i486. + * Non-optimised i386 glibc is Xen-friendly. + * Support sparcv9v, v9v2, 64b, 64v, 64v2 + * Patches: + * any/local-ipv6-sanity + * i386/local-clone + * amd64/local-clone + * sparc/submitted-v9v2 + + -- Jeff Bailey Sun, 25 Nov 2007 17:44:13 -0800 + +glibc (2.7-1) unstable; urgency=low + + [ Clint Adams ] + * New upstream release with linuxthreads snapshot. + - Fixes an ABBA deadlock in ld.so. Closes: #443460. + - Render dgettext" thread safe. Closes: #443660. + - Fixes CVE-2007-4840 (multiple errors in iconv + function). Closes: #442250. + - Fixes strtod("-0", 0). Closes: #448723. + - Remove localedata/locale-de_CH.diff (merged). + - Update locale/fix-LC_COLLATE-rules.diff. + - Update locale/LC_COLLATE-keywords-ordering.diff. + - Update locale/fix-C-first_weekday.diff. + - Update locale/preprocessor-collate.diff. + - Update localedata/locales-fr.diff. + - Remove localedata/locale-sa_IN.diff (merged). + - Remove localedata/locale-wo_SN.diff (merged). + - Update localedata/tailor-iso14651_t1.diff. + - Add localedata/tailor-iso14651_t1-common.diff. + - Remove localedata/fix-unknown-symbols.diff (merged). + - Update localedata/first_weekday.diff. + - Add localedata/cs_CZ-first_weekday.diff. + - Add localedata/da_DK-first_weekday.diff. + - Add localedata/pl_PL-first_weekday.diff. + - Add localedata/de_DE-first_weekday.diff. + - Add localedata/en_GB-first_weekday.diff. + - Add localedata/en_US-first_weekday.diff. + - Add localedata/et_EE-first_weekday.diff. + - Add localedata/fr_BE-first_weekday.diff. + - Add localedata/fr_CA-first_weekday.diff. + - Add localedata/fr_CH-first_weekday.diff. + - Add localedata/fr_FR-first_weekday.diff. + - Add localedata/fr_LU-first_weekday.diff. + - Add localedata/hu_HU-first_weekday.diff. + - Add localedata/nb_NO-first_weekday.diff. + - Add localedata/nn_NO-first_weekday.diff. + - Add localedata/sk_SK-first_weekday.diff. + - Add localedata/cy_GB-first_weekday.diff. + - Update localedata/sort-UTF8-first.diff. + - Remove localedata/submitted-as_IN.diff (merged). + - Remove hppa/submitted-multiple-threads.diff (merged). + - Remove hppa/submitted-ustat.diff (merged). + - Remove hurd-i386/cvs-sigsuspend-nocancel.diff (merged). + - Remove hurd-i386/cvs-lock-intern.diff (merged). + - Remove sparc/local-undefined-registers.diff (obsolete). + - Remove all/local-pt_BR.diff (merged). + - Remove any/cvs-ld_library_path.diff (merged). + - Remove any/cvs-initfini.diff (merged). + - Remove any/cvs-posix-glob.diff (merged). + - Update any/local-bashisms.diff. + - Remove any/local-forward-backward-collation.diff (merged). + - Remove any/local-version-sanity.diff (merged). + - Remove any/submitted-strtok.diff (merged). + - Remove any/submitted-regex-collate.diff (merged). + - Remove localedata/locale-no_NO.diff (obsolete). + - Update localedata/supported.diff. + * Bump shlib version to 2.7-1. + * Add localedata/cvs-locale-ig_NG.diff BZ#5224, missing collation symbols + for ig_NG. + * Add localedata/cvs-locale-lo_LA.diff BZ#5237, missing collation symbols + for lo_LA. + * Add localedata/cvs-locale-ug_CN.diff BZ#5238, missing collation symbols + for ug_CN. + + [ Aurelien Jarno ] + * any/submitted-longdouble.diff: update. + * Improve any/submitted-rfc3484-sortv4.diff. + * Update hurd-i386/submitted-trivial.diff. + * any/local-strfry.diff: new patch to fix strfry(), as Ulrich Drepper + has still not managed to commit a correct version. + * Remove hppa/submitted-threaddb.diff (merged). + * Update hppa/submitted-nptl-carlos.diff. + * Update hurd-i386/submitted-libc_once.diff. + * Remove hurd-i386/cvs-ioctl-delay.diff (merged). + * Update hurd-i386/local-tls-support.diff. + * Add hurd-i386/cvs-kernel-features.diff: provide almost empty + kernel-features.h for files that include it. + * Add arm/local-args6.diff: provide DOCARGS_6 and UNDOCARGS_5 for + arm old-abi. + * Add arm/local-lowlevellock.diff: new patch to fix build on arm. + * debian/rules, debian/rules.d/build.mk: allow per architecture + TIMEOUTFACTOR. + * sysdeps/arm.mk, sysdeps/armel.mk, sysdeps/hppa.mk, sysdeps/s390.mk, + sysdeps/sh4.mk: define TIMEOUTFACTOR. + * locales-depver: tighten locales dependencies. + * any/local-disable-test-tgmath2.diff: new patch to disable test-tgmath2, + which take too much resources during compilation. + * Add hurd-i386/submitted-strtoul.diff: new patch to use + __strtoul_internal() instead of strtoul() in internal functions. + * Add hurd-i386/submitted-ptr-mangle.diff: new patch to define PTR_MANGLE + and PTR_DEMANGLE. + * Update Galician debconf translation, by Jacobo Tarrio. Closes: #447928. + * Update Dutch debconf translation, by Bart Cornelis. Closes: #448928. + * Add sh4/local-fpscr_values.diff and any/local-allocalim-header.diff + from Arthur Loiret. Closes: #448248. + * Fix encoding of Japanese translation. Closes: #447221. + * Add any/submitted-sched_h.diff: new patch to define `__CPU_ALLOC_SIZE. + * Add mips/local-setjmp.diff: new patch to fix g++ tests on mips/mipsel. + * Add any/local-fhs-nscd.diff: move nscd directory to /var/cache/nscd from + /var/db/nscd. Closes: #449198. + * debhelper.in/nscd.postrm: remove /var/cache/nscd on purge. Closes: + #449193. + * script.in/kernelcheck.sh, sysdeps/alpha.mk: bump minimum kernel version to + 2.6.9 for alpha. + * script.in/kernelcheck.sh, sysdeps/sh4.mk: bump minimum kernel version to + 2.6.11 for sh4. + * debian/patches/arm/local-eabi-wchar.diff: new patch from Riku Voipio to + fiw WCHAR_MIN and WCHAR_MAX definitions on armel. Closes: #444580. + * debian/po/zh_CN.po: update from LI Daobing. Closes: #447866. + * debhelper.in/locales-all.postinst: trap exit signal and remove temporary + directory. Closes: #447328. + * debhelper.in/libc.NEWS: mention that the tzconfig script has been replaced + by the maintainer scripts of tzdata. Closes: bug#448796. + * patches/all/local-alias-et_EE.diff: switch estonian locales alias to + ISO-8859-15. + * patches/alpha/submitted-fpu-round.diff: restore the old version of + ceil/floor/rint functions. Closes: #442568. + * patches/alpha/local-dl-procinfo.diff: new patch to add platform + capabilities support on alpha. + * Add an ev67 flavour on alpha: Closes: #229251 + - control.in/opt: add libc6-alphaev67 packages. + - sysdeps/alpha.mk: add a new pass for ev67 flavour. + * debian/local/manpages/iconv.1: document //translit and //ignore + options. Closes: #451304. + * debian/local/manpages/getent.1: document exit codes. Closes: + #445631. + * debian/local/manpages/ld.so.8: document $ORIGIN, $PLATFORM and $LIB + features. Closes: #444145. + * local/manpages/ldconfig.8: remove --force option from the manpage + to be consistent with the binary. Closes: #451958. + * kfreebsd/local-sysdeps.diff: update to revision 2046 (from glibc-bsd). + + [ Petr Salinger] + * any/local-stdio-lock.diff: make _IO_*_lock linuxthreads compliant. + * any/local-o_cloexec.diff: don't assume O_CLOEXEC is always defined. + * any/local-linuxthreads-signals.diff: always use non-RT signal handler + on GNU/kFreeBSD. + + [ Pierre Habouzit ] + * Remove any/local-iconv-fix-trampoline.diff (obsolete). + * Remove any/submitted-strfry.diff (merged). + * Update any/submitted-rfc3484-sortv4.diff. + * Update localedata/*first_weekday.diff. + * Remove localedata/fix-am_ET.diff (obsolete). + * Add locale/preprocessor-collate-uli-sucks.diff to revert Ulrich's + preprocessor that isn't enough for Debian. + * Update patches/locale/preprocessor-collate.diff. + * Add alpha/submitted-PTR_MANGLE.diff (Closes: #448508). + + [ Samuel Thibault ] + * hurd-i386/submitted-ptr-mangle.diff: Define PTR_MANGLE for assembly. + * hurd-i386/cvs-O_CLOEXEC_fix.diff: New patch to fix conflicting O_CLOEXEC + value. + + -- Aurelien Jarno Fri, 23 Nov 2007 10:46:24 +0100 + +glibc (2.6.1-6ubuntu2) hardy; urgency=low + + * Reapply any/local-ipv6-sanity.diff, lost when merging 2.6. LP: #156720. + + -- Matthias Klose Wed, 24 Oct 2007 18:15:43 +0200 + +glibc (2.6.1-6ubuntu1) hardy; urgency=low + + [Fabio M. Di Nitto] + * debian/patches/sparc/submitted-v9v2.diff: Add Niagara 2 optimized + memcpy support. + Code, patch and test done by David S. Miller. + * debian/patches/series: update. + * debian/sysdeps/sparc.mk: Add v9v2 32 and 64 bit targets. + * debian/control.in/opt: Add sparc64v2 and sparcv9v2 packages. + * debian/control: update. + * debian/script.in/nohwcap.sh: + memcpy support. + Code, patch and test done by David S. Miller. + * debian/patches/series: update. + * debian/sysdeps/sparc.mk: Add v9v2 32 and 64 bit targets. + * debian/control.in/opt: Add sparc64v2 and sparcv9v2 packages. + * debian/control: update. + * debian/script.in/nohwcap.sh: + - fix list of sparc optimized libc6. + - add v9v2 optimized packages. + + [Matthias Klose] + * Merge with Debian; remaining changes: + - Upstream tarball including GFDL'd documentation. + - Don't apply patches for architectures not found in Ubuntu. + - Build optimized sparc packages. + - Support lpia. + - No support for linuxthreads. + + -- Matthias Klose Fri, 19 Oct 2007 15:25:11 +0200 + +glibc (2.6.1-6) unstable; urgency=low + + [ Aurelien Jarno ] + * Update Spanish debconf translation, by Carlos Valdivia Yagüe. + + [ Clint Adams ] + * debian/po/de.po: update from Helge Kreutzmann. closes: #442888. + * debian/po/cs.po: update from Miroslav Kure. closes: #442904. + * debian/po/it.po: update from Luca Monducci. closes: #443497. + * debian/po/ja.po: update from Kenshi Muto. closes: #446577. + * Add any/cvs-posix-glob.diff, fixing improper of treatment of \ + in glob(). closes: #445210 + + -- Clint Adams Sun, 14 Oct 2007 10:02:35 -0400 + +glibc (2.6.1-5) unstable; urgency=low + + [ Pierre Habouzit ] + * remove any/local-sysmacros.diff: sorry for bug #439859 but it makes gimp + (and presumably other software) FTBFS, it's too dispruptive. + Closes: #442427. + + [ Clint Adams ] + * amd64/local-x86_64_bits_sigcontext.diff: use a copy of the generic header + for x86_64. closes: #442418. + + -- Clint Adams Sun, 16 Sep 2007 14:42:17 -0400 + +glibc (2.6.1-4) unstable; urgency=low + + * Disable any/local-ipv6-lookup.diff as it is causing breakages. + Closes: bug#441857. + * any/local-sysmacros.diff: use __inline instead of inline for + compatibility with ANSI. Closes: #441959. + * patches/localedata/tailor-iso14651_t1.diff: correctly fix fi_FI + locale. Closes: bug#441026. + * debian/rules.d/debhelper.mk: fix regex. Closes: #441824. + * Update French debconf translation, by Christian Perrier. Closes: + #442101. + * any/submitted-regex-collate.diff: fix regex engine for multibyte + characters and C collation. Closes: #441355. + * debian/local/manpages/locale-gen.8: fix manpage. Closes: #442104. + + -- Aurelien Jarno Thu, 13 Sep 2007 17:05:17 +0200 + +glibc (2.6.1-3) unstable; urgency=low + + * sysdeps/amd64.mk: uses x86_64 headers also for the i486 flavour now + that they are compatible. + * sysdeps/i386.mk: uses x86_64 headers also for the main flavour. + * debian/local/etc_default/locale: remove. Closes: bug#441360. + * sysdeps/*.mk: don't provide include symlink for bi-arch, but only + an empty directory. + * debian/rules.d/debhelper.mk: modify nscd/DEBIAN/control during build + to workaround a dpkg-shlibdeps bug. Closes: bug#433723. + * debian/local/manpages/nscd.conf.5: document the persistent and shared + cache options. Closes: bug#338504. + * patches/all/local-alias-UTF-8.diff: encode locales.alias in UTF-8. + Closes: bug#404433. + * debhelper.in/locales.links, debhelper.in/locales.install: move + locales.alias into /etc and provide a symlink in + /usr/share/locale/locale.alias. + * patches/localedata/tailor-iso14651_t1.diff: fix fi_FI locale. Closes: + bug#441026. + * kfreebsd/local-sysdeps.diff: update to revision 1998 (from glibc-bsd). + * sysdeps/kfreebsd-amd64.mk: uses x86_64 headers also for the i486 flavour + now that they are compatible. + * any/local-sysmacros.diff: new patch to declare "major", "minor" and + "makedev" as inline function instead of macros. Closes: #439859. + * debhelper.in/libc.postinst, debhelper.in/libc.templates: prompt user + with debconf if it is available. Closes: #440964. + * debian/control.in/libc: suggests debconf | debconf-2.0. + * Update Brazilian Portuguese debconf translation, by Felipe Augusto van de + Wiel. + * Update Vietnamese debconf translation, by Clytie Siddall. + * Update Basque debconf translation, by Piarres Beobide. + * Update Swedish debconf translation, by Daniel Nylander. + * Update Slovak debconf translation, by Ivan Masár. + * Update Lithuanian debconf translation, by Gintautas Miliauskas. + * Update Russian debconf translation, by Sergey Alyoshin. + + -- Aurelien Jarno Tue, 11 Sep 2007 04:42:20 +0200 + +glibc (2.6.1-2) unstable; urgency=low + + [ Samuel Thibault ] + * Rename hurd-i386/submitted-lock-intern.diff into + hurd-i386/cvs-lock-intern.diff, hurd-i386/submitted-ECANCELED.diff + into hurd-i386/cvs-ECANCELED.diff and + hurd-i386/submitted-sigsuspend-nocancel.diff into + hurd-i386/cvs-sigsuspend-nocancel.diff as the patches have been accepted + upstream. + * hurd-i386/local-tls-support.diff: update to fix TLS leak in /hurd/exec + server. + * hurd-i386/cvs-ioctl-delay.diff: new patch to add standard *DLY ioctl macros. + * hurd-i386/submitted-IPV6_PKTINFO.diff: new patch to add standard + IPV6_PKTINFO macro. + + [ Aurelien Jarno ] + * debian/rules.d/build.mk: disable testsuite on ARM machines running a + 2.6.21 or 2.6.22 kernel. + * debian/debhelper.in/locales.{prerm,postinst}: look for supported.tar.lzma + instead of supported.tar.gz. + * debian/local/etc_default/devpts: remove. + * debian/local/etc_default/locale: new file. Closes: bug#437404. + * debhelper.in/locales.install: install it. + * debian/local/manpages/locale.1: fix a typo. Closes: bug#438114. + * kfreebsd/local-sysdeps.diff: update to revision 1995 (from glibc-bsd). + * any/submitted-rfc3484-sortv4.diff: new patch to allow bypassing RFC3484 + rule 9 for IPv4 adresses. Closes: bug#438179 + * debian/debhelper.in/libc.preinst: change version check for NSS services to + (<< 2.6-1). + * debian/debhelper.in/libc.preinst: add proftpd to the list of services to + restart. Closes: bug#435640. + * Bump shlibdeps version to 2.6.1-1 due to SPARC v9 transition. + * New Slovak debconf translation, by Ivan Masár. Closes: bug#438576. + * any/local-ipv6-lookup.diff: new patch to do IPv6 lookups only when an + IPv6 address is configured. Patch by Tollef Fog Heen and Andrew McMillan. + Closes: #435646. + + [ Pierre Habouzit ] + * Document new libc.conf in ld.so.conf.d that puts /usr/local/lib front. + + -- Aurelien Jarno Mon, 3 Sep 2007 18:15:37 +0200 + +glibc (2.6.1-1ubuntu9) gutsy; urgency=low + + * Rebuild using g++-4.2 (>= 4.2.1-5ubuntu4). + + -- Matthias Klose Mon, 01 Oct 2007 00:04:19 +0200 + +glibc (2.6.1-1ubuntu8) gutsy; urgency=low + + * hppa/local-private-futex-lamont.diff: fix hppa FTBFS. + + -- LaMont Jones Thu, 27 Sep 2007 18:51:24 +0000 + +glibc (2.6.1-1ubuntu7) gutsy; urgency=low + + * any/submitted-rfc3484-sortv4.diff: new patch to allow bypassing RFC3484 + rule 9 for IPv4 adresses. Closes: bug#438179. + [ by Aurelien Jarno; imported from glibc 2.6.1-2 into Ubuntu by iwj ] + * any/submitted-rfc3484-sortv4.diff: disable RFC3484 s6 rule 9 by + default as requested by Ubuntu sysadmins and in anticipation of + that change in Debian (which looks likely). + + -- Ian Jackson Thu, 20 Sep 2007 14:49:50 +0100 + +glibc (2.6.1-1ubuntu6) gutsy; urgency=low + + * Do not print "ldconfig: wrapper deferring update (trigger activated)" + message (unless LDCONFIG_TRIGGER_DEBUG is set). + + -- Ian Jackson Thu, 20 Sep 2007 14:20:30 +0100 + +glibc (2.6.1-1ubuntu5) gutsy; urgency=low + + * Do not install the ppu symlinks in the powerpc packages. + + -- Matthias Klose Wed, 19 Sep 2007 00:27:46 +0200 + +glibc (2.6.1-1ubuntu4) gutsy; urgency=low + + * sysdeps/amd64.mk: uses x86_64 headers also for the i486 flavour now + that they are compatible. don't provide include symlink for bi-arch, + but only an empty directory. + + -- Matthias Klose Sun, 09 Sep 2007 21:09:21 +0200 + +glibc (2.6.1-1ubuntu3) gutsy; urgency=low + + * Actually exec ldconfig.real. (LP #137129.) + + -- Ian Jackson Mon, 03 Sep 2007 20:47:11 +0100 + +glibc (2.6.1-1ubuntu2) gutsy; urgency=low + + * Use dpkg-trigger to avoid multiple calls to ldconfig. + + -- Ian Jackson Mon, 03 Sep 2007 14:48:39 +0100 + +glibc (2.6.1-1ubuntu1) gutsy; urgency=low + + * Merge with Debian (outstanding changes for the final 2.6.1-1 package). + Remaining changes: + - Upstream tarball including GFDL'd documentation. + - Don't apply patches for architectures not found in Ubuntu. + - Build optimized sparc packages. + - Support lpia. + - No support for linuxthreads. + + * debian/patches/sparc/sparc-sparcv9.diff: sparc-sparcv9 directory fix + (David Miller). + + -- Matthias Klose Tue, 28 Aug 2007 13:04:00 +0200 + +glibc (2.6.1-1) unstable; urgency=low + + * New upstream version: + - Workaround bug in java's unwinder. Closes: #434484. + + [ Aurelien Jarno ] + * debian/copyright: update. + * Remove any/cvs-glibc-2_6-branch.diff (merged upstream). + * Remove any/cvs-printf_fp.c.diff (merged upstream). + * Remove sparc/submitted-gscope_flag.diff (merged upstream). + * Remove arm/cvs-gscope_flag.diff (merged upstream). + * Remove hppa/submitted-gscope_flag.diff (merged upstream). + * Remove mips/cvs-gscope_flag.diff (merged upstream). + * any/local-bindresvport_blacklist.diff: patch from openSUSE to + add support for /etc/bindresvport.blacklist. + * debian/local/etc/bindresvport.blacklist: new default configuration + file. + * debian/debhelper.in/libc.install: install it! + * debian/rules.d/debhelper.mk: fix arguments order when calling find. + * kfreebsd/local-sysdeps.diff: update to revision 1992 (from glibc-bsd). + * any/local-linuxthreads-gscope.diff: update for kfreebsd futexes. + * i386/local-linuxthreads-gscope.diff: update for kfreebsd futexes. + * amd64/local-linuxthreads-gscope.diff update for kfreebsd futexes. + + [ Samuel Thibault ] + * hurd-i386/local-gscope.diff: resync, mostly merged upstream. + + -- Aurelien Jarno Tue, 07 Aug 2007 13:34:26 +0200 + +glibc (2.6.1-0ubuntu1) gutsy; urgency=low + + * New upstream version 2.6.1, including glibc-ports-2.6.1. + - Remove applied patches: patches/any/cvs-ports-glibc-2_6-branch.diff, + patches/arm/cvs-gscope_flag.diff, patches/mips/cvs-gscope_flag.diff, + patches/hppa/submitted-gscope_flag.diff. + * debian/wrapper/objcopy: Revert the workaround. + + -- Matthias Klose Mon, 06 Aug 2007 22:38:54 +0200 + +glibc (2.6.1~pre-0ubuntu1) gutsy; urgency=low + + * New upstream version 2.6.1, glibc-ports is still version 2.6. + * Remove patches applied upstream. + * Merge from the Debian repository. + * debian/wrapper/objcopy: Remove -R .debug_aranges, fixing broken + debug symbols. + + -- Matthias Klose Fri, 03 Aug 2007 12:22:19 +0200 + +glibc (2.6-5ubuntu1) gutsy; urgency=low + + * Merge with Debian. + - cvs-printf_fp.c.diff: new patch to print the wrong number of + digits with %#g. LP: #128355. + + -- Matthias Klose Sun, 29 Jul 2007 20:39:57 +0200 + +glibc (2.6-5) unstable; urgency=low + + [ Aurelien Jarno ] + * mips/cvs-gscope_flag.diff: new patch to fix build on mips/mipsel. + * arm/cvs-gscope_flag.diff: new patch to fix build on arm/armel. + * any/cvs-initfini.diff: new patch from upstream to fix crti.o on + ppc64. Closes: #434626. + * debian/sysdeps/powerpc.mk: build libc6-ppc64 with gcc-4.2. + * debian/sysdeps/alpha.mk: build with gcc-4.2. + * debian/control: Remove build-depend on gcc-4.1 on powerpc and alpha. + * sparc/submitted-gscope_flag.diff: update from upstream. + * hppa/submitted-gscope_flag.diff : new patch to fix build on hppa + with NPTL. + * any/local-linuxthreads-gscope.diff: new patch to add gscope support + to linuxthreads. + * hppa/local-linuxthreads-gscope.diff: new patch to fix build on hppa + with linuxthreads. Closes: #434799. + * cvs-printf_fp.c.diff: new patch to print the correct number of digits + with %#g. + * amd64/local-linuxthreads-gscope.diff: new patch to fix build on *amd64 + with linuxthreads. + * i386/local-linuxthreads-gscope.diff: new patch to fix build on *i386 + with linuxthreads. + * kfreebsd/local-sysdeps.diff: update to revision 1989 (from glibc-bsd). + * any/submitted-longdouble.diff: patch from Carlos O'Donell to fix long + double tests. + * any/submitted-libgcc_s.so.diff: patch from Carlos O'Donell to allow + differents libgcc_s.so SONAME on architecture basis. + * hppa/submitted-fadvise64_64.diff: patch from Carlos O'Donell to add + support for fadvise64_64 syscall. + * debian/control: Simplify build-dependencies. + + -- Aurelien Jarno Sun, 29 Jul 2007 17:25:52 +0200 + +glibc (2.6-4ubuntu3) gutsy; urgency=low + + * patches/lpia/local-i686-redefine.diff: Redefine __i686, which gets + clobbered to "1" by the compiler, causing the assembler to have a fit + + -- Adam Conrad Sat, 28 Jul 2007 05:30:06 +1000 + +glibc (2.6-4ubuntu2) gutsy; urgency=low + + * Fix gij memory hog on amd64, thanks to Aurelien Jarno. + * sparc/submitted-gscope_flag.diff: update from upstream. + + -- Matthias Klose Thu, 26 Jul 2007 23:28:49 +0200 + +glibc (2.6-4ubuntu1) gutsy; urgency=low + + * Merge with Debian; remaining changes: + - Upstream tarball including GFDL'd documentation. + - Don't apply patches for architectures not found in Ubuntu. + - Build optimized sparc packages. + - Support lpia. + - Minor differences to be cleaned up. + * glibc-doc: Install the documentation in info format. Closes: LP: #60607. + + * Merge changes from Debian: + * mips/cvs-gscope_flag.diff: new patch to fix build on mips/mipsel. + * arm/cvs-gscope_flag.diff: new patch to fix build on arm/armel. + * any/cvs-initfini.diff: new patch from upstream to fix crti.o on + ppc64. Closes: #434626. + * debian/sysdeps/powerpc.mk: build libc6-ppc64 with gcc-4.2. + * debian/control: Remove build-depend on gcc-4.1 on powerpc. + + -- Matthias Klose Thu, 26 Jul 2007 16:22:15 +0200 + +glibc (2.6-4) unstable; urgency=low + + [ Samuel Thibault ] + * sysdeps/hurd.mk (CC, BUILD_CC): Remove. + * control: Build-depend on gcc-4.2 on hurd-i386. + + [ Pierre Habouzit ] + * any/cvs-glibc-2_6-branch.diff: upstream branch pull, includes: + + any/cvs-ld-integer-overflow.diff + + any/cvs-malloc.diff + + any/cvs-nis-nss-default.diff + + any/cvs-nscd-short-replies.diff + + any/cvs-vfscanf.diff + + [ Aurelien Jarno ] + * debian/sysdeps/powerpc.mk: build libc6-ppc64 with gcc-4.1 as gcc-4.2 + produces broken binaries. + * debian/control: Build-depend on gcc-4.1 on powerpc + * debian/control: Build-depend on g++-4.1/g++-4.2 and + g++-4.1-multilib/g++-4.2-multilib. + * debian/*.NEWS: move to debian/debhelper.in/*.NEWS. + * rules.d/debhelper.mk: remove debian/*.NEWS on clean. + * sparc/submitted-gscope_flag.diff: new patch to fix build on sparc. + + -- Aurelien Jarno Thu, 26 Jul 2007 08:57:48 +0200 + +glibc (2.6-3ubuntu3) gutsy; urgency=low + + * patches/sparc/submitted-gscope_flag.diff: New patch to fix build + on sparc (Aurelien Jarno). + + -- Matthias Klose Thu, 26 Jul 2007 00:56:49 +0200 + +glibc (2.6-3ubuntu2) gutsy; urgency=low + + * Build the 64bit powerpc library with gcc-4.1. + * Update to the glibc-2_6-branch 20070725. + - patches/any/cvs-libc-glibc-2_6-branch.diff: New. + - patches/any/cvs-ports-glibc-2_6-branch.diff: New. + - patches/any/cvs-ld-integer-overflow.diff: Remove. + - patches/any/cvs-malloc.diff: Remove. + - patches/any/cvs-nis-nss-default.diff: Remove. + - patches/any/cvs-nscd-short-replies.diff: Remove. + - patches/any/cvs-vfscanf.diff: Remove. + * Build-depend on g++-4.1-multilib/g++-4.2-multilib. + * debian/sysdeps/hppa.mk: Don't explicitely use gcc-4.2. + + -- Matthias Klose Wed, 25 Jul 2007 15:34:26 +0200 + +glibc (2.6-3ubuntu1) gutsy; urgency=low + + * Merge with Debian. + * debian/sysdeps/lpia.mk: Build using -march=i686 -mtune=i586 -g -O3. + + -- Matthias Klose Mon, 23 Jul 2007 15:02:03 +0200 + +glibc (2.6-3) unstable; urgency=low + + [ Aurelien Jarno ] + * script.in/kernelcheck.sh: s/kernel_compare_version/linux_compare_versions/ + for arm. + * script.in/kernelcheck.sh: the minimum kernel version is now 2.6.8 and not + 2.6.1. Closes: bug#432721. + * hppa/submitted-threaddb.diff: new patch from Randolph Chung to fix + debugging interface for NPTL on hppa. + * Drop SPARC V8 support: + - control.in/opt: drop libc6-sparcv9. + - sysdeps/sparc.mk: drop libc6-sparcv9. + - script.in/kernelcheck.sh: add check for SPARC V8 or earlier CPU. + - patches/series: disable sparc/submitted-timing.diff. + - patches/sparc/local-sparcv8-target.diff: rename to + local-sparcv9-target.diff and default to v9. + * Build with gcc-4.2 except on alpha (untested). + * patches/any/cvs-ld_library_path.diff: new patch from CVS to fix segfaults + with empty LD_LIBRARY_PATH variable. + * rules.d/build.mk: create /etc/ld.so.conf.d/libc.conf to add + /usr/local/lib as a default search path. Closes: #395177. + * Honor parallel= option in DEB_BUILD_OPTIONS. Closes: #413744. + + [ Pierre Habouzit ] + * rules.d/debhelper.mk: add some magic to copy debian/bug/$pkg/ files into + /usr/share/bug/. + * add libc6-i386/presubj to document /usr/lib32 issues not being a + libc6-i386 problem. + * add locales/presubj about locales depends that are correct, and tell bug + reporters how to look for their package being built or not. + * add patches/any/local-missing-linux_types.h.diff to add missing + #include due to migration to linux-libc-dev. + Closes: #433962. + + [ Samuel Thibault ] + * hurd-i386/local-tls-support.diff: new patch to support TLS. + * debian/sysdeps/hurd.mk (libc_extra_config_options): Removed + --without-__thread, --without-tls and libc_cv_z_relro=no. + * hurd-i386/local-atomic-no-multiple_threads.diff: new patch, hurd-i386 + doesn't need the multiple_threads field. + * hurd-i386/local-gscope.diff: new patch, backport of the CVS global scope. + * hurd-i386/local-no-strerror_l.diff: new patch to disable non-implemented + strerror_l(). + * hurd-i386/submitted-lock-intern.diff: new patch to fix a header inclusion. + * sysdeps/depflags.pl: make libc0.3 depend on TLS-enabled hurd packages. + * hurd-i386/local-sigsuspend-nocancel.diff: renamed into + submitted-sigsuspend-nocancel.diff. + * hurd-i386/submitted-ECANCELED.diff: new patch to fix ECANCELED value. + Closes: #396135. + * hurd-i386/local-gcc-4.1-init-first.diff: New patch by Thomas + Schwinge to fix building with gcc-4.1. + * sysdeps/hurd.mk (CC, BUILD_CC): Change to gcc-4.1. + * control: Depend on gcc-4.1 on hurd-i386. + + -- Aurelien Jarno Mon, 23 Jul 2007 08:01:26 +0200 + +glibc (2.6-2ubuntu2) gutsy; urgency=low + + * debian/rules.d/control.mk: Add lpia to threads_archs and to libc6 list + * debian/sysdeps/lpia.mk: Add gcc-4.2 usage, but comment it out for now, + while we bootstrap with gcc-4.1 (because we're FTBFS with gcc-4.2) + + -- Adam Conrad Thu, 12 Jul 2007 13:36:23 +0100 + +glibc (2.6-2ubuntu1) gutsy; urgency=low + + * Merge Debian changes 2.6-1 -> 2.6-2. + + -- Matthias Klose Tue, 10 Jul 2007 14:18:22 +0200 + +glibc (2.6-2) unstable; urgency=low + + [ Clint Adams ] + * Add any/cvs-nis-nss-default.diff: preserve errno. + * Add any/cvs-vfscanf.diff: add additional test for EOF + in loop to look for conversion specifier to avoid testing of + wrong errno value. + + [ Aurelien Jarno ] + * Add any/cvs-ld-integer-overflow.diff: fix an integer + overflow in ld.so. Closes: bug#431858. + * hppa/submitted-multiple-threads.diff: new patch to fix an FTBFS on + hppa. Closes: bug#428509, bug#429487. + + -- Aurelien Jarno Tue, 10 Jul 2007 09:17:49 +0200 + +glibc (2.6-1ubuntu1) gutsy; urgency=low + + [Jeff Bailey] + * debian/sysdeps/hppa.mk: Use gcc-4.2 + * debian/control.in/main: Build-dep on gcc-4.2 [hppa] + * debian/control: Regenerate + + [Matthias Klose] + * Merge Debian changes 2.6-0exp3 -> 2.6-1. + * debian/sysdeps/lpia: New. + + -- Matthias Klose Mon, 9 Jul 2007 12:20:28 +0200 + +glibc (2.6-1) unstable; urgency=low + + [ Pierre Habouzit ] + [ Clint Adams] + * New upstream version. + - Remove locale/iso3166-RS.diff (obsolete). + - Remove locale/fix-exhausted-memory.diff (merged upstream). + - Update locale/LC_COLLATE-keywords-ordering.diff. + - Remove localedata/locale-hy_AM.diff (obsolete). + - Remove localedata/locale-pl_PL.diff (merged upstream). + - Remove localedata/locales-sr.diff (obsolete). + - Update localedata/tailor-iso14651_t1.diff. + - Update localedata/first_weekday.diff. + - Remove alpha/cvs-cfi.diff (merged upstream). + - Remove arm/cvs-check_pf.c (merged upstream). + - Remove hppa/cvs-hppa-update.diff (obsolete). + - Update hppa/submitted-nptl-carlos.diff from "upstream". + - Remove hppa/submitted-nptl-carlos2.diff (merged upstream). + - Remove hppa/local-r19use.diff (merged upstream). + - Remove hurd-i386/cvs-futimes.diff (merged upstream). + - Remove m68k/cvs-m68k-update.diff (obsolete). + - Update m68k/local-mathinline_h.diff. + - Remove mips/cvs-ldsodefs_h.diff (merged upstream). + - Remove mips/submitted-msq.diff (merged upstream). + - Remove all/cvs-iconv-E13B.diff (obsolete). + - Remove all/submitted-new-brf-encoding.diff (merged upstream). + - Remove any/cvs-2.5-branch-update.diff (obsolete). + - Remove any/cvs-pow.diff (obsolete). + - Remove any/cvs-printf_fp-c.diff (obsolete). + - Remove any/cvs-ftw-c.diff (obsolete). + - Remove any/cvs-bits_in_h-ipv6.diff (obsolete). + - Remove any/cvs-itoa-c.diff (obsolete). + - Remove any/cvs-lt-update.diff (obsolete). + - Remove any/cvs-realpath.diff (obsolete). + - Remove any/cvs-vfprintf-stack-smashing.diff (obsolete). + - Remove any/cvs-zdump-64-bit.diff (obsolete). + - Update any/local-ldso-disable-hwcap.diff. + - Remove any/submitted-gethostbyname_r.diff (obsolete). + - Remove any/submitted-iconv-colon.diff (merged upstream). + - Update any/submitted-strfry.diff. + - Remove any/submitted-unistd_XOPEN_VERSION.diff (obsolete). + - Remove any/cvs-glob-c.diff (obsolete). + - Remove any/cvs-scanf_hexfloat.diff (obsolete). + - Remove alpha/submitted-sigsuspend.diff (merged upstream). + - Remove arm/cvs-procinfo-eabi.diff (obsolete). + * debian/sysdeps/depflags.pl: Clean out relationships for packages + that do not exist in sarge or later. + * debian/debhelper.in/libc.install: do not hardcode the glibc + version number in the path to gai.conf. + * debian/control.in/main, debian/sysdeps/depflags.pl: + use linux-libc-dev on all linux architectures, and + remove all references to linux-kernel-headers. + * Bump shlibdeps version to 2.6-1 due to sync_file_range, futimens, + utimensat, __sched_cpucount, sched_getcpu, strerror_l, and + epoll_pwait symbols. + * debian/rules.d/build.mk: pass --enable-profile to configure. + + [ Aurelien Jarno ] + * patches/sparc/local-undefined-registers.diff: new file to ignore + global registers while looking for undefined symbols. + * debian/script.in/kernelcheck.sh: add a warning for FreeBSD kernels + 5.X. + * local/etc_init.d/glibc.sh, debhelper.in/libc.preinst: don't check for + linux kernel, it is now done in script.in/kernelcheck.sh. + * patches/any/cvs-malloc.diff: new patch from upstream to fix malloc ABI. + * patches/any/local-linuxthreads-lowlevellock.diff: new patch to support + low level locking on linuxthreads. + * patches/any/local-linuxthreads-fatalprepare.diff: new patch to support + FATAL_PREPARE on linuxthreads, by not using __libc_pthread_functions_init + and PTHFCT_CALL. + * patches/hppa/local-linuxthreads.diff: new patch to get glibc buildable on + hppa with linuxthreads. + * patches/arm/submitted-RTLD_SINGLE_THREAD_P.diff: fix a missing #defined + on arm. + * patches/localedata/submitted-as_IN.diff: new patch to fix a not anymore + unassigned unicode code. + * locales-depver: tighten locales dependencies. + * debian/sysdeps/linux.mk, debian/script.in/kernelcheck.sh: bump minimum + kernel requirement to 2.6.8. + * debian/rules, debian/rules.d/build.mk, debian/sysdeps/*.mk: also defines + CXX as g++ is used in the testsuite. + + [ Petr Salinger] + * kfreebsd/local-sysdeps.diff: update to revision 1949 (from glibc-bsd). + * any/local-linuxthreads-defines.diff: new patch to restore a few defines + in config.make.in still needed by linuxthreads. + * patches/local-tst-mktime2.diff: fix time/tst-mktime2.c. + + [ Pierre Habouzit ] + * kernelchecks.sh: Make the warning about kernel 2.6 more explicit so that + people can deal with it without adding yet-another critical bug on the + glibc. + * kernelchecks.sh: add some quotes to unconfuse syntax hilighting a bit. + * nscd.init: ksh is confused if you call functions start or stop. + Closes: 428884. + * patches/locale/preprocessor-collate.diff: update it to work (with + restrictions) with depth >= 2 copies. The patch is scurvy and make locale + parsing completely non reentrant. + * debian/control: ${Source-Version} -> ${binary:Version}. + * debian/debhelper.in/nscd.lintian: yes, /var/db for lintian is ok. + * patches/any/submitted-fileops-and-signals.diff: fixes libio file + operations in presence of recoverable errors. + Closes: 429021. + * patches/localedata/fix-am_ET.diff: fix am_ET using our preprocessor + extensions. + + [ Samuel Thibault ] + * Remove patches/hurd-i386/cvs-getsid.diff (merged upstream). + * patches/hurd-i386/submitted-ioctl-unsigned-size_t.diff: new patch to fix + some packages that use unsigned or size_t in ioctls. + Closes: 431365. + + -- Clint Adams Sat, 07 Jul 2007 09:43:02 -0400 + +glibc (2.6-0ubuntu1) gutsy; urgency=low + + * New upstream release. + * Merge with Debian; remaining changes: + - Include unmodified glibc-2.6 upstream tarball. + - Don't build locale* packages. + - TODO: list remaining changes. + + -- Matthias Klose Mon, 2 Jul 2007 13:29:33 +0200 + +glibc (2.5-11ubuntu1) gutsy; urgency=low + + * Merge Debian changes (2.5-10 - 2.5-11). + * Add ppu symlinks on powerpc. + + -- Matthias Klose Wed, 13 Jun 2007 17:20:14 +0200 + +glibc (2.5-11) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/hppa/submitted-pie.diff: new patch to fix PIE on hppa. Patch by + Sébastien Bernard and John David Anglin. Closes: #427990. + * debian/debhelper.in/libc.preinst: use -e instead of -f to canonicalize + links. Closes: #427416. + + [ Pierre Habouzit ] + * pass -X/usr/lib/debug to dh_makeshlibs so that libc6-dbg gets no useless + shlibs. Closes: #427637. + + -- Aurelien Jarno Mon, 11 Jun 2007 15:06:21 +0200 + +glibc (2.5-10ubuntu2) gutsy; urgency=low + + * libc6-dev-ppc64: Install gnu-stubs-64.h in /usr/include/gnu. + + -- Matthias Klose Fri, 08 Jun 2007 12:01:55 +0000 + +glibc (2.5-10ubuntu1) gutsy; urgency=low + + * Merge Debian changes (2.5-9 - 2.5-10). + + -- Matthias Klose Mon, 4 Jun 2007 23:31:10 +0200 + +glibc (2.5-10) unstable; urgency=low + + [ Aurelien Jarno ] + * kfreebsd/local-sysdeps.diff: update to revision 1942 (from glibc-bsd). + Thanks to Petr Salinger. + * arm/cvs-procinfo-eabi.diff: patch from CVS to not include asm/procinfo.h. + * any/submitted-strtok.diff: new patch to fix a typo in strings/strtok.c. + Closes: #426118. + * debian/sysdeps/depflags.pl: depends on libgcc1/libgcc2/libgcc4. + * any/cvs-nscd-short-replies.diff: new patch from CVS to fix crash on + short replies. + * sysdeps/depflags.mk, sysdeps/depflags.pl: use DEB_HOST_ARCH_OS and + DEB_HOST_ARCH instead of DEB_HOST_GNU_SYSTEM and DEB_HOST_GNU_TYPE. + * debian/sysdeps/arm.mk, debian/script.in/kernelcheck.sh: bump minimum + kernel requirement to 2.6.12 on arm to get __ARM_NR_set_tls syscall. + Closes: #421037. + * debian/sysdeps/armel.mk: bump minimum kernel requirement to 2.6.14 + on armel. + * patches/series: disable any/local-ldconfig-timestamps.diff as this + patch does not take into account sub-directories. + + [ Clint Adams ] + * debian/local/manpages/ld.so.8: quote accepted values for LD_DEBUG. + closes: #426101. + * New Malayalam debconf translation, by Sajeev പിആരàµâ€. + closes: #426203. + * Update Vietnamese debconf translation, by Clytie Siddall. + closes: #426824. + + -- Aurelien Jarno Sun, 03 Jun 2007 19:01:50 +0200 + +glibc (2.5-9) unstable; urgency=low + + * debian/patches/arm/local-ioperm.diff: Remove the check + involving LINUX_VERSION_CODE. + * debian/patches/hppa/submitted-atomic_h.diff: update to loop again + when the kernel returns -EDEADLOCK. Workaround: #425567. + + -- Aurelien Jarno Tue, 22 May 2007 17:03:23 +0200 + +glibc (2.5-8ubuntu1) gutsy; urgency=low + + * Merge Debian changes (2.5-7 - 2.5-8). + * Fix installation location of sparc64 headers. + + -- Matthias Klose Sun, 20 May 2007 15:01:08 +0200 + +glibc (2.5-8) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/sysdeps/depflags.pl: Add a conflicts on binutils + (<< 2.17cvs20070426-1) for libc-dev. Closes: #422625. + + [ Clint Adams ] + * debian/sysdeps/depflags.pl: Clean out relationships for packages + that do not exist in sarge or later. + * debian/debhelper.in/libc.install: do not hardcode the glibc + version number in the path to gai.conf. + * debian/control.in/main, debian/sysdeps/depflags.pl: + use linux-libc-dev to build on all linux architectures. + (retain Depends alternative on linux-kernel-headers) + + [ Aurelien Jarno ] + * debian/local/etc_init.d/glibc.sh: fix a typo. Closes: #423870. + * debian/patches/hppa/submitted-atomic_h.diff: new patch to fix the + atomic CAS function on hppa. Closes: #424057. + * debian/control.in/main: unify the gcc-4.1 depends to (>= 4.1.2-6). + + -- Aurelien Jarno Sun, 20 May 2007 03:43:09 +0200 + +glibc (2.5-7ubuntu1) gutsy; urgency=low + + * Merge Debian changes (2.5-5 - 2.5-7). + + -- Matthias Klose Tue, 15 May 2007 17:31:45 +0200 + +glibc (2.5-7) unstable; urgency=low + + * debian/sysdeps/i386.mk: switch from --includir= to amd64_includedir. + * debian/local/etc_init.d/glibc.sh: fix the broken comment. Closes: + #422587. + + -- Aurelien Jarno Mon, 07 May 2007 11:45:41 +0200 + +glibc (2.5-6) unstable; urgency=low + + * patches/any/cvs-vfprintf-stack-smashing.diff: new patch from + upstream (fix enormous alloca triggered with %-X.Ys like formats + specifier, with Y big, and in multi-byte locales). Closes: #380195, + #421555. + * patches/hppa/cvs-hppa-update.diff: update from CVS to fix + bits/pthreadtypes.h on hppa. + * patches/any/local-disable-nscd-host-caching.diff: the comment lines + should have the '#' on the first column. Closes: #421882. + * Remove patches/any/local-Rminkernel.diff (not needed anymore). + * debian/patches/hppa/submitted-ustat.diff: new patch from Jeff Bailey + to makes glibc build with exported kernel headers. + * debian/patches/hppa/submitted-nptl-carlos2.diff: new patch to add + STACK_GROWS_UP case to NPTL. + * debian/patches/hppa/local-r19use.diff: new patch from Carlos O'Donell + (specify r19 as input to asms that save/restore). + * debian/patches/alpha/cvs-cfi.diff: new patch from CVS (fix + cfi instructions in sysdep-cancel.h). Closes: #422067. + * debian/sysdeps/kfreebsd-i386.mk: tune for i686. + * debian/sysdeps/i386.mk: drop i386-linux-gnu compat symlinks, all the + toolchain is now using i486-linux-gnu. + * Merge from multiarch tree: + - debian/rules: define localedir, sysconfdir and rootsbindir. + - debian/rules.d/build.mk: use $(localedir), $(sysconfdir) and + $(rootsbindir) instead of hardcoded values. Make includedir + flavour specific. + - debian/sysdeps/amd64.mk: define i386_includedir. + - debian/sysdeps/powerpc.mk: define ppc64_includedir. + - debian/sysdeps/ppc64.mk: define powerpc_includedir. + - debian/sysdeps/s390.mk: define s390x_includedir. + - debian/sysdeps/kfreebsd-amd64.mk: define i386_includedir. + - debian/sysdeps/sparc.mk: define sparc64_includedir. + * debian/control.in/main: build-depends on gcc-4.1.2 (>= 4.1.2-6) on + hppa. + + -- Aurelien Jarno Mon, 07 May 2007 03:27:10 +0200 + +glibc (2.5-5ubuntu1) gutsy; urgency=low + + * Merge Debian changes (2.5-2 - 2.5-5). + + -- Matthias Klose Wed, 02 May 2007 09:04:02 +0200 + +glibc (2.5-5) unstable; urgency=low + + [ Aurelien Jarno ] + * Rename patches/all/submitted-iconv-E13B.diff into + patches/all/cvs-iconv-E13B.diff as the patch has been accepted + upstream. + * debian/debhelper.in/libc.NEWS: new file to warn user to upgrade + to a 2.6.1 or later kernel before upgrading the glibc. + * debian/script.in/kernelcheck.sh: improve the kernel error message. + * New Tamil debconf translation, by Tirumurti Vasudevan. Closes: + #420755. + * script.in/nohwcap.sh: use sed instead of awk. Closes: #420799. + * Update Catalan debconf translation, by Jordà Polo. Closes: #420835. + * Add support for n32 and 64 ABIs on mips and mipsel, but keep it + disabled for now: + - control.in/main: add libc6-dev-mipsn32, libc6-dev-mips64 to the + build-dependencies. + - control.in/mips64: add libc6-mips64 and libc6-dev-mips64 packages. + - control.in/mipsn32: add libc6-mipsn32 and libc6-dev-mipsn32 packages. + - rules.d/control.mk: use control.in/mips64 and control.in/mipsn32. + - sysdeps/mips.mk: add two new passes for n32 and 64 ABIs. + - sysdeps/mipsel.mk: likewise. + * debian/control.in/main: drop build-depends on libssp32 and libssp64, + build-depends on gcc-4.1 (>= 4.1.2-5) instead. Drop build-conflicts + on gcc-4.1 (= 4.1.1-14). Closes: #413370. + * debian/sysdeps/hppa.mk: switch back to gcc-4.1. + * debian/debhelper.in/libc.preinst: add a check for silly users having + LD_ASSUME_KERNEL=2.4.1 in their /etc/profile, ~/.bashrc or shell + init script. + * debian/control.in/main: build depends on binutils (>= 2.17cvs20070426-1). + Closes: #405738. + * debian/shlibver: bump shlib to 2.5-5 for the transition to + hash-style=gnu. + * debian/control.in/main: build depends on gcc-4.1-multilib on bi-arch + architectures. + * control.in/amd64, control.in/i386, control.in/kfreebsd-i386, + control.in/mipsn32, control.in/mips64, control.in/powerpc, + control.in/ppc64, control.in/s390x, control.in/sparc64: drop the + depends on lib32gcc1/lib64gcc1. Recommends gcc-multilib. + * debhelper.in/libc.postint: remove the version check when creating + ld.so.conf. Closes: #420726. + + [ Michael Banck ] + * patches/hurd-i386/local-dl-dynamic-weak.diff: new patch (turn + _dl_dynamic_weak on by default for hurd-i386). + + [ Pierre Habouzit ] + * nscd.init: + + use nscd --shutdown rather than start-stop-daemon to stop nscd more + gracefuly. Closes: #338507. + + also invalidate hosts on reload. + + drop oldies (nscd_nischeck things, does not exists anymore). + * patches/any/cvs-scanf_hexfloat.diff: fix a bug when parsing a float in + hexadicimal form with no exponent. Closes: #166403. + * disable hosts caching in nscd by default as it breaks gethostby* calls + (does not respect DNS TTLs, see #335476): + + document it in nscd.NEWS.Debian. + + patches/any/local-disable-nscd-host-caching.diff: update nscd.conf. + + [ Clint Adams ] + * Switch from linux-kernel-headers to linux-libc-dev | linux-kernel-headers. + + -- Aurelien Jarno Mon, 30 Apr 2007 21:55:09 +0200 + +glibc (2.5-4) unstable; urgency=low + + * debian/rules.d/build.mk: fix the testsuite workaround on the MIPS SB1 + platform. + * debian/locales-all.README.Debian: Remove again, it is useless now. + (Closes: #378191) + * debhelper.in/libc.preinst: use dpkg-query instead of looking into + /var/lib/dpkg/info. Thanks to Guillem Jover for the hint. + * patches/mips/cvs-ldsodefs_h.diff: new patch (correct multiple + inclusion guard in sysdeps/mips/ldsodefs.h) from CVS. + * patches/any/cvs-printf_fp-c.diff: update patch from CVS (fix exponent + -4 special case handling when wcp == wstartp + 1). Closes: #419225. + * patches/any/cvs-bits_in_h-ipv6.diff: new patch from CVS (defines + IPV6_V6ONLY in bits/in.h). Closes: #420188. + * debhelper.in/libc.preinst: check the library files instead of links + while checking for a non-dpkg owned libc6 in /lib/tls. Links are + recreated by ldconfig. + * patches/any/cvs-realpath.diff: new patch (fix wrong comment about + realpath() in /usr/include/stdlib) from CVS. Closes: #239427. + * debian/local/manpages/iconv.1: mention that -t is optional. Closes: + #354292. + * debian/local/manpages/iconv.1: mention that multiple fils could be + specified on the command line. Closes: #340911. + * debian/patches/any/submitted-strfry.diff: new patch (fix strfry() + distribution) by Steinar H. Gunderson. Closes: #341903. + * patches/all/submitted-iconv-E13B.diff: new patch to fix wrong E13B + charset alias. patches/any/submitted-iconv-colon.diff: new patch to + allow colons in charset names. Closes: #91935. + * New Hungarian debconf translation, by Attila Szervác. Closes: #420420. + * debian/patches/any/local-ldd.diff: update to discard the error message + that appears if one of the dynamic loader is not supported by the + kernel. Closes: #263494. + * debian/patches/arm/cvs-check_pf.c: new patch (fix assertion in + check_pf.c) from CVS. Closes: #420552. + * debian/debhelper.in/glibc-doc.links: add missing manpages links for + functions documented with others. Closes: #413989. + + -- Aurelien Jarno Mon, 23 Apr 2007 11:41:18 +0200 + +glibc (2.5-3) unstable; urgency=low + + [ Pierre Habouzit ] + * patches/any/submitted-unistd_XOPEN_VERSION.diff: set _XOPEN_VERSION to 600 + when __USE_XOPEN2K is set. Closes: #203412. + * patches/any/cvs-glob-c.diff: fixes glob wrt \/ escapes (among other + fixes). Closes: #234880. + + [ Aurelien Jarno ] + * Update Italian debconf translation, by Luca Monducci. Closes: #419399. + * Put back ld.so into optimized packages, it can be useful in some cases. + * Update French debconf translation, by Christian Perrier. Closes: #419445. + * Switch from gzip to lzma for compressing the locales in the locales-all + package. The unpacked size is decreased by 10 and the packed size by 4 for + no measurable difference on the unpacking time. + * patches/any/submitted-gethostbyname_r.diff: new patch to fix unaligned + memory access in gethostbyname_r.diff(). Closes: #419459. + * Rewrite from scratch /etc/ld.so.nohwcap handling. Closes: #419036 + - script.in/nohwcap.sh: new snipplet to check dpkg and handle + /etc/ld.so.nohwcap + - rules.d/debhelper.mk: replace NOHWCAP with nohwcap.sh in debhelper + scripts + - debhelper.in/libc.preinst: only touch /etc/ld.so.nohwcap + - debhelper.in/libc.postinst: replace the old code with NOHWCAP, + add code to remove /etc/ld.so.hwcappkgs file on upgrade + - debhelper.in/libc-otherbuild.postrm: replace the old code with NOHWCAP + - debhelper.in/libc-otherbuild.postinst: ditto + - debhelper.in/libc-otherbuild.preinst: remove + * debhelper.in/libc.install: remove /usr/bin/lddlibc4 from the libc6 + package. + * debhelper.in/libc.preinst: check for a non-dpkg owned libc6 in /lib/tls. + Closes: #419189. + * Update Dutch debconf translation, by Bart Cornelis. Closes: #419729. + * debhelper.in/libc.postinst: fix the chroot detection, code taken from + udev scripts. + * debian/rules.d/build.mk: disable testsuite on the MIPS SB1 platform. + * patches/localedata/first_weekday.diff: Add first_workday for *_NO + and *_DK. Closes: #379100. + + -- Aurelien Jarno Thu, 19 Apr 2007 07:55:58 +0200 + +glibc (2.5-2ubuntu1) gutsy; urgency=low + + * Merge Debian changes (2.5-0exp6 - 2.5-2). + + -- Matthias Klose Wed, 18 Apr 2007 22:14:32 +0200 + +glibc (2.5-2) unstable; urgency=low + + * Update Portuguese debconf translation, by Ricardo Silva. Closes: #418301, + #418472. + * Update Brazilian Portuguese debconf translation, by Felipe Augusto van de + Wiel. Closes: #418332. + * Update Romanian debconf translation, by Stan Ioan-Eugen. Closes: #418337. + * Update Turkish debconf translation, by Erçin Eker. Closes: #418340. + * Update Galician debconf translation, by Jacobo Tarrio. Closes: #418365. + * Update Arabic debconf translation, by Ossama Khayat. Closes: #418378. + * Update German debconf translation, by Helge Kreutzmann. Closes: #418426. + * Update Basque debconf translation, by Piarres Beobide. Closes: #418521. + * Update Swedish debconf translation, by Daniel Nylander. Closes: #418545. + * Update Spanish debconf translation, by Carlos Valdivia Yagüe. Closes: + #418720. + * Update Russian debconf translation, by Yuri Kozlov. Closes: #418748. + * Update Czech debconf translation, by Miroslav Kure. Closes: #418767. + * debian/locales-depver: remove exp from the locales version. + * Replace patches/alpha/submitted-sigsuspend.diff by + patches/alpha/cvs-sigsuspend.diff from upstream. + * patches/any/local-ldconfig-fsync.diff: call fsync() before closing + /etc/ld.so.cache. Closes: #416716. + * Update Korean debconf translation, by Sunjae Park. Closes: #418872. + * patches/any/local-notls.diff: also include pthread.h from + linuxthreads/sysdeps/pthread/gai_misc.h. + m68k/cvs-m68k-update.diff: update from CVS. Closes: #418881. + * debian/local/usr_sbin/tzconfig: removed. + * debian/local/manpages/tzconfig.8: removed. + * debian/sysdeps/depflags.pl: conflict with tzdata (<< 2007e-2). Older + versions need tzconfig. + * patches/any/cvs-printf_fp-c.diff: update patch from CVS (fix exponent + -4 special case handling when wcp == wstartp + 1). Closes: #419225. + + -- Aurelien Jarno Sat, 14 Apr 2007 17:23:17 +0200 + +glibc (2.5-1) unstable; urgency=low + + * New upstream version 2.5. + - Adds support of POSIX_MADV_* on mips, mipsel, arm and hppa. Closes: + #381294. + - Fixes a pointer-to-long overflow in sunrpc code. Closes: #389084. + - Fixes getent wrt ipv4 hosts lookups. Closes: #347358. + - Fixes strtod wrt hex floats with negative exponent. Closes: #172562. + - Fixes nice() errno when called without appropriate privileges. Closes: + #286825. + - Provides sys/inotify.h. Closes: #369402. + - Fixes strtod("INF") with some locales. Closes: #415417. + + [ Aurelien Jarno ] + * debian/shlibver: Bump up to 2.5. + * debian/copyright: update. + * Remove locale/cvs-iso3166.diff (merged upstream). + * Remove localedata/locale-ro_RO.diff (merged upstream). + * Remove arm/cvs-portshead.patch (merged upstream). + * Remove arm/local-dwarf2-buildfix.diff (merged upstream). + * Remove hppa/cvs-clone.patch (merged upstream). + * Remove hppa/cvs-portshead.diff (merged upstream). + * Remove hppa/submitted-drop-utimes.diff (merged upstream). + * Remove hurd-i386/cvs-machrules-make.diff (merged upstream). + * Remove mips/cvs-fork.diff (merged upstream). + * Remove mips/cvs-resource.diff (merged upstream). + * Remove powerpc/cvs-procfs.diff (merged upstream). + * Remove any/cvs-argp_h.diff (merged upstream). + * Remove any/cvs-getcwd_c.diff (merged upstream). + * Remove any/cvs-sysctl.diff (merged upstream). + * Remove any/cvs-thread_signals.diff (merged upstream). + * Remove any/cvs-uio_h.diff (merged upstream). + * Remove any/cvs-sunrpc-xdrmem_setpos.diff (merged upstream). + * Remove any/cvs-getent-wrong-struct-size.diff (merged upstream). + * Remove any/submitted-strfmon.diff (merged upstream). + * Remove all/submitted-uninitialized-byte-LC_CTYPE.diff (merged upstream). + * Remove any/local-ttyname-devfs.diff (devfs is not supported anymore). + * Update arm/local-no-hwcap.diff. + * Update any/local-ldso-disable-hwcap.diff. + * Update all/submitted-new-brf-encoding.diff. + * debhelper.in/libc.docs: remove INTERFACE as it has been removed upstream. + * sysdeps/depflags.pl: don't make libc6 depends on tzdata, as this package + is of priority required. Should help to debconfize tzdata. + * sysdeps/i386.mk: put the static Xen libc flavour in /usr/lib/xen. Closes: + #391372. + * sysdeps/powerpc.mk: install 64-bit headers (actually gnu/stubs-64.h) + directly into /usr/include and provide /usr/include/powerpc64-linux-gnu as + a symlink to /usr/include for compatibility reasons. Closes: #391858. + * sysdeps/ppc64.mk: install 32-bit headers (actually gnu/stubs-32.h) + directly into /usr/include and provide /usr/include/powerpc-linux-gnu as + a symlink to /usr/include for compatibility reasons. + * kfreebsd/local-scripts.diff: update. + * kfreebsd/local-sys_queue_h.diff: update. + * kfreebsd/local-sysdeps.diff: update to revision 1689 (from glibc-bsd). + * kfreebsd/local-sysdeps-2.4.diff: remove. + * sysdeps/kfreebsd: enable the ports add-on. + * sysdeps/kfreebsd-i386.mk: ditto. + * any/local-stubs_h.diff: new patch to fix a warning in stubs.h. Closes: + #394128. + * alpha/submitted-sigsuspend.diff: new patch (fix the build on alpha) from + the libc-alpha mailing list. + * debian/local/manpages/*: fix typos. Closes: #395427. + * debian/debhelper.in/libc.dirs: don't provide /sys, now provided by + initscripts. + * debian/debhelper.in/nscd.init: add lsb header. + * debian/rules.d/debhelper.mk: add support for installing lintian and linda + overrides files. + * debian/debhelper.in/libc.overrides: new file. + * debian/debhelper.in/libc-dev.overrides: new file. + * debian/debhelper.in/libc-alt.overrides: new file. + * debian/debhelper.in/libc-otherbuild.overrides: new file. + * debian/debhelper.in/libc-dev-otherbuild.overrides: new file. + * debian/any/submitted-getcwd-sys_param_h.diff: new patch (fix the build + with linuxthreads) from the libc-alpha mailing list. + * debian/powerpc/cvs-tls-debug.diff: new patch (fix for debugging + thread-local variables on powerpc) from CVS. + * Build depends on gcc-4.2 on hppa to enable TLS on hppa. Closes: #397813. + * debian/patches/hppa/cvs-hppa-update.diff: new patch (CVS update). + * debian/sysdeps/hppa.mk, debian/script.in/kernelcheck.sh: bump minimum + kernel requirement to 2.6.9 on hppa to get LWS CAS support. + * debian/any/patches/local-linuxthreads-semaphore_h.diff: new patch (fix + /usr/include/semaphore.h with linuxthreads). + * sysdeps/sparc.mk: install 64-bit headers (actually gnu/stubs-64.h) + directly into /usr/include and provide /usr/include/sparc64-linux-gnu as + a symlink to /usr/include for compatibility reasons. Closes: #403980. + * sysdeps/*.mk: build with -g instead of -g1. Closes: bug#403270. + * debhelper.in/libc.install: install gai.conf in /etc. Closes: #404379. + * Add patches/any/local-ldconfig-timestamps.diff (use the timestamps to + update the cache only when needed) by Josselin Mouette. Closes: #374945. + * Add partial support for armel, from http://armel-debs.applieddata.net/diffs/. + * debian/debhelper.in/: delete /usr/doc removal from postinst scripts. + * debian/control.in: drop the dependency on tzdata. It is a required package + and the glibc from Etch depends on it, ensuring tzdata is always present + post-Etch. + * debian/script.in/kernelcheck.sh, debian/sysdeps/linux.mk: set the minimum + kernel version to 2.6.1, except on m68k where it is set to 2.4.1. + * patches/any/cvs-2.5-branch-update.diff: new patch (2.5 branch update) from + upstream CVS. + * patches/any/cvs-lt-update.diff: new patch (linuxthreads update) from + upstream CVS. + * debhelper.in/locales.templates: recommends UTF-8 locales by default. + Closes: #312927. + * control.in/main, rules.d/debhelper.mk: use dh_shlibdeps to set the + dependencies of nscd. Closes: #409288. + * sysdeps/s390.mk: install 64-bit headers (actually gnu/stubs-64.h) + directly into /usr/include and provide /usr/include/s390x-linux-gnu as + a symlink to /usr/include for compatibility reasons. + * patches/all/local-pthread-manpages.diff: update to fix a typo in + pthread_detach(3). Closes: #98852. + * Change any/local-__thread.diff into any/local-notls.diff. + * Update any/local-notls.diff (make glibc buildable without TLS support) + from Petr Salinger and Aurelien Jarno. + * hurd-i386/submitted-trivia.diff: new patch from Thomas Schwinge (make glibc + partly buildable on Hurd). + * hurd-i386/submitted-stat.diff: new patch from Thomas Schwinge (update + struct stat on Hurd). + * hurd-i386/submitted-libc_once.diff: new patch from Thomas Schwinge (add + __libc_once_else to make glibc buildable on Hurd). + * hurd-i386/local-msg-nosignal.diff: new patch from Thomas Schwinge + (workaround the missing MSG_NOSIGNAL support). + * m68k/cvs-m68k-update.diff: new patch (bits from CVS). Closes: #364098. + * any/submitted-clock-settime.diff: new patch (include to get + clockid_t). + * hurd-i386/local-sigsuspend-nocancel.diff: new patch (workaround missing + sigsuspend_not_cancel() on Hurd). + * debhelper.in/glibc-doc.links: add symlinks from pthread_setcanceltype(3), + pthread_setcancelstate(3) and pthread_testcancel(3) to pthread_cancel(3). + Closes: #411132. + * debian/control.in/i386: Changed the conflicts on ia32-libs-dev to a + versioned conflict. Closes: #407540. + * any/local-mktemp.diff: new patch (also propose mkdtemp as an alternative + to mktemp). Closes: #377310. + * any/cvs-ftw-c.diff: new patch (fix nftw() with FTW_CHDIR in /) from CVS. + Closes: #367522. + * any/cvs-printf_fp-c.diff: new patch (fix printf %#.0g) from CVS. + Closes: #209136. + * New Norwegian bokmÃ¥l debconf translation, by Bjørn Steensrud. Closes: + #412559. + * Remove patches/arm/local-softfloat.diff and patches/series.arm-softfloat. + Remove arm-softfloat from debian/rules.d/control.mk. armel (ARM EABI) + replaces the softfloat architecture. + * patches/any/cvs-pow.diff: new patch (fix pow(-inf, nan)) from upstream. + Closes: #226291. + * Update Catalan debconf translation, by Jordà Polo. Closes: #413259. + + [ Denis Barbier ] + * Remove localedata/locale-en_NZ.diff (merged upstream). + * Remove localedata/locale-nr_ZA.diff (merged upstream). + * Remove localedata/new-catalan-locales.diff (merged upstream). + * Remove localedata/update-ZA.diff (merged upstream). + * Remove localedata/locale-te_IN.diff (merged upstream). + * Remove locale/iso4217-RON.diff (merged upstream). + * Update localedata/locales_CH.diff + * Update localedata/supported.diff + * Update localedata/locale-hy_AM.diff + * Update localedata/locale-csb_PL.diff + * Update localedata/dz_BT-collation.diff + * Update localedata/locale-ia.diff + * Update localedata/locales-sr.diff + * Update localedata/tailor-iso14651_t1.diff + * Update localedata/fix-lang.diff + * Update localedata/first_weekday.diff + + [ Pierre Habouzit ] + * Adding myself to Uploaders. + * Rework patches/any/local-ldd.diff so that we don't use file(1) anymore (it + wasn't used anyway). Closes: #165417, #413095. + * Rework patch for #340871 (patches/m68k/local-mathinline_h.diff to use + __NTH rather than __THROW) in function implementations. + * Fix rpcgen(1) manpage, to match rpcgen(1) behaviour more closely. + Closes: #46175. + * patches/any/submitted-date-and-unknown-tz.diff: fix date output in case of + an unknown timezone in $TZ, submitted upstream as #4028. + Closes: #55648, #119540, #269238. + + [ Michael Banck ] + * patches/hurd-i386/local-tls.diff: New patch (fixes building with TLS) by + Samuel Thibault and Barry deFreese. Closes: #413787. + + [ Clint Adams ] + * debian/watch: add watch file. + * debian/control, debian/control.in/opt, debian/control.in/main, + debian/control.in/libc0.1, debian/control.in/libc, + debian/debhelper.in/locales.templates: English corrections from + Christian Perrier for Debconf templates and package descriptions. + Closes: #418006. + + -- Clint Adams Mon, 09 Apr 2007 16:17:20 -0400 + +glibc (2.5-0ubuntu21.2) toolchain-test; urgency=low + + * libc6-dev-sparc64: Copy headers into /usr/include/sparc64-linux-gnu. + A symlink to /usr/include works for libc6-dev-sparc64, but not for + other packages which install into /usr/include/sparc64-linux-gnu. + + -- Matthias Klose Fri, 6 Apr 2007 13:45:41 +0200 + +glibc (2.5-0ubuntu21.1) toolchain-test; urgency=low + + * Update to current glibc-2_5-branch. + - debian/patches/sparc/local-pthread-shlib.diff: Update. + - debian/patches/any/branch-pr3429.diff: Remove. + * Merge Debian changes (2.5-0exp3 - 2.5-0exp6). + + -- Matthias Klose Wed, 21 Mar 2007 17:22:13 +0100 + +glibc (2.5-0ubuntu14) feisty; urgency=low + + * Twiddle the diff a little so it actually applies. + + -- Tollef Fog Heen Tue, 3 Apr 2007 21:34:51 +0200 + +glibc (2.5-0ubuntu13) feisty; urgency=low + + * debian/patches/any/local-ipv6-sanity.diff: Only do AAAA lookups if we + have an interface with better than link-local addresses available. + + -- Tollef Fog Heen Tue, 3 Apr 2007 14:11:26 +0200 + +glibc (2.5-0ubuntu12) feisty; urgency=low + + * debian/patches/any/branch-pr3429.diff: Fix a race condition in + _dl_open with r_debug.r_state consistency check. Ubuntu #72639. + * debian/debhelper.in/nscd.init: Invalidate the hosts database as + well. Ubuntu #72647. + * debian/local/manpages/nscd.conf.5: Fix formatting. Ubuntu #55331. + * Fix typo in libc6-i686 package description. Ubuntu #81153. + * debian/patches/any/local-iconv-fix-trampoline.diff: Import from + Debian; new patch (fix iconvconfig segfault when run under exec-shield, + PaX or similar) from hlfs. Ubuntu #63353. + * Set Ubuntu maintainer address. + + -- Matthias Klose Wed, 21 Mar 2007 08:16:00 +0100 + +glibc (2.5-0ubuntu11) feisty; urgency=low + + * debian/patches/hppa/cvs-missing-cfi_procend.diff: New file to work around + FTBFS uncovered by January CVS binutils. + * debian/patches/series: Use it. + + -- Jeff Bailey Sun, 11 Feb 2007 08:51:24 -0700 + +glibc (2.5-0ubuntu10) feisty; urgency=low + + [ Colin Watson ] + * debian/debhelper.in/libc.postinst: Correct grammar of NSS reboot warning + (LP: #70567). + + [ Jeff Bailey ] + * debian/patches/hppa/submitted-nptl-carlos2.diff: New patch to add + STACK_GROWS_UP case to NPTL. + * debian/patches/series: Use it. + + -- Jeff Bailey Sat, 10 Feb 2007 12:03:41 -0500 + +glibc (2.5-0ubuntu9) feisty; urgency=low + + * debian/debhelper.in/libc.preinst: turn libc6 duplication + check from an error to a warning and point to the bug when + printing the warning. + (Closes Ubuntu: #81125) + + -- Fabio M. Di Nitto Sat, 06 Jan 2007 07:06:22 +0100 + +glibc (2.5-0ubuntu8) feisty; urgency=low + + * no change upload to rebuild with proper binutils/gcc-4.1 + + -- Fabio M. Di Nitto Sat, 06 Jan 2007 06:46:26 +0100 + +glibc (2.5-0ubuntu7) feisty; urgency=low + + [ Colin Watson ] + + * debian/debhelper.in/glibc-doc.links: Restore + /usr/share/doc/glibc-doc/html/index.html symlink. + + [ Fabio M. Di Nitto ] + + * debian/patches/sparc/local-pthread-shlib.diff: New file. + * debian/patches/series: Update. + + -- Fabio M. Di Nitto Thu, 04 Jan 2007 17:36:19 +0100 + +glibc (2.5-0ubuntu6) feisty; urgency=low + + * Rebuild using gcc 4.1.1-21ubuntu3. + + -- Fabio M. Di Nitto Thu, 21 Dec 2006 08:52:45 -0800 + +glibc (2.5-0ubuntu5) feisty; urgency=low + + * Rebuild using gcc 4.1.1-21ubuntu2. + + -- Matthias Klose Thu, 14 Dec 2006 14:12:56 +0000 + +glibc (2.5-0ubuntu4) feisty; urgency=low + + [ Fabio M. Di Nitto ] + * Fix path to patch in ubuntu2 changelog. + * debian/sysdeps/sparc.mk: re-enable testsuite on Niagara. + It was a kernel bug and fix is on the way upstream. + * debian/debhelper.in/libc.postinst: set back NSS version check. + It was bumped by mistake. + (Closes Ubuntu: #21117) + + -- Fabio M. Di Nitto Wed, 29 Nov 2006 06:26:46 +0100 + +glibc (2.5-0ubuntu3) feisty; urgency=low + + * debian/rules.d/build.mk: Do not define MAKEINFO to :, this prevented + generation of the info documentation, which we are happy to distribute. + * debian/control.in: + * main: + * glibc-doc Provides/Replaces/Conflicts glibc-doc-reference instead of + Suggests. Fix description. + * debian/control: Regenerate. + + -- Scott James Remnant Fri, 24 Nov 2006 14:05:17 +0000 + +glibc (2.5-0ubuntu2) feisty; urgency=low + + [ Jeff Bailey ] + * debian/patches/hppa/submitted-ustat.diff: New file. + * debian/patches/series: Update. + + -- Jeff Bailey Wed, 1 Nov 2006 14:53:41 -0500 + +glibc (2.5-0ubuntu1) feisty; urgency=low + + [ Jeff Bailey ] + * debian/rules: Define BUILD_CXX + * debian/sysdeps/sparc.mk: Define sparc64v_CXX, sparc64b_CXX, sparc64_CXX + * debian/sysdeps/powerpc.mk: Define ppc64_CXX. + * debian/sysdeps/i386.mk: Define amd64_CXX. + * debian/sysdeps/amd64.mk: Define i386_CXX. + * debian/control.in/main: Set minimum b-d version of linux-libc-dev to + 2.6.19-1.1 + Add build-dep on lib64c++6 for powerpc and sparc. + * debian/control: Regenerate. + * debian/patches/any/local-2.6.19-linux-libc-dev.diff: Patch to cope + with kernel headers from 2.6.19. + * debian/patches/series: Update. + Prune localedata, alpha, arm, hppa linuxthreads and kernel version + hurd, m68k, and mips patches. + + [ Fabio M. Di Nitto] + * use original glibc-2.5.tar.bz2 tarball from ftp.gnu.org: + * debian/patches/series: drop all/local-remove-manual.diff. + * debian/control.in: + * readd libc-dbg. + * main: + * readd Build-Depends: texinfo (>= 4.0), texi2html. + * change Build-Depends: linux-kernel-headers to linux-libc-dev. + * drop Build-Depends: lib32ssp0 and lib64ssp0. + * drop Conflicts: belocs-locales-bin, belocs-locales-data. + * opt: + * drop libc6-sparcv9. + * readd libc6-sparcv9v. + * readd libc6-sparc64b. + * readd libc6-sparc64v. + * merge descriptions from glibc 2.4 (WARNINGs and NPTL). + * Regenerate debian/control. + * debian/debhelper.in: + * readd glibc-doc.doc-base, glibc-doc.info and glibc-doc.install. + * readd libc-alt-dev.postinst. + * libc.install: drop usr/bin/locale nad usr/bin/localedef. + * libc.manpages: drop locale.1 and localedef.1. + * libc.postinst: + * fix $preversion quoting. + * bump version checking for $preversion to 2.5-0ubuntu1 for some cases. + * fix hwcappkgs lists for sparc. + * remove kernel version detection at startup. + * drop locales-all.* + * Merge debian/FAQ. + * debian/rules: + * drop locales-all and locales packages. + * readd CXX for cross-compiling. + * force -fno-stack-protector to disable automatic enablement from Ubuntu's + glibc. Glibc itself will enable it as necessary. + * debian/rules.d: + * build.mk: + * readd CXX for cross-compiling. + * drop localedir (requires check). + * readd manual generation (requires check). + * keep using /etc/ld.so.conf.d/$triplet. New debian packages use + triplet.conf, and that would require a conffile migration script. + * readd nptl bits. + * debhelper.mk: + * readd nptl bits. + * install $(libc)-dev-$$x.postinst from libc-alt-dev.postinst. + * debian/script.in/kernelcheck.sh: fix kernel version check on != m68k. + (this should be pushed to debian too) + * debian/shlibver: bump to 2.5-0ubuntu1. + * debian/sysdeps: + * amd64.mk: + * default to nptl for amd64. + * set i386 configure target to i686-linux. + * set i386 CC to use $(BUILD_CC). + * readd --disable-profile to i386_extra_config_options. + * readd i386_MAKEFLAGS to set gconvdir. + * set i386_extra_cflags back to -march=i686 -mtune=i686. + * drop i386_rtlddir (requires check). + * set i386_slibdir and _libdir to use */lib32. + * change symlinking for */lib32. + * depflags.pl: + * change linux-kernel-headers into linux-libc-dev. + * readd Recommends: tzdata. + * readd Depends: locales (>= 2.3.11). (requires review) + * readd hack to cope with */lib64. + * hppa.mk: enable nptl. + * i386.mk: + * readd no-tls-direct-seg-refs to generic libc cflags. + * make symlink absolute again. (requires review - might be droppable) + * restore nptl_* options. + * change i686_slibdir to /lib/tls/i686/cmov. + * change xen_slibdir to /lib/tls/i686/nosegneg. + * keep using /etc/ld.so.conf.d/xen.conf. New debian packages use + libc6-xen.conf, and that would require a conffile migration script. + * drop ldconfig from libc6-xen. + * linux.mk: + * readd comments about nptl. + * readd nptl config. + * powerpc.mk: revert change to fix bug #391858 that is a gcc bug + (already addressed in Ubuntu) and not a glibc one. + * sparc.mk: + * readd sparc64b pass. + * readd sparc64v pass. + * disable sparcv9 pass. + * readd sparcv9v pass. + * fix sparc64 headers install. + * dynamically disable testsuite when building on Niagara. + * debian/patches: + * port forward ubuntu dir from 2.4: + * drop local-dynamic-resolvconf.diff. now part of debian. + * readd local-altlocaledir.diff. + * series: update. + + -- Fabio M. Di Nitto Wed, 01 Nov 2006 12:49:55 +0100 + +glibc (2.4-1) UNRELEASED; urgency=low + + * New upstream version 2.4: + - NPTL is used instead of linuxthreads on alpha. Closes: #325600. + - NPTL being the default thread library when available, only one + version of the thread library is available (either linuxthreads or + NPTL). Closes: #399035. + - .eh_frame has been fixed. Closes: #349688. + - Fix a memory leak in getprotobyname. Closes: #365233. + - Support for MALLOC_PERTURB has been added. Closes: #350579. + - Support for 2.4 kernels has been removed. Closes: #258740. + + [ Clint Adams ] + * Remove all/cvs-manual-memory.diff (merged upstream). + * Remove all/cvs-manual-string.diff (merged upstream). + * Remove any/cvs-divdi3-moddi3.diff (merged upstream). + * Remove any/cvs-errlist.diff (merged upstream). + * Remove any/cvs-siginfo_h.diff (merged upstream). + * Remove any/cvs-regcomp_c.diff (merged upstream). + * Remove any/cvs-tst-setcontext_c.diff (merged upstream). + * Remove any/local-dash.diff (merged upstream). + * Remove any/local-gcc4-elf.diff (merged upstream). + * Remove powerpc/cvs-executable-got.diff (merged upstream). + * Remove sparc/cvs-datastart.diff (merged upstream). + * Remove sparc/cvs-gcc4-inline.diff (merged upstream). + * Remove sparc/local-gcc4-mv8.diff (merged upstream). + * Remove sparc/submitted-socket-weakalias.diff (merged upstream). + * Remove everything to do with nscd_nischeck. + * Remove any/local-linuxthreads-sizefix.diff (not necessary anymore). + * Update hppa/submitted-lt.diff. + * debian/shlibver: Bump up to 2.4-1. + * Update any/local-bashisms.diff: fix invalid test operator (==) + in run-iconv-test.sh + * debian/rules.d/build.mk: don't try to build html documentation. + * debian/sysdeps/hppa.mk: use ports and linuxthreads add-ons + * debian/sysdeps/m68k.mk: use ports and linuxthreads add-ons + * debian/sysdeps/m32r.mk: use ports and linuxthreads add-ons + * debian/sysdeps/mips.mk: use ports add-on + * debian/sysdeps/mipsel.mk: use ports add-on + * debian/sysdeps/arm.mk: use ports add-on + * Build with gcc 4.1 on all architectures but hurd-i386. + * debian/debhelper.in/nscd.init: partially sync nscd initscript + with upstream. + * Remove mips/local-librt.diff. + * debian/rules.d/tarball.mk: no longer run tar with -v. + * Add hppa/cvs-portshead.patch (update hppa code to ports HEAD) + * Add arm/cvs-portshead.patch (update arm code to ports HEAD) + + [ Denis Barbier ] + * Remove locale/complex-collate.diff (merged upstream). + * Remove locale/cvs-{iso4217,iso639}.diff, locale/cvs-localedata.diff + * Remove from any/local-forward-backward-collation.diff a chunk merged + upstream. + * debian/rules.d/tarball.mk: glibc--2.4.tar.bz2 add-on unpacks + into either or glibc--2.4, in which case it is renamed + into . + + [ Michael Banck ] + * debian/sysdeps/hurd.mk: Only use libidn for add-ons. + + [ Aurelien Jarno ] + * Update all/submitted-new-brf-encoding.diff. + * Remove alpha/cvs-gcc4-profile.diff (not needed anymore). + * Update alpha/submitted-xstat.diff. + * Update arm/cvs-gcc4-inline.diff. + * Remove arm/cvs-gcc4.1-raise.diff (merged upstream). + * Remove arm/cvs-float-byteorder.diff (merged upstream). + * Remove arm/cvs-socket-weakalias.diff (merged upstream). + * Update arm/local-ioperm.diff to reflect the new port add-on. + * Update arm/local-no-hwcap.diff to reflect the new port add-on. + * Remove any/cvs-argp_h.diff (merged upstream). + * Remove any/cvs-ctan.diff (merged upstream). + * Remove any/cvs-futimes.diff (merged upstream). + * Remove any/cvs-nfs_h.diff (merged upstream). + * Remove any/cvs-path_log.diff (merged upstream). + * Remove any/cvs-resource_h.diff (merged upstream). + * Remove any/cvs-static-getpid.diff (merged upstream). + * Remove any/cvs-tls-crashfix.diff (merged upstream). + * Add any/cvs-uio_h.diff from upstream to allow inclusion of bits/uio.h from + fcntl.h and prevent multiple inclusions. + * Remove any/local-kernel-features.diff (merged upstream). + * Update any/local-ldso-disable-hwcap.diff. + * Add any/local-linuxthreads-tst-sighandler.diff to disable + tst-sighandler{1,2} tests, which seems to be buggy. + * Update any/local-rtld.diff. + * Update any/local-sysctl.diff to reflect the new port add-on. + * Update any/local-version-sanity.diff. + * Remove any/submitted-eh-frame-terminator.diff (merged upstream). + * Update any/submitted-nis-netgrp.diff. + * Remove i386/local-i486_ldt_support.diff (merged upstream). + * Remove ia64/cvs-gcc41-atomic_h.diff (merged upstream). + * Remove hppa/cvs-linesep.diff (merged upstream). + * Remove hppa/cvs-no-ldbl-128 (merged upstream). + * Replace hppa/cvs-pie-relocs.diff by submitted-nptl-carlos.diff, see + http://lists.parisc-linux.org/pipermail/parisc-linux/2006-July/029549.html. + * Remove hppa/local-gcc-4-profile.diff (not necessary anymore). + * Update hppa/local-inlining.diff to reflect the new port add-on. + * Remove hppa/local-remove-mallocdef.diff (not necessary anymore as + spinlock ldcw fix has been applied). + * Update hppa/submitted-drop-utimes.diff. + * Remove hppa/submitted-fenv-align.diff (merged upstream). + * Remove hppa/submitted-fpu.diff (merged upstream). + * Remove hppa/submitted-iitlbp.diff (merged upstream). + * Remove hppa/submitted-sysdeps.diff (merged upstream). + * Remove hurd-i386/cvs-ioctl-pfinet.diff (merged upstream). + * Remove hurd-i386/cvs-getresuid-dyslexia.diff (merged upstream). + * Remove hurd-i386/cvs-posix-opts.diff (merged upstream). + * Update hurd-i386/submitted-sysvshm.diff. + * Remove kfreebsd/local-nscd_no_mremap.diff (not necessary anymore). + * Update kfreebsd/local-scripts.diff. + * Add kfreebsd/local-ftw.diff. + * Add kfreebsd/local-sysdeps-2.4.diff. + * Add kfreebsd/local-memusage_no_mremap.diff. + * Remove m32r/cvs-elf-m32r_rel32.diff (merged upstream). + * Update m68k/local-compat.diff. + * Update m68k/local-mathinline_h.diff to reflect the new port add-on. + * Update m68k/local-fpic.diff. + * Update m68k/local-reloc.diff to reflect the new port add-on. + * Update m68k/submitted-gcc34-seccomment.diff. + * Add mips/cvs-fork.diff (fix the path to i386/fork.c) from CVS. + * Add mips/cvs-resource.diff (fix a typo in bits/resource.h) from CVS. + * Remove mips/cvs-gcc4-inline.diff (merged upstream). + * Remove mips/cvs-gcc4-sysdeps.diff (merged upstream). + * Update mips/submitted-msq.diff to reflect the new port add-on. + * Remove powerpc/cvs-gcc41-initfini.diff (merged upstream). + * Update any/local-libgcc-compat-{all,others}.diff and split them into + any/local-libgcc-compat-{main,ports}.diff. Move mips/libgcc-compat.c to + mips/mips32/libgcc-compat.c as it is only needed for the o32 ABI, and not + needed for n32 and n64 ABIs. + * Add sparc/local-fork.diff (use fork.c instead of fork.S). + * Add any/local-__thread.diff (make glibc buildable without __thread support) + from Michael Banck. + * debian/script.in/kernelcheck.sh: set the minimum kernel version to 2.6.0, + except on m68k where it is set to 2.4.1. + * debian/sysdeps/i386.mk: install the xen flavour in /lib/i686/nosegneg and + create /etc/ld.so.conf.d/libc6-xen.conf which uses the new hwcap feature. + Closes: #363442. + * debian/FAQ: Remove LD_ASSUME_KERNEL workaround, as linuxthreads versions + of the glibc are not built anymore. + + [ Jeff Bailey ] + + * debian/control.in/libc: Move tzdata dependancy to ... + * debian/sysdeps/depflags.mk: ... here. + + * debian/sysdeps/powerpc.mk: Include biarch headers in libc6-dev-ppc64 + + * debian/patches/any/local-dynamic-resolvconf.diff: New file to + check for updated resolv.conf before a nameserver call. (Closes: + #272265). + * debian/patches/series: Use it. + + -- Clint Adams Sun, 28 May 2006 03:28:14 +0200 + +glibc (2.3.6.ds1-13) unstable; urgency=low + + * debhelper.in/libc.postinst: try to add /etc/ld.so.conf.d support for + versions lower then 2.3.6.ds1-11 instead of 2.3.6-16, because new + installations done with version from 2.3.6-16 to 2.3.6.ds1-10 are + broken. Closes: #411542. + + -- Aurelien Jarno Wed, 21 Feb 2007 11:07:13 +0100 + +glibc (2.3.6.ds1-12) unstable; urgency=low + + [ Pierre Habouzit ] + * patches/any/cvs-sunrpc-xdrmem_setpos.diff: fix a pointer-to-cast problem + in sunrpc, backport from glibc-2.5. Closes: #389084. + * patches/any/cvs-getent-wrong-struct-size.diff: fix a bad struct size in + nss/getent.c, backport from glibc-2.5. Closes: #347358. + * patches/any/local-sysctl.diff: sysctl is back for good it seems, remove + the link warning from the patch. Closes: #410816. + + [ Aurelien Jarno ] + * debian/control.in/opt: fix a typo: Ezla -> Ezra. Closes: #410839. + + -- Pierre Habouzit Thu, 15 Feb 2007 18:41:06 +0100 + +glibc (2.3.6.ds1-11) unstable; urgency=low + + * patches/kfreebsd/local-sysdeps.diff: update to revision 1886 (from + glibc-bsd). + * patches/any/cvs-itoa-c.diff: new patch from CVS (fix sprintf %0lld when + argument equals to 0). Closes: bug#292523. + * patches/all/local-pthread-manpages.diff: fix pthread manpages. Closes: + bug#220719. + * debhelper.in/libc-otherbuild.postinst: fix handling of + /etc/ld.so.hwcappkgs. Closes: bug#409374. + * debhelper.in/libc.postinst: fix code adding /etc/ld.so.conf.d support to + /etc/ld.so.conf. Closes: bug#409516. + + -- Aurelien Jarno Sat, 3 Feb 2007 20:13:29 +0100 + +glibc (2.3.6.ds1-10) unstable; urgency=low + + * sysdeps/kfreebsd.mk: Link all machine*/ directories to support + new bi-arch headers. + * Add bi-arch support on kfreebsd-amd64: + - debian/sysdeps/kfreebsd-amd64.mk: New pass for 32-bit glibc + - debian/control.in/main: Add build-depends on libc0.1-dev-i386 + - debian/control.in/kfreebsd-i386: add libc0.1-dev-i386 and + libc0.1-i386 packages + * patches/kfreebsd/local-sysdeps.diff: update to revision 1853 (from + glibc-bsd). + * debian/control.in/libc: downgrade priority of libc-dev to optional + from standard to match overrides. + * debian/patches/hppa/cvs-clone.diff: new patch by Helge Deller + inspired from upstream CVS code (fix LTP clone04 and + clone06 test). Closes: #405411. + * debian/patches/any/cvs-zdump-64-bit.diff: new patch from CVS to fix zdump + on 64-bit architectures. Closes: #402776. + * debian/quitlrc: new file. + * debian/rules.d/quilt.mk: use debian/quiltrc instead of default ~/.quiltrc. + Closes: #406136. + + -- Aurelien Jarno Mon, 8 Jan 2007 22:29:37 +0100 + +glibc (2.3.6.ds1-9) unstable; urgency=low + + [ Aurelien Jarno ] + * patches/kfreebsd/local-sysdeps.diff: update to revision 1775 (from + glibc-bsd). + * debian/po/eu.po: new file, thanks to Piarres Beobide. Closes: #398984. + * debian/wrapper/objcopy: remove useless .debug_loc (patch from Daniel + Jacobowitz). Closes: #399217. + * debian/po/de.po: Fix German translation. Closes: #372817. + + [ Michael Banck ] + * patches/hurd-i386/submitted-futimes.diff: Moved to ... + * patches/hurd-i386/cvs-futimes.diff: ... here, updated with the + version committed upstream by Roland McGrath. + + -- Aurelien Jarno Thu, 7 Dec 2006 11:27:42 +0100 + +glibc (2.3.6.ds1-8) unstable; urgency=high + + * any/local-iconv-fix-trampoline.diff: new patch (fix iconvconfig segfault + when run under exec-shield, PaX or similar) from hlfs. Closes: #397020. + * debian/po/ro.po: new file, thanks to Stan Ioan-Eugen. Closes: #395348. + * debhelper.in/locales.prerm; debhelper.in/locales.prerm, + debhelper.in/locales-all.prerm: fixed bad interactions between locales + and locales-all. Closes: #396354. + * patches/kfreebsd/local-sysdeps.diff: update to revision 1703 (from + glibc-bsd). + + -- Aurelien Jarno Sat, 4 Nov 2006 23:36:19 +0100 + +glibc (2.3.6.ds1-7) unstable; urgency=low + + [ Aurelien Jarno ] + * New any/local-no-pagesize.diff (remove the usage of PAGE_SIZE) by + Steve Langasek. Closes: #394385. + + -- Aurelien Jarno Sat, 21 Oct 2006 22:41:39 +0200 + +glibc (2.3.6.ds1-6) unstable; urgency=low + + [ Aurelien Jarno ] + * Improve the heuristic used to detect other copy of the C library. Closes: + #390950. + * Add m68k/local-pthread_lock.diff (fix deadlock with pthread_spinlock) by + Roman Zippel. Closes: #385917. + * Build-conflicts with buggy gcc-4.1 (= 4.1.1-14). Closes: #391485. + + -- Aurelien Jarno Sat, 7 Oct 2006 23:54:49 +0200 + +glibc (2.3.6.ds1-5) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/local/manpages/ldconfig.8: Update the manpage. Closes: #325921. + * debian/local/manpages/ld.so.8: Update the manpage. Closes: #171145, + #357676, #280027. + * rules.d/debhelper.mk: don't make ld.so.8.gz or ld.so.conf executable. + * debian/FAQ: specify that LD_ASSUME_KERNEL does not work on amd64. + Closes: #386924. + * patches/any/cvs-sqrt.diff: New patch from upstream to fix sqrt computation + for negative imaginary number. Closes: #388852. + + [ Michael Banck ] + * Add hurd-i386/cvs-getsid.diff (fix getsid(0) on the Hurd) by + Samuel Thibault (patch from glibc-2.4). + * Add hurd-i386/submitted-futimes.diff (fix touch on the Hurd) by + Thomas Schwinge and Samuel Thibault. Closes: #388785. + + [ Denis Barbier ] + * Add sr_ME and sr_RS locales, and keep sr_CS for backward compatibility. + * First weekday is Sunday in Brazil. Closes: #385859 + Thanks Gunther and Felipe Augusto van de Wiel. + + -- Aurelien Jarno Sun, 1 Oct 2006 18:48:27 +0200 + +glibc (2.3.6.ds1-4) unstable; urgency=low + + * debian/control.in/opt: add a new line at the end of the file. (Closes: + #384375). + * debian/rules.d/control.mk: add a check to make sur that all files in + debian/control.in have a new line at the end. + + -- Aurelien Jarno Thu, 24 Aug 2006 00:21:25 +0200 + +glibc (2.3.6.ds1-3) unstable; urgency=low + + * patches/any/cvs-sysctl.diff: patch from upstream to fix the sysctl() + problem for NPTL. + * patches/any/local-sysctl.diff: remove the NPTL fix from this patch, apply + the same kind of fix for linuxthreads than for NPTL. (Closes: #383976). + * patches/any/local-sysctl.diff: fix for arm. + * patches/any/local-bashisms.diff: fix bashisms in the testsuite. + * debian/control.in/{i386,powerpc,ppc64,s390x,sparc64}: change the bi-arch + package priority to optional (but keep libc6-i386 on amd64 to standard). + (Closes: #344253). + * debian/control.in/opt: Removed the comment about the IBM's JDK in the + descriptions of the optimized packages, as an NPTL version is also present + in the main libc. + * debian/rules.d/build.mk: force the locale directory to /usr/lib/locale. + This way the 32-bit libc6 on amd64 is able use the locales correctly (it + was already done for other bi-arch architectures). (Closes: #379959). + + -- Aurelien Jarno Wed, 23 Aug 2006 00:38:22 +0200 + +glibc (2.3.6.ds1-2) unstable; urgency=low + + [ Aurelien Jarno ] + * rules.d/build.mk: removed the call to texi2html. (Closes: #383276). + * New debian/patches/any/cvs-ctermid.diff from upstream to fix a segfault in + ctermid(NULL). Thanks Denis for the hint. (Closes: #380504, #383362). + * New debian/patches/localedata/reverted-for-etch.diff: revert a few + locales changes done in 2.3.6.ds1-1 and refused by the release managers: + - locales/vi_VN: Various fixes + - locales/ru_RU: Use U2002 for thousands_sep and mon_throusands_sep. + + [ Denis Barbier ] + * debian/patches/localedata/cvs-localedata.diff: A new test target + tst-strfmon1 was previously added into localedata/Makefile, + so add localedata/tst-strfmon1.c to really perform this test. + + -- Aurelien Jarno Thu, 17 Aug 2006 00:32:25 +0200 + +glibc (2.3.6.ds1-1) unstable; urgency=low + + [ Denis Barbier ] + * New all/submitted-uninitialized-byte-LC_CTYPE.diff patch to fix + uninitialized bytes or misaligned words in locale files. + * debian/debhelper.in/locales-all.postinst: Make localedef silent, and + fix an error, this script could not be run more than once. + * debian/debhelper.in/locales-all.prerm: New file, to remove + /usr/lib/locale/locale-archive. Thanks Lars Wirzenius. + (Closes: #382136) + * debian/debhelper.in/locales.postinst: Pass --no-checks to update-locale + to not break installation of this package even if non working locales + are selected. Thanks Robert Millan. (Closes: #365628) + * debian/patches/locale/cvs-iso4217.diff: Update to CVS 2006-08-12. + * debian/patches/localedata/cvs-localedata.diff: Update to CVS 2006-08-12 + Among other changes: + * New locale files: as_IN, ca_AD, csb_PL, el_CY, fr_AD, it_AD, nr_ZA, + or_IN, pa_PK and tr_CY. + * charmaps/MIK: New file. + * Sync bg_BG bs_BA es_MX ru_RU tg_TJ tt_RU with latest iso-4217.def + * Add transliateration support to LC_CTYPE for most locales. + * Fix date fields for several *_IN locales. + * locales/{*_ZA,ro_RO,vi_VN}: Various fixes + * locales/de_DE: Fix date_fmt. + * locales/hu_HU: Better month name abbreviations. + * locales/pl_PL: Don't ignore U0020 in collation. + * locales/ru_RU: Use U2002 for thousands_sep and mon_throusands_sep. + * locales/es_UY: Change currency_symbol. Closes: #378151 + * locales/de_CH: Change thousand separator to '. + * The following patches have been merged into localedata/cvs-localedata.diff + and are dropped: + locale/iso4217-RON.diff localedata/locale-ro_RO.diff + localedata/new-catalan-locales.diff localedata/locale-te_IN.diff + localedata/locale-nr_ZA.diff localedata/update-ZA.diff + + [ Aurelien Jarno ] + * sysdeps/{powerpc,s390,ia64}.mk: make the NPTL version buildable on 2.4 + kernels. + * New any/local-sysctl.diff patch to remove the annoying warning messages + that appear with 2.6.18+ kernels, and to warn users to not use sysctl(). + * debian/debhelper.in/libc.postinst: update list of optimized glibc + packages. Thanks Petr Salinger. (Closes: #383168). + * New any/cvs-static-getpid.diff patch from upstream to fix getpid() in + statically linked programs on some architectures. (Closes: #367656). + + -- Aurelien Jarno Tue, 15 Aug 2006 23:01:43 +0200 + +glibc (2.3.6-19) unstable; urgency=low + + [ Michael Banck ] + * debhelper.in/libc-udeb.install.hurd-i386: New file; libpthread is + not part of glibc on the Hurd. + + [ Aurelien Jarno ] + * Ship librt in the libc udeb (closes: bug#381881). + + -- Aurelien Jarno Tue, 8 Aug 2006 18:18:48 +0200 + +glibc (2.3.6-18) unstable; urgency=medium + + (urgency set to medium as it fixes a FTBFS) + + [ Aurelien Jarno ] + * Update ia64/cvs-gcc41-atomic_h.diff again (fix build failure with gcc-4.1, + nptl part) from upstream. + + -- Aurelien Jarno Tue, 1 Aug 2006 16:59:33 +0200 + +glibc (2.3.6-17) unstable; urgency=medium + + (urgency set to medium as it fixes a FTBFS) + + [ Aurelien Jarno ] + * Update ia64/cvs-gcc41-atomic_h.diff (fix build failure with gcc-4.1) from + upstream. + + [ Michael Banck ] + * debian/sysdeps/hurd.mk: Disable RUN_TESTSUITE. + + -- Aurelien Jarno Sun, 30 Jul 2006 21:25:32 +0200 + +glibc (2.3.6-16) UNRELEASED; urgency=low + + (urgency set to medium as it fixes a FTBFS) + + [ Aurelien Jarno ] + * Add arm/cvs-gcc4.1-raise.diff (fix build failure with gcc-4.1) from + upstream. + * Add ia64/cvs-gcc41-atomic_h.diff (fix build failure with gcc-4.1) from + upstream. + * Build with gcc 4.1 on all architectures but hurd-i386. + * debian/sysdeps/s390.mk: switch s390x to nptl. + * debian/rules.d/build.mk: use ld.so libc.so instead of libc.so to + determine if the host CPU is able to run the testsuite. + * debian/sysdeps/kfreebsd.mk: also use the nfs/ directory from kernel + headers. + * debian/sysdeps/kfreebsd.mk: also use the nfs/ directory from kernel + headers. + * patches/kfreebsd/local-sysdeps.diff: update to revision 1631 (from glibc-bsd). + * debian/local/manpages/iconv.1: fixed the description of the --silent + option. (Closes: #375741) + * debian/local/manpages/iconv.1: fixed the use of the TH keyword. (Closes: + #372510) + * debian/locales-all.README.Debian: File removed, it is useless now. + (Closes: #378191) + * Update Russian debconf translation, by Yuri Kozlov. (Closes: #379395) + * debian/debhelper.in/libc.postinst: add /etc/ld.so.conf.d/ support. + * Drop any/local-ldconfig-multiarch.diff, use /etc/ld.so.conf.d/ to + configure multiarch libraries. + * Update m68k/local-mathinline_h.diff (fix bits/mathinline.h), by Roger Leigh. + (Closes: #340871) + + [ Denis Barbier ] + * debian/control.in/main: also make locales Conflicts: belocs-locales-bin. + * debian/debhelper.in/locales.config: some programs keep modifying + /etc/environment to store locale variables, so read /etc/environment + even when upgrading new versions. Of course, /etc/default/locale has + still a higher precedence over /etc/environment. (Closes: #363644) + * Add new Lithuanian debconf translation, by Gintautas Miliauskas. + (Closes: #374365) + * Update Brazilian Portuguese debconf translation, by Felipe Augusto + van de Wiel. (Closes: #375451) + * debian/debhelper.in/libc.postinst: Call iconvconfig to generate + /usr/lib/gconv/gconv-modules.cache. (Closes: #376811) + * debian/debhelper.in/libc.postrm: Remove this cache file. + + -- Aurelien Jarno Thu, 8 Jun 2006 08:03:49 +0200 + +glibc (2.3.6-15) unstable; urgency=low + + * debian/rules.d/build.mk: generate a test log file even if the testsuite + is disabled, too make debhelper 5 happy. + + -- Aurelien Jarno Thu, 8 Jun 2006 08:02:47 +0200 + +glibc (2.3.6-14) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/debhelper.in/nscd: explicitely list the tables to invalidate. + (Closes: #370124) + * debian/debhelper.in/nscd: create /var/run/nscd if it does not already + exist. (Closes: #370122) + * Update m68k/local-mathinline_h.diff (fix bits/mathinline.h), by Roger Leigh. + Enable it. (Closes: #340871) + * debian/debhelper.in/libc.preinst: also check for other copies of the libc in + /lib32 and /lib64. + * debian/debhelper.in/libc.preinst, debian/rules.d/debhelper.mk: only use + the default system linker when searching for other copies of the libc. + * debian/sysdeps/i386.mk: make /lib/i386-linux-gnu and /usr/lib/i386-linux-gnu + symlinks relative. + * debhelper.in/libnss-dns-udeb.install, debhelper.in/libnss-files-udeb.install: + fix the installation path. (Closes: #370523) + * patches/kfreebsd/local-sysdeps.diff: update to revision 1583 (from glibc-bsd) + to fix the build with gcc-4.1. + * patches/m32r/local-ports-m32r.diff: remove libc_cv_gcc_unwind_find=yes + from m32r/configure by Kazuhiro Inaoka. (Closes: #371052) + * rules.d/debhelper.mk: don't install librpcsvc.a when cross-compiling. + (Closes: #369657) + * debian/compat, debian/control.in/main: switch to debhelper 5.0. + + [ Denis Barbier ] + * debian/patches/localedata/tailor-iso14651_t1.diff: Fix several collation + rules, which could cause errors in regular expressions with character + ranges, in particular with et_EE locale. (Closes: #362514) + * debian/patches/localedata/locale-csb_PL.diff + * debian/patches/localedata/locale-ro_RO.diff + * debian/patches/localedata/locale-se_NO.diff: Apply similar fixes. + * debian/main/control.in: make locales Conflicts: belocs-locales-data. + + -- Aurelien Jarno Wed, 7 Jun 2006 23:16:58 +0200 + +glibc (2.3.6-13) unstable; urgency=low + + * debian/patches/alpha/local-gcc4.1.diff: fix a small typo. sigh. + * debian/control.in/main: build-depends on libc6-dev-s390x on s390. + * Remove any/local-libgcc-static.diff. (Closes: #369636, #369641) + + -- Aurelien Jarno Wed, 31 May 2006 07:20:14 +0200 + +glibc (2.3.6-12) unstable; urgency=low + + * Don't do a udeb pass, it is still too buggy. (Closes: #369492) + * debian/control.in/main: build-depends on libc6-dev-sparc64 on sparc. + * Add patches/alpha/local-gcc4.1.diff (fix build with gcc-4.1) from + Falk Hueffner. + * patches/kfreebsd/local-sysdeps.diff: update to revision 1571 (from + glibc-bsd). + + -- Aurelien Jarno Tue, 30 May 2006 22:35:35 +0200 + +glibc (2.3.6-11) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/rules/build.mk: don't remove ld.so from udeb packages. + * debian/rules: move udeb_add-ons to debian/sysdeps/{kfreebsd,linux}.mk. + * M32R support: (Closes: #366962) + - debian/rules.d/control.mk: add m32r. + - Add debian/sysdeps/m32r.mk. + - Add debian/patches/any/cvs-futimes.diff (use fnctl64 if fnctl is no + available). + - Add debian/patch/any/local-kernel-features.diff (fix the include path + for kernel-features.h) so that it could be used from other files. + - Add debian/patches/any/local-libgcc-static.diff (link with libgcc_s). + - Add debian/patches/m32r/local-ports-m32r.diff (m32r support). + - Add debian/patches/m32r/cvs-elf-m32r_rel32.diff (Add R_M32R_REL32 to + elf/elf.h). + * debian/local/manpages/localedef.1: fix a typo. (Closes: #310477) + * debian/local/manpages/iconv.1: fix the indentation (Closes: #316148) + * debian/local/manpages/iconv.1, debian/local/manpages/localedef.1: change + sarge into etch. + * debian/sysdeps/kfreebsd.mk: build the udeb package with -Os on + kfreebsd-i386 and kfreebsd-amd64. + * debian/sysdeps/*.mk: build the udeb with -Os, except on m68k and s390. + * debian/sysdeps/hppa.mk: build the udeb with gcc 4.1. + mipsel, powerpc and sparc. + * debian/sysdeps/arm.mk: set udeb_MIN_KERNEL_SUPPORTED to 2.4.1, as the + arm build daemons are still running a 2.4 kernel. + * debian/sysdeps/sparc.mk: set udeb_MIN_KERNEL_SUPPORTED to 2.4.1, as d-i + still needs a 2.4 kernel. + * patches/kfreebsd/local-sysdeps.diff: update to revision 1577 (from + glibc-bsd). + * Add debian/patches/powerpc/cvs-gcc41-initfini.diff (fix build with gcc 4.1 + on powerpc) from upstream CVS. + * debian/sysdeps/i386.mk: add a symlink (/usr)/lib/i386-linux-gnu -> + (/usr)/lib/i486-linux-gnu. + * Remove patches/i386/local-sse-oldkernel.diff (we don't support 2.2 kernels + anymore). + * Merge debian/local/etc_init.d/nscd and debian/debhelper.in/nscd.init. + (Closes: #368587) + * Remove debian/local/etc_init.d/nscd. + + [ Denis Barbier ] + * Add patches/all/submitted-new-brf-encoding.diff: Add new BRF encoding + (ASCII Braille), submitted upstream by Samuel Thibault. + * Add patches/localedata/locale-zh_TW.diff: Remove from + dates. Thanks Dan Jacobson (Closes: #352600) + + [ Clint Adams ] + * debian/debhelper.in/libc.preinst: use POSIX syntax for kill. + * debian/control.in/main: bump to Standards-Version 3.7.2. + + -- Aurelien Jarno Tue, 30 May 2006 02:28:33 +0200 + +glibc (2.3.6-10) unstable; urgency=low + + [ Aurelien Jarno ] + * debian/debhelper.in/libc.preinst: use the original path if readlink -f + fails to canonicalize the path. (Closes: #368116) + * Add patches/arm/local-softfloat.diff (support for arm softfloat), and + enable on arm-softfloat only, as it breaks other architectures. (Closes: + #358772) + * debian/rules.d/control.mk: Add arm-softfloat to the architectures list. + * Do a separate pass for the udeb package, so that it could use different + build options. + * Set the minimum kernel to 2.6.1 for the udeb package, except for i386, + m68k, mips, mipsel, powerpc and s390. + * Enable the locales-all package. (Closes: #308020) + * debian/sysdeps/i386.mk: build the glibc with --without-__thread again on + i386 (Closes: #368022, #368326). + * debhelper.in/libc.preinst, debhelper.in/libc-otherbuild.postinst, + debhelper.in/libc.postinst, debhelper.in/libc-otherbuild.preinst: use + /bin/sh instead of /bin/bash. (Closes: #267594) + * patches/kfreebsd/local-sysdeps.diff: update to revision 1571 (from + glibc-bsd). + + -- Aurelien Jarno Sun, 21 May 2006 22:36:27 +0200 + +glibc (2.3.6-9) unstable; urgency=low + + * Don't run make install with -j, as it is not SMP safe. + + -- Aurelien Jarno Thu, 18 May 2006 17:54:39 +0000 + +glibc (2.3.6-8) unstable; urgency=low + + [ Aurelien Jarno ] + * Disable m68k/local-mathinline_h.diff, it breaks the build of the glibc on + m68k. + * Add all/local-pt_BR.diff (fix a small typo in the Brazilian Portuguese + translation) by Guilherme de S. Pastore. (Closes: #319422) + * Add hurd-i386/local-mlock.diff (fix mlock on Hurd/Mach), by Samuel + Thibault. (Closes: #349204) + * sysdeps/i386.mk: build glibc with --with-__thread on i386. + * debian/local/manpages: s/woody/etch/g. (Closes: #364198) + * sysdeps/depflags.pl: bumped the versioned conflicts with initrd-tools + to 0.1.84.1, as older version use LD_ASSUME_KERNEL=2.4. (Closes: #365647) + * Follow symlinks while checking for other copy of the C library. + (Closes: #365838) + * Invalidate nscd cache when calling /etc/init.d/nscd restart. + (Closes: #365676, #365677) + * /usr/sbin/tzconfig: set umask to 022. (Closes: #367145) + * debian/main/control.in: make locales Replaces: lliurex-belocs-locales-data. + (Closes: #365651) + * Move the NJOBS part to debian/sysdeps/(system) to debian/rules. + * debian/debhelper.in/libc-otherbuild.postinst: fixed parsing of + /etc/ld.so.hwcappkgs. (Closes: #364666) + + [ Denis Barbier ] + * Fix location of locales/NEWS.Debian. Thanks Matthijs Mohlmann. + (Closes: #362763) + * locales.postinst: Do not abort if the current locale is not generated. + * locales.config: Fix shell scripting when "All locales" is selected along + with other choices, Thanks Olivier Trichet. (Closes: #364251) + * update-locale: When checking for invalid locale settings, do not mess up + with current environment settings. + * Remove sem_*.3 manual pages from glibc-doc, these manual pages are updated + and maintained in the manpages-dev package. (Closes: #365547) + + [ Michael Banck ] + * Add hurd-i386/cvs-posix-opts.diff (Define many missing options, most + notably _POSIX_THREAD_SAFE_FUNCTIONS) by Roland McGrath (patch from + HEAD). + + -- Aurelien Jarno Thu, 18 May 2006 15:34:08 +0000 + +glibc (2.3.6-7) unstable; urgency=medium + + [ Aurelien Jarno ] + * Urgency set to medium because this version fixes and RC bug in testing. + * Optimized libraries should actually be cross-compiled as we don't know the + CPU that will be used. + * Allow the glibc to be cross-compiled for Linux and kFreeBSD. (Closes: + #358771) + * Bumped the minimum kernel to 2.4.1 instead of 2.4.0 as there are some + important new features in this version. Thanks to Petr Salinger for + noticing me. + * Add m68k/local-mathinline_h.diff (fix bits/mathinline.h), by Roger Leigh. + (Closes: #340871) + * Add beginning and end timestamps to both the build logs and the + testsuite logs. (Closes: #155690) + * debian/sysdeps/sparc.mk: build sparcv9b optimized libraries with + -mtune=ultrasparc3. + * debian/sysdeps/kfreebsd/local-sysdeps.diff: update from the latest SVN. + * debian/patches/series: Fix the patchlevel for local-i486_ldt_support.diff + (Closes: #226716) + * Fix a typo in the previous changelog entry (s/not/now/). (Closes: #362460) + + [ Denis Barbier ] + * Remove ldd calls from libc.preinst. + * Do no more transfer variables from /etc/environment to /etc/default/locale + in locales.postinst, but instead add /usr/share/doc/locales/NEWS.Debian + to explain that /etc/environment needs to be cleaned up. + (Closes: #361048) + * Create a new locales-all package with all supported locales precompiled, + but keep it disabled for now. + Both locales and locales-all packages provide a virtual generated-locales + package. Packages which currently depends on locales should instead + depend on 'locales | generated-locales'. + * Add a new ca_ES@valencia locale, requested by Robert Millan (Closes: #361972) + + -- Aurelien Jarno Fri, 14 Apr 2006 13:48:30 +0200 + +glibc (2.3.6-6) unstable; urgency=low + + [ Aurelien Jarno ] + * Remove the timezone database from the libc6 package. It is now provided + by a separate package called tzdata. + * Put each test log file in the corresponding package instead of putting all + of them in libc6. + * Remove sparc/local-sparc64-fixups.diff as /lib64 and /usr/lib64 are now a + default search path on 32/64-bit architectures. + * Switch minimum kernel to at least 2.4.0 on all arches but m68k, and change + kernelcheck.sh accordingly. Affected architectures: + - alpha: from 2.2.0 to 2.4.0 + - arm: from 2.2.0 to 2.4.0 (but 2.4.0 was checked at installed time) + - i386: from 2.2.0 to 2.4.0 + - powerpc: from 2.2.0 to 2.4.0 + - s390: from 2.2.10 to 2.4.0 + - sparc: from 2.2.0 to 2.4.0 + (Closes: #174270, #220992) + * Add i386/local-i486_ldt_support.diff (add ldt support and thus TLS support + on i486 machines). Thanks to Petr Salinger for the hint. (Closes: #226716) + * Bump shlib to (>= 2.3.6-6) on i386. + * debian/debhelper.in/libc-alt.install: Add gconv-modules to the bi-arch + packages. (Closes: #361642) + * /etc/ld.so.nohwcap is now supported on non-Linux architectures. Drop the + "Linux" check from libc-otherbuild.preinst. + * Build a libc6-xen flavour on i386. + * Fix a typo in the description of the libc6-sparcv9 and libc6-sparcv9b + packages. + * local/usr_sbin/tzconfig: + - Put a copy of the current timezone into /etc/localtime instead of a + symlink. (Closes: #346342) + - Handle the case where /etc/localtime does not exists. (Closes: + #360383). + * local/manpages/tzconfig.8: Update the manpage accordingly. + * script.in/kernelcheck.sh: Also take in account 64-bit mips(el) kernels. + * Add GNU/kFreeBSD patches, using conditional patching until they get + accepted upstream. + * Correctly replace DEB_HOST_ARCH by its value in libc6.preinst. Thanks to + Denis for noticing me. + + [ Denis Barbier ] + * debian/debhelper.in/locales.config: /etc/locale.gen was not generated at + initial installation. (Closes: #357523) + * update-locale: Fix buggy sanity check between LANGUAGE and LANG. + (Closes: #361091) + * update-locale: Drop the --remove flag, it is useless. + * update-locale: Fix the --locale-file flag. + * Add new Galician debconf translation, by Jacobo Tarrio. (Closes: #361101) + * Use new features of po-debconf 1.0 to remove unneeded strings from PO + files. + * Fix day, abmon and mon fields for wo_SN locale. (Closes: #361338) + + [ Michael Banck ] + * Add hurd-machrules-make.diff (fixes build problems with make-3.81 for + Mach interface generation rules) by Roland McGrath (patch from HEAD). + * Add hurd-sysvshm.diff (implements SysV shared memory for GNU/Hurd) + by Marcus Brinkmann. + + -- Aurelien Jarno Mon, 10 Apr 2006 20:19:55 +0200 + +glibc (2.3.6-5) unstable; urgency=low + + [ Denis Barbier ] + * Add am_pm formatting information to en_NZ. (Closes: #356328) + * Add interlingua locale. (Closes: #224756) + * Move locale variables from /etc/environment into a dedicated + /etc/default/locale file. (Closes: #214898, #349503) + * Add a new /usr/sbin/update-locale program to handle this new file. + + [ Aurelien Jarno ] + * Fix ldconfig multiarch patch for reiserfs filesystems. + * Make ldconfig look into /lib32 and /usr/lib32 on amd64. Add /lib32 -> + /emul/ia32-linux/lib and /usr/lib32 -> /emul/ia32-linux/usr/lib links. + * Remove glibc235-gcc4-ppc-procfs.diff from debian/patches/series. + (Closes: #360126) + * Add siginfo_h.diff (fixes a typo in ILL_ILLOPN definition), backported + from upstream. (Closes: #358041) + * Replace getcwd_ia64.diff by getcwd_c.diff (fix getcwd on platforms where + PAGE_SIZE >> PATH_MAX), backported from upstream. (Closes: #355109) + * debian/control: drop alternative build-depends on ia32-libs-dev as this + package does not exist anymore. + + -- Denis Barbier Tue, 4 Apr 2006 18:07:21 +0200 + +glibc (2.3.6-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Set configure_build to the same value as configure_host for sparc + optimized libraries (as on i386). This way they will be tested. + * If the CPU has biarch support, run tests for cross-compiled libraries. + * Remove ld.so from optimized libraries as it is not used. + * Add regcomp_c.diff (Call __libc_lock_init after init_dfa) from upstream + (Ulrich Drepper). This make possible to run the testsuite again on hppa. + * Enable the testsuite on hppa. + * Add tst-setcontext_c.diff (fix the arguments passed to setcontext during + test) from upstream. + * Create a link /usr/lib32 -> /emul/ia32-linux/usr/lib on amd64. + * Add argp_h.diff fixes (Remove __NTH for __argp_usage inline function) + by Ulrich Drepper (patch from HEAD). (Closes: #355264) + * Add getcwd_ia64.diff (Remove the assertion so that the behaviour is the + same on all platforms, including ia64). This is a temporary fix to bug + #355109, until the upstream takes a decision. + * debian/sysdeps/kfreebsd-amd64.mk: + - s/libc6/libc0.1/g + - Change rtlddir from /lib64 to /lib + + [ Denis Barbier ] + * locales.config: If $DEBCONF_IS_A_REGISTRY is set to a non-empty value, + the content of /etc/locale.gen does not override debconf values. + * Add strfmon.diff: the negative sign is not printed by strfmon when + current locale defines sign_posn == 4 (as in de_CH) and format + argument contains the ! modifier. + * Fix forward-backward-collation.diff: the change in strcoll_l.c has to + be applied at several places. (Closes: #357390) + * Update timezone data files to tzdata2006b (no data change, only comments). + * Fix resource_h.diff: there was a typo for mips: + s/_RLIMIT_RTPRIO/__RLIMIT_RTPRIO/ (Closes: #357419) + + -- Denis Barbier Sat, 18 Mar 2006 10:26:45 +0100 + +glibc (2.3.6-3) unstable; urgency=low + + [ Aurelien Jarno] + * Use a shell function instead of ifneq when testing a variable depending on + $(curpass), otherwise it is only evaluated at the first pass. + * Add support for the ppc64 architecture. (Closes: #301438). + * Use the new slibdir, libdir, rtlddir variables to build the various + flavours of the libc. Put them directly in the final directory, and + remove the corresponding tweaks done after the make install phase. + * Install the 32-bit libraries in /emul/ia32-linux(/usr)/lib on amd64. + * Only create the multiarch directories and the symlinks in /lib/ldconfig + for the main pass. Otherwise alternate libraries would conflict with the + main one when using multiarch. + * Fix the build-dependencies for kfreebsd-amd64. + * Add sysdeps/kfreebsd-amd64.mk and add kfreebsd-amd64 to + rules.d/control.mk. + * Make libc6-i386-dev conflicts with all versions of ia32-libs-dev. As it + won't be built anymore on amd64, this will automatically remove it during + the upgrade. + + [ Clint Adams ] + * Get rid of -o as a binary operator to [ in tzconfig and postinst. + + [ Denis Barbier ] + * Update localedata/locales/ro_RO. Thanks Eddy PetriÅŸor. (Closes: #347173) + * Bump LOCALES_DEP_VER to 2.3.6-2. All locales can be compiled with + localedef from 2.3.6-2 and 2.3.6-3. (Closes: #352620) + * Updated Italian debconf translation, by Luca Monducci. + + -- Aurelien Jarno Wed, 1 Mar 2006 17:11:36 +0100 + +glibc (2.3.6-2) unstable; urgency=low + + [ Denis Barbier ] + * Modify debver2localesdep.pl, locales-depver and control files to provide + a smooth upgrade in unstable when locales require changes in localedef. + This is the first part for solving #352620, the proper dependency for + locales will be set by the next upload. + * debian/control: Clean up. Remove versioned dependencies on gettext, + debianutils, tar, texinfo; these versions were already in oldstable. + Drop references to localebin, wg15-locale, i18ndata, locale-ja, locale-ko, + locale-vi, locale-zh, libc6-doc, glibcdoc and libc6 (<< 2.1-4). + * debian/control: Split Build-Depends on several lines for readability + purpose. + * Add RON to locale/iso-4217.def and bump LOCALES_COMPAT_VER to 2.3.6-2. + * Fix thousand separator for de_CH, and let other Swiss locales copy + de_CH for LC_NUMERIC and LC_MONETARY sections. (Closes: #345481) + * Apply a patch from Fedora to define AM/PM strings in cy_GB and en_GB + locales. (Closes: #240901) + * Fix the week definition for the C locale. + * Check first_weekday fields against current CLDR snapshot. Modified + locales are *_GB (=2), ar_SY (=5), ms_MY (=2), id_ID (=2). Add + this field to more locales. + * locale-gen: Replace 'test ... -a ...' by two tests. + * Add an "All locales" option to the locales/locales_to_be_generated + template. When it is selected, /etc/locale.gen is a symlink to + /usr/share/i18n/SUPPORTED. (Closes: #321580, #323013) + * Updated debconf translations: (Closes: #353611) + - Brazilian Portuguese, by André Luís Lopes (Closes: #352416) + - Czech, by Miroslav Kure + - Danish, by Morten Brix Pedersen + - Dutch, by Bart Cornelis + - French, by Denis Barbier + - German, by Helge Kreutzmann + - Polish, by Emilian Nowak + - Portuguese, by Simão Pedro Cardoso + - Spanish, by Carlos Valdivia Yagüe + - Swedish, by Daniel Nylander + - Ukrainian, by Eugeniy Meshcheryakov + + [ Clint Adams ] + * Add hurd-getresuid-dyslexia.diff (fixes incorrect ordering of + arguments) with patch from Samuel Thibault. (Closes: #352500) + * Add hppa-no-ldbl-128.diff (stops implying that PA needs + 128-bit long double support in glibc) from Aurelien Jarno. + (Closes: #344836). + * debian/local/manpages/locale.1: remove double quotes from + synopsis. (Closes: #352597) + + [ Aurelien Jarno ] + * Move dependency on lib64gcc1 from libc6-amd64 to libc6-dev-amd64 to + avoid a dependency loop. (Closes: #352263) + * Use sed and test in /etc/init.d/glibc.sh to compare kernel versions. + Put the Debian architecture name in the script at build time instead + of using 'dpkg --print-architecture'. Thanks to Florent Bayle for + the idea. (Closes: #325802, #328088, #339482) + * Fix example code showing how to use hooks for malloc. (Closes: + bug#333565). + * Add hurd-ioctl-decode-argument.diff (fixes decoding of ioctl + arguments) from Samuel Thibault. (Closes: #320273) + * Fix the prototype of sbrk() in the manual. (Closes: #281863) + * Fix the strcasestr() examples in the manual. (Closes: #289853) + * Install libc_nonshared.a in /usr/lib/nptl, and fix the location + of the static libraries of the NPTL ld scripts. (Closes: #347762) + * Update debian/ files for GNU/kFreeBSD. (Closes: #351638) + * Regenerate debian/control, generate debian/control.in/libc0.1. + * Lintian cleans: + - Remove build-dependencies on tar and debianutils, they are + build-essential packages + - Fix FSF postal address + - Use policy compliant links in libc6-dev-amd64 + - Use an absolute symlink for /lib64 on amd64 + * Add myself to Uploaders. + * Switch to gcc-4.0 on powerpc. + * Remove old hack for gcc-3.4 on amd64. + * Build with the compiler defined as default for glibc (ie currently + gcc-4.0) instead of gcc on amd64. + * Decrease priorities of 64-bit main and -dev packages to standard + and optional for all architectures. It better matches override, + though it will still have to be changed. + * Fix glibc235-hppa-lt.diff (restore ret0 across calls to CDISABLE) + from Randolph Chung. (Closes: #326581) + * Switch to gcc-4.0 on hppa. + * Add support for extra_pkg_install hooks for udeb packages. + * Build back with -g1 on amd64, it was removed to permit the build with + gcc-3.4. + * Remove --with-tls and --with-__thread in sysdeps/* as they are the + default option since version 2.3.5. + * Multiarch support: + - Add ld-multiarch.diff (add (/usr)/lib/$(config-machine)-$(config-os)) + to the search path of the dynamic linker) from Tollef Fog Heen. + (Closes: #295855) + - Add ldconfig-multiarch.diff (add directories pointed from /lib/ldconfig + to the search path). + - Create (/usr)/lib/$(config-machine)-$(config-os) and add symlinks to + these directories in /lib/ldconfig/ + - Add rtld.diff (add a new configuration variable rtlddir to change the + dynamic linker in the ELF binaries) partly from Andreas Jochen. This is + necessary to be able to install a glibc in the multiarch dir while still + conforming to the various ABIs which specify a linker in /lib or /lib64. + * Remove the patch to install the libc into /lib instead of /lib64 on + amd64. Use the new libdir, slibdir and rtlddir options in configparm to + install the glibc in (/usr)/lib, and to use the dynamic linker path + specified by the ABI for path for libc objects. (Closes: #325226) + * Add -u option to the ldd manpage. (Closes: #354074) + * Merged a patch from Michael Banck to use gcc-4.0 on Hurd. + * Add resource_h.diff (RLIMIT_NICE and RLIMIT_RTPRIO support) from MAIN. + (Closes: #352636) + * Add hppa-inlining.diff (Increase the maximal overall growth of the + compilation unit caused by inlining for dl-reloc.c on hppa). + * Build a 32-bit libc on amd64, using the new multiarch directories. + (Closes: #274367) + + -- Aurelien Jarno Thu, 23 Feb 2006 17:47:58 +0100 + +glibc (2.3.6-1) unstable; urgency=low + + [ Denis Barbier ] + * debian/debhelper.in/libc.postinst: Restart webmin on upgrade. + (Closes: #345641) + * debian/debhelper.in/libc.postinst: Restart dropbear on upgrade. + (Closes: #351036) + * Fix yesexpr/noexpr in tl_PH locale. Reported by eric pareja. + (Closes: #295810) + * Fix langinfo(_NL_TIME_FIRST_WEEKDAY) for C locale. Reported by + Graham Wilson (Closes: #327025) + * Add first_weekday fields to most locales. + (Closes: #343885, #347323, #347686, #348518, #351375) + * Apply various fixes to French locales. (Closes: #248377) + * Fix d_t_fmt and date_fmt in fo_FO. Reported by Jacob Sparre Andersen. + * New sa_IN locale file, provided by Vidya Ayer and Christian Perrier. + (Closes: #331377) + * Add several locales to SUPPORTED: + - ru_RU.CP1251, requested by Michael Bravo. (Closes: #225516) + - uz_UZ.UTF-8 (its ISO-8859-1 counterpart had no UTF-8 variant) + - da_DK.ISO-8859-15, en_GB.ISO-8859-15, en_US.ISO-8859-15, no_NO.UTF-8, + no_NO and sv_SE.ISO-8859-15 are found in fedora-branch CVS branch. + * Apply several improvements to hy_AM found in upstream Bugzilla. + * Fix LC_MONETARY section of en_DK and provide en_DK.ISO-8859-15. + (Closes: #323159) + * Improve localedef(1) manual page, by Lars Wirzenius (Closes: #309846) + * Fix LC_MONETARY section of pl_PL. Reported by MichaÅ‚ Politowski. + (Closes: #227214) + * New wo_SN locale file, provided by Samba Ndao Diop and Christian + Perrier. (Closes: #279697) + * Add new ca_AD, ca_FR and ca_IT locale files, sent upstream by Robert + Millan. + * New csb_PL locale file, sent upstream by Andrzej Krzysztofowicz. + * Rewrite collation rules of several locales to include iso14651_t1. + This eases maintenance and saves about 1MB for installed size. + * Sort SUPPORTED to list UTF-8 locales first. This change partly + solves #312927. + * Modify localedata/locales/no_NO to copy definitions from nb_NO. + * Fix lang_* fields in gez_ER, gez_ET, tr_TR and wal_ET. + * Fix unknown symbols in collation rules of several locales: da_DK, + fa_IR, is_IS, lo_LA, lv_LV, nb_NO and sr_CS. + * Apply updates for st_ZA, xh_ZA and zu_ZA sent upstream by Dwayne Bailey. + * Add new nr_ZA locale, sent upstream by Dwayne Bailey. + * Rewrite collation rules for dz_BT, in collaboration with Pema Geyleg. + * Revert upstream change of postal_fmt in te_IN because localedef + complains. (Closes: #348804) + * New debconf translations: + - Italian, by Luca Monducci (Closes: #329428) + - Swedish, by Daniel Nylander (Closes: #334864) + * Slightly reword locales.templates to be DTSG-compliant, thanks Thomas + Huriaux. + * Updated debconf translations: (Closes: #350103) + - Brazilian Portuguese, by André Luís Lopes (Closes: #352416) + - Czech, by Miroslav Kure + - Danish, by Morten Brix Pedersen + - Dutch, by Bart Cornelis + - French, by Denis Barbier + - German, by Helge Kreutzmann + - Polish, by Emilian Nowak + - Turkish, by Erçin EKER + - Ukrainian, by Eugeniy Meshcheryakov + - Vietnamese, by Clytie Siddall + * Update timezone data files to tzdata2006a. (Closes: #345479, #347315, #351049) + * Drop Build-Depends-Indep: po4a from control file, translated manual pages + are currently not built. + + [ Clint Adams ] + * Move to upstream version 2.3.6. + - Redo debian/patches/localedata/cvs-localedata.diff + - Remove glibc235-gcc4-cvs.diff + - Remove glibc235-gcc4-jis0208.diff + - Remove glibc235-binutils216-ia64.diff + - Remove glibc235-gcc4-ia64-profile.diff + - Remove glibc235-gcc4-ppc-procfs.diff + - Remove glibc235-execvp-fix.diff + - Delete CSD (Serbian Dinar) hunk from locale-iso4217.diff + - Redo glibc235-dl-execstack.diff + - Remove glibc235-alpha-divqu.diff + - Remove amd64-semtrywait-weakalias.diff + - Remove strfry-segv.diff + - Remove ia64-binutils-libm.diff + - Remove glibc235-leapsecond.diff + - Delete several hunks from glibc235-gcc4-sparc-inline.diff + - Remove hurd-libpthread-indirect-loading.diff + - Remove glibc235-gcc4-hurd.diff + - Delete several hunks from glibc235-gcc4-arm-inline.diff + - Remove glibc235-gcc4-s390-inline.diff + * Add hppa-pie-relocs.diff, thanks to Aurelien Jarno. This + fixes nscd on hppa. (Closes: #350501) + + [ Daniel Jacobowitz ] + * Remove mips-bits-syscall.diff, merged. + + [ GOTO Masanori ] + * Update po/ja.po. + + -- Clint Adams Thu, 9 Feb 2006 21:45:45 -0500 + +glibc (2.3.5-13) unstable; urgency=low + + [ Clint Adams ] + * Acknowledge NMU. (Closes: #342545) + + [ Denis Barbier ] + * debian/rules.d/control.mk: Make sure that debian/control is regenerated. + (Closes: #351704) + + -- Denis Barbier Mon, 6 Feb 2006 22:22:23 +0100 + +glibc (2.3.5-12.1) unstable; urgency=low + + * NMU + * glibc235-hppa-fpu.diff: New, fixes hppa FPU issues. Closes: #342545 + + -- LaMont Jones Wed, 1 Feb 2006 09:47:57 -0700 + +glibc (2.3.5-12) unstable; urgency=low + + * debian/patches/glibc235-nis-netgrp.diff: New file to fix assertion + failures with NIS. (Closes: #322011) + * Switch to quilt to handle Debian patches. + - debian/control.in/main: add Build-Depends: quilt. + - Replace debian/rules.d/dpatch.mk by debian/rules.d/quilt.mk. + - Rename debian/patches/*.dpatch into debian/patches/*.diff. + - Move localedata patches into debian/patches/localedata/ + * debian/patches/localedata/cvs-localedata.diff: Update to latest CVS. + Among other changes: + - locales/mn_MN: Fix date_fmt. (Closes: #328831) + - locales/de_DE: Add transliterations for quoting characters. + (Closes: #235759) + - locales/ss_ZA locales/tn_ZA locales/ve_ZA locales/nso_ZA + locales/ts_ZA: New files. (Closes: #254417) + - locales/km_KH: New file. (Closes: #334762) + - locales/mg_MG: New file. (Closes: #271549) + - locales/sr_CS: New file. (Closes: #254993) + * debian/patches/locale-iso4217.diff: Update to latest CVS. + This includes changes from glibc235-localedata-sr_CS.diff, which + is no more needed. + * debian/patches/locale-iso639.diff: New file. + * debian/patches/locale-ku_TR.diff: New file, to provide a Kurdish + locale needed by d-i. This locale comes from upstream CVS, and has + been updated to the latest patch sent to BZ870. + * debian/patches/localedata/locale-eo_EO.diff: Apply minor updates to + this locale file. Add eo and eo.UTF-8 to SUPPORTED. (Closes: #233308) + * Import collation fixes and enhancements for localedef from + belocs-locales-bin. + * debian/patches/forward-backward-collation.diff: New file. Due to the + fixes in localedef, some bugs in code which was previously never run + did show up. (Closes: #310635) + * debian/patches/locale/locale-print-LANGUAGE.diff: New file, so that + locale displays the LANGUAGE environment variable when called without + argument. + * Add myself to Uploaders. + + -- Denis Barbier Sun, 15 Jan 2006 00:54:16 +0100 + +glibc (2.3.5-11) unstable; urgency=low + + [ Phil Blundell ] + * Apply patch from Colin Watson to add "--keep-existing" option to + locale-gen. (Closes: #298913) + * Also restart exim4 on upgrade. (Closes: #326554) + * debian/debhelper.in/libc.preinst: Clarify wording of message about + detection of services needing to be stopped before upgrade. + + [ GOTO Masanori ] + * debian/po/pt.po: New file, add Portuguese translation. + Patched by Rui Branco . (Closes: #339110) + + [ Clint Adams ] + * Patch from Lars Wirzenius to not rely on bash-like echo + behavior. (Closes: #207391). + * Add allowance for the 2005 leap second. (Closes: #345310) + + -- Clint Adams Sun, 1 Jan 2006 11:29:08 -0500 + +glibc (2.3.5-10) unstable; urgency=low + + [ GOTO Masanori ] + * debian/local/etc_init.d/glibc.sh: Change the last 'exit 0' to + ': exit 0' to not block sourcing. (Closes: #340147) + + [ Phil Blundell ] + * Merge patch from upstream CVS (courtesy Daniel Jacobowitz) to + fix weak alias related build problem on ARM. + * Merge patch from upstream CVS (courtesy Ulrich Drepper) to fix + strfry() crash. (Closes: #343365) + * Merge patch from upstream CVS (courtesy Roland McGrath and Anton + Blanchard) to fix problem with execute permissions on GOT when using + 64kB pages on PowerPC. (Closes: #344105) + * Require binutils 2.16.1cvs20051109-1 to ensure that i386 biarch + linking works properly. + * debian/script.in/kernelcheck.sh: Require kernel >= 2.4.0 on arm to + avoid llseek problem. (Closes: #324795) + * Also restart atd on upgrade. (Closes: #331293) + * Merge patch from upstream CVS (courtesy Ulrich Drepper) to fix + problems with accuracy of tanh and related functions, per request of + Rafael Laboissiere. (Closes: #328504) + * Add "validlocale" program (ex base-config) to locales package, per + request of Joey Hess. (Closes: #344954) + * sysdeps/hppa.mk: Add new /usr/hppa64-linux-gnu/include symlink, per + request of Matthias Klose. (Closes: #326583) + + [ Clint Adams ] + * Steal glibc-235-sparc-datastart.dpatch from Ubuntu. + * Steal ia64 libm symbol patch from Ubuntu. + * Compile with -g2 instead of -g1 on sparc. + + -- Clint Adams Wed, 28 Dec 2005 13:18:56 -0500 + +glibc (2.3.5-9) unstable; urgency=low + + [ Daniel Jacobowitz ] + * Downgrade priority of amd64 libraries on i386. + * Move packages from base to libs. + + [ Clint Adams ] + * Remove sparc64 TLS patch, and disable TLS for sparc64 build + (Closes: #340835, #341514). + * Add patch to fix build failure with __bind and other + socket-related symbols being already defined on + sparc (Closes: #342755). + * Add patch from Anton Blanchard to fix build failure with + __bind and other socket-related symbols being already + defined on powerpc (Closes: #343571). + * Replace amd64 sem_trywait patch from Kurt Roeckx's NMU with + fix from upstream glibc CVS (Closes: #339389). + * Add patch from Anton Blanchard to fix build failures with + "__moddi3" and friends being already defined on i386 + and powerpc (Closes: #339415). + * Bump Standards-Version to 3.6.2 and add myself to Uploaders. + + -- Clint Adams Sat, 17 Dec 2005 10:33:38 -0500 + +glibc (2.3.5-8.1) unstable; urgency=low + + * Non-maintainer upload. + * Rename sem_trywait to __new_sem_trywait in amd64 nptl code + so the alias works properly, and it can be build. + (Closes: #339389) + + -- Kurt Roeckx Sun, 27 Nov 2005 11:22:03 +0100 + +glibc (2.3.5-8) unstable; urgency=low + + * Add missing build dependency on libc6-dev-ppc64 on powerpc. + * Add patch to fix sparc64 TLS build failure, from Aurelien Jarno + (Closes: #335821). + * Also restart saslauthd at upgrades, from Philipp Hug (Closes: #334101). + * Merge .eh_frame terminator fix, by Richard Sandiford (Closes: #334112). + * Merge armeb support, from Lennert Buytenhek (Closes: #335116). + * Add LSB headers to glibc.sh and nscd init scripts, from Petter + Reinholdtsen (Closes: #335308, #335343). + * Remove obsolete mountkernfs, tmpfs, and devpts.sh files from debian/. + * Temporarily set hppa back to gcc 3.4, from Steve Langasek + (Closes: #326581). + * Re-enable libidn (Closes: #181025). + + -- Daniel Jacobowitz Sat, 12 Nov 2005 19:15:29 -0500 + +glibc (2.3.5-7) unstable; urgency=low + + [ GOTO Masanori ] + * debian/script.in/kernelcheck.sh: Drop real-i386 kernel support. + + [ Daniel Jacobowitz ] + * Build 64-bit packages on i386 - based on patches from both Ubuntu + and Andreas Jochens . + - Build depend on a biarch linux-kernel-headers package. + - Build depend on new libc6-dev-amd64 package. + - Conflict with amd64-libs to avoid stale libraries. + - Replace files from amd64-libs-dev. + - Use lib64 for 64-bit libraries on i386. + - Search lib64 for ldconfig. + - Install 64-bit headers in /usr/include/x86_64-linux-gnu. + * Remove obsolete references to NPTL as an add-on. + * Conflict with broken versions of libterm-readline-gnu-perl + (Closes: #326856, #326492). + * Merge makefile patch from Goswin Brederlow + to fail earlier if builds fail + (but omit the bit for make -k check) (Closes: #325460). + * Update debconf dependency to work with cdebconf (Closes: #331838). + * Merge MIPS fix from CVS (Closes: #329043). + * Do not complain about incompatible libraries in /etc/ld.so.conf + (Closes: #310047). + * Update hppa assembly for current CVS binutils. + * Use 8-byte-aligned buffers for doubleword FPU transfers on HPPA + (Closes: #333766). + + -- Daniel Jacobowitz Fri, 14 Oct 2005 14:18:22 -0400 + +glibc (2.3.5-6) unstable; urgency=low + + * GOTO Masanori + + * debian/script.in/kernelcheck.sh: Use sed instead of bash extension. + (Closes: #325373, #325471, #325504, #325511) + + -- GOTO Masanori Mon, 29 Aug 2005 12:40:32 +0900 + +glibc (2.3.5-5) unstable; urgency=low + + * GOTO Masanori + + * debian/debhelper.in/debhelper.mk: Don't expand debug-packages with + DEB_INDEP_REGULAR_PACKAGES. It causes binary-indep is unexpectedly + included. (Closes: #233390, #233391, #233392) + + * Add the correct new line. (Closes: #324450) + - debian/control.in/sparc64: Likewise. + - debian/control: Update. + + * Support Hurd again. (Closes: #324165) + - debian/sysdeps/gnu.mk: Rename to... + - debian/sysdeps/hurd.mk: ... this. + + * debian/local/usr_sbin/locale-gen: Don't break locale-gen when locale-def + warns errors. + + * debian/patches/glibc235-localedata-sr_CS.dpatch: New file, to fix + sr_CS localedef breakage. (Closes: #321580, #322655) + * debian/patches/glibc235-localedata-locales.dpatch: New file, to fix + mn_MN and sid_ET localedef breakage. (Closes: #321634) + + * debian/sysdeps/powerpc.mk: Enable PowerPC NPTL. + (Closes: #246689, #307984) + + * debian/README: Add the description about dropping __ctype_* symbol support + of static linked application/libraries in etch. (Closes: #324526) + + * debian/sysdeps/linux.mk: Check SETNJOBS environment variable to specify + the number of parallel make by users. + + * debian/sysdeps/depflags.pl: Add Conflicts: e2fsprogs (<< 1.35-7) + because new ldd cannot work with old e2fsprogs. (Closes: #324550) + + * debian/patches/glibc235-alpha-divqu.dpatch: New file, to fix alpha + divqu/remqu that does not return the correct result when their dividend + and divisor are the same and 63bit is 1. (Closes: #324455) + + * Hurd requires gcc-3.3 to compile instead of gcc-4.0. Requested by + Michael Banck . + - debian/sysdeps/hurd.mk: Change CC/BUILD_CC to gcc-3.3. + - debian/control.in/main: Build-Depends falls back to gcc-3.3. + - debian/control: Update. + + * Introduce bootstrap kernel version check script. + - debian/debhelper.in/libc.preinst: Move detection script to... + - debian/script.in/kernelcheck.sh: ...this, new file. + - debian/local/etc_init.d/glibc.sh: New file, it includes kernelcheck.sh. + - debian/debhelper.in/libc.postinst: Invoke /etc/init.d/glibc.sh as S01. + - debian/rules.d/debhelper.mk: Add replacing KERNEL_VERSION_CHECK and + EXIT_CHECK for libc.preinst and glibc.sh. + - debian/debhelper.in/libc.dirs: Create etc/init.d. + + * Don't use absolute path name. + - debian/debhelper.in/libc.dirs: Suppress the first slash. + - debian/debhelper.in/libc-pic.dirs: Likewise. + - debian/debhelper.in/nscd.dirs: Likewise. + - debian/debhelper.in/locales.dirs: Likewise. + + * Michael Banck : + - debian/patches/glibc235-gcc4-hurd.dpatch: New file, to build glibc + on Hurd with gcc-4.0. (Closes: #324549) + + -- GOTO Masanori Sun, 21 Aug 2005 12:33:42 +0900 + +glibc (2.3.5-4) unstable; urgency=low + + * The "hppa is important to someone, really - LaMont" release. + + * GOTO Masanori + + * d-i wants to remove libnss-files-udeb and libnss-dns-udeb dependency + from libc-udeb. Suggested by Joey Hess . + (Closes: #322506) + - debian/control.in/libc: Remove libnss-files-udeb libnss-dns-udeb + dependency. + - debian/control: Update. + + * Build-Depends fixes: + - debian/control.in/main: Change gcc-* dependency from | to ,. + Suggested by Andreas Jochens . + - debian/control.in/main: Add gcc-4.0 (>= 4.0.1-5) [hppa], because prior + versions cannot generate sane glibc binaries. + - debian/control: Update. + + * Enable libnss upgrade guard again. + (Closes: #321561, #321712, #321796, #322768, #323560) + - debian/debhelper.in/libc.preinst: Change guard to 2.3.5-1. + - debian/debhelper.in/libc.postinst: Likewise. + - debian/debhelper.in/libc.postinst: Fix to invoke NSS check again. + + * debian/debhelper.in/nscd.dirs: Add /var/db/nscd. + (Closes: #323352, #323487) + + * debian/debhelper.in/locales.prerm: Add purge to remove locale-archive. + (Closes: #321719) + + * debian/patches/00list: Drop glibc234-hppa-remove-mallocdef.dpatch. + It causes unconditional locking problem, because it was already replaced + by Carlos' new patches. Reported by LaMont Jones . + + * Add Depends: lib64gcc1 and provide lib64c-dev for 64bit -dev packages. + Suggested by Matthias Klose . (Closes: #323552) + - debian/control.in/sparc64: Likewise. + - debian/control.in/ppc64: Likewise. + - debian/control.in/s390x: Likewise. + - debian/control: Update. + + * debian/patches/glibc235-dl-execstack.dpatch: New file, to fix execstack + failed to check on kernel <= 2.4.18. (Closes: #321717, #321718, #323409) + + * Roland Stigge : + - debian/debhelper.in/glibc-doc.install: Install HTML documents + correctly. (Closes: #321740) + + -- GOTO Masanori Sat, 6 Aug 2005 06:52:42 +0900 + +glibc (2.3.5-3) unstable; urgency=low + + * The "Keep Debconf5 speed" and the "Welcome back the recent glibc to + unstable" release. + * Glibc bumps up from 2.3.2.ds1 to 2.3.5 on etch. + + * GOTO Masanori + + * Localedata update: + - debian/patches/cvs-localedata.dpatch: New file, to update localedata + to the latest cvs. Reported by Safir Secerovic , + Reviewed by Denis Barbier . (Closes: #312902) + - debian/patches/locale-iso4217.dpatch: New file, to fix localedef + breakage for tr_TR.ISO-8859-9. (Closes: #314855) + + * To make glibc-2.3.5 buidable with gcc-4.0: + - debian/patches/00list: Drop glibc234-hppa-full-nptl-2004-12-20.dpatch + line replaced by the new patches: glibc235-hppa-sysdeps.dpatch and + glibc235-hppa-lt.dpatch. It'll be removed when hppa unstable works + nicely. + - debian/patches/glibc235-gcc4-sparc-inline.dpatch: Update the patch + to compile sparc64. + - debian/patches/glibc235-gcc4-s390-inline.dpatch: New file, fix s390 + compilation breakage by changing static inline to auto inline for + dl-machine.h. + - debian/patches/glibc235-gcc4-alpha-profile.dpatch: New file, fix + alpha compilation breakage by removing strong_alias. + - debian/patches/glibc235-gcc4-hppa-profile.dpatch: New file, fix hppa + compilation breakage by removing strong_alias. + - debian/sysdeps/alpha.mk: Disabled __thread for static linked + executables. + - debian/control.in/main: Add Build-Depends: gcc-3.4 for powerpc and + m68k. + - debian/control: Regenerated. + + * To make glibc-2.3.5 buildable with gcc-3.4: + - debian/sysdeps/m68k.mk: New file, to use gcc-3.4 as CC and BUILD_CC + due to gcc-4.0 ICE. See #319312. + - debian/patches/glibc235-gcc34-m68k-seccomment.dpatch: New file, fix + m68k binutils comment parse error. + + * Introduce RUN_TESTSUITE for disabling make check, taken from Jeff + Bailey : + - debian/rules: Enable RUN_TESTSUITE in default. + - debian/rules.d/build.mk: Check RUN_TESTSUITE before invoking tests. + - debian/sysdeps/hppa.mk: Disable RUN_TESTSUITE because linuxthreads + cannot work correctly. + - debian/sysdeps/alpha.mk: Likewise. + + * Introduce loose locales version dependency to avoid locales version + mismatch for FTBFS architectures, taken from Jeff Bailey + (Closes: #204696, #308824): + - debian/locales-depver: New file, describes minimum locales dependency + version. It's renamed from locales-shlibver because it's not "shlib". + - debian/rules.d/debhelper.mk: Use LOCALES_DEP_VER to generate locales + dependency. + - debian/rules: Include debian/locales-depver. + + * debian/rules.d/build.mk: Add --without-selinux for nscd. It should be + removed after this version ASAP. + + * debian/sysdeps/depflags.pl: Drop Depends: libdb1-compat because it's + until sarge stuff. Suggested by Colin Watson . + (Closes: #318885) + + * debian/debhelper.in/nscd.dirs: New file, add /var/run/nscd dir to + invoke nscd correctly. (Closes: #314892) + + * debian/local/manpages/locale.gen.5: Fix typo, charsets -> charmaps. + (Closes: #312297, #318982) + + * debian/debhelper.in/libc.preinst: Remove dpkg --assert-support-predepends + check like base-passwrd, suggested by Bastian Blank . + (Closes: #316217) + + * debian/patches/locales-supported.dpatch: Don't apply to drop UTF-8@euro + locales from SUPPORTED. (Closes: #274491) + + * debian/debhelper.in/libc.preinst: Fix typo. (Closes: #306136) + * debian/debhelper.in/libc.postinst: Likewise. + + * Michael Banck : + - debian/patches/hurd-enable-ldconfig.dpatch: New file, to build ldconfig + again on Hurd. (Closes: #309489) + - debian/sysdeps/gnu.mk: Hurd-i386 needs --without-tls option to build. + - debian/patches/hurd-libpthread-indirect-loading.dpatch: New file, to + make libpthread load indirectly on Hurd. (Closes: #312488) + - debian/patches/hurd-ioctl-pfinet.dpatch: New file, to support part of + SIOCGIFHWADDR for pfinet on Hurd. (Closes: #295117) + + * Jeff Bailey : + - debian/patches/glibc235-hppa-sysdeps.dpatch: New file, to build hppa + linuxthreads locking problem and sysdeps correctly again. + - debian/patches/glibc235-hppa-lt.dpatch: New file, likewise. + + * Denis Barbier : + - debian/debhelper.in/locales.config: Use LANG=C for locale-dependent + commands. (Closes: #314717) + - debian/debhelper.in/locales.postinst: Likewise. + - debian/debhelper.in/locales.postinst: Fix repeated locale entry + duplication when at least a locale is defined twice in /etc/locale.gen. + (Closes: #271526) + + * Stephen Gildea : + - debian/debhelper.in/nscd.init: Provides a "status" option, fix the exit + status if the script is given an unsupported option. (Closes: #312404) + + * Serge Belyshev : + - debian/patches/glibc235-execvp-fix.dpatch: Fix execvp segv caused by + invalid free pointer. + + * This version fixes some bugs that are already marked as + fixed-in-experimental and explained the reason in this changelog. + (Closes: #144670, #185991, #258647, #276062, #279423, #280030, #298784) + (Closes: #300806, #300842, #304963, #305400, #305662, #305666, #309618) + (Closes: #311793, #313404, #314084, #315347, #315793) + + * This version fixes some bugs that are already confirmed as fixed + (fixed-in-experimental) in the experimental glibc: + - Can compile rpc/xdr.h with gcc-4.0. (Closes: #315198, #320963) + - Support posix_fadvise64 correctly on 2.4 kernel. + (Closes: #312406, #313219) + - Can static link with the recent toolchain changed with TLS/non-TLS + errno definition on amd64 and ia64. + (Closes: #317674, #317946, #318956, #318963, #319115) + - Fix mktime when setting a timezone value to AC_FUNC_MKTIME. + (Closes: #177940) + - Fix libc6-i686 to reexec init. (Closes: #270745) + + * This version fixes some bugs that are marked as fixed-upstream: + - Fix ucontext.h failure with g++-4.0 on ia64. + (Closes: #318429, #320240) + + - Missing icache flushing on PPC caused sometimes segv, and now cache + management is reworked and fixed. (Closes: #146489) + - Fix alpha atan() that gave wrong results for some operands. + (Closes: #210613) + - Fix PPC rint() that gave wrong result for negative arguments in the + rounding toward -inf and +inf mode. (Closes: #216800) + - Fix that the pmaplist frees the freed memory in xdr_pmaplist. + (Closes: #230219) + - Don't export unneeded symbol _fp_hw on s390. (Closes: #247681) + - Set locale correctly for generated threads in static linked binaries. + (Closes: #260221) + - Make g++ compilation with nptl pthread.h by changing initializers. + (Closes: #276309) + - Fix a race condition with pthread_cond_broadcast. (Closes: #276312) + - Fix re_exec() segv that caused on UTF-8 locales. + (Closes: #175163, #237681, #290551, #299137, #310443) + - Implement getcontext on alpha. (Closes: #293653) + - Fix an incorrect value of ceill and floorl on amd64. (Closes: #302458) + - Fix memory leaks in getaddrinfo/freeaddrinfo. (Closes: #304022) + - Fix mips/mipsel incomplete clobbered registers for syscalls. + (Closes: #304426) + - Support working sched_setaffinity on powerpc. (Closes: #311053) + - Support _SC_HOST_NAME_MAX in sysconf. (Closes: #314350) + - Fix pthread_rwlock_wrlock hangs with NPTL on amd64. (Closes: #314408) + + - Check timezone changes for localtime and friends. (Closes: #48184) + - Fix a race condition of sigaction and signal handler. + (Closes: #136990) + - Fix segmentation fault when invoking nscd -d. + (Closes: #156923, 245208) + - Support POSIX style strerror_r implementation. + (Closes: #159298, #169370, #182542, #202209) + - Enable to use short IPv4 address notation again. (Closes: #192091) + - Fix broken pthread_cleanup_push on Alpha. (Closes: #197988) + - Support POSIX message queues. (Closes: #202197, #280137) + - Don't use ?: in bits/mathinline.h. (Closes: #206015, #304500) + - Update Norwegian translation that fixes confusing text. + (Closes: #207266) + - Enable executable again for libc.so.*. (Closes: #215463, #264948) + - Improve putchar and io performance by changes to pthread locking code. + (Closes: #219205) + - Update sys/vm86.h. (Closes: #219476) + - Fix invalid __libc_dlclose() in nsswitch.c. (Closes: #222130) + - Support backtrace on ia64 and x86_64. (Closes: #235876) + - Fix nl_langinfo(ERA) returns NULL, not "". (Closes: #245836) + - Libintl.h is ready for some g++ compilation option. (Closes: #252753) + - Fix pthread_cond_timedwait and mutex hang with cancellation. + (Closes: #253303) + - Fix too long fraction digits handling in strtold(). (Closes: #260377) + - Fix some regexec() segv in UTF-8 locales. (Closes: #261135) + - Fix pthread_cond_timedwait with a outdated timespec destroys the + pthread_cond_t variable. (Closes: #261237) + - Declare EPOLLONESHOT in sys/epoll.h. (Closes: #261541) + - Fix returning invalid pointer when freeing valloc()-ed memory. + (Closes: #262782) + - Replace gcc-3.4 option for ppc64. (Closes: #263959) + - Fix zdump -v segv on ia64. (Closes: #266438) + - Support pthread_create with attributes. (Closes: #266507) + - Change __vector to __iovec for sys/io.h to prevent conflicts with + altivec. (Closes: #267442) + - Fix atan2 infinit loop on amd64. (Closes: #270823) + - Avoid memory leak for some gconv encoding by calling gconv_end. + (Closes: #274390) + - Fix mplayerplug-in crash closed by mozilla. (Closes: #275240) + - Fix invalid memory access of printf when its specifier combines + parameter number specification and floating point values. + (Closes: #277667, #312036) + - Don't touch unrelated bits in __feclearexcept on i386. + (Closes: #279294) + - Don't invoke unneeded cancellation if PTHREAD_CANCEL_DISABLE is set. + (Closes: #281775) + - Fix a race condition between pthread_create and pthread_exit. + (Closes: #282091, #292154) + - Fix for setfacl to handle many files in ntfw64. (Closes: #288710) + - Support large dev_t. (Closes: #289945, #299139) + - Use the correct ifndef __GNUC_PREREQ. (Closes: #315345) + + - Fix the indended first line of ldd output. (Closes: #209145, #276223) + - Fix misleading error message of ldd when kernel version is old. + (Closes: #224665) + - Fix typo of the language name in te_IN. (Closes: #276527) + - Replace old --help message that indicated glibcbug script. + (Closes: #315448) + + - Support IDN. (Closes: #181025) + - Support O_NOATIME. (Closes: #284131, #297010, #298488) + - The first day of a week in Finnish is Monday. (Closes: #288472) + + -- GOTO Masanori Sun, 17 Jul 2005 17:27:30 +0900 + +glibc (2.3.5-2) experimental; urgency=low + + * Debconf5 release. + + * GOTO Masanori + + * Merge glibc-2.3.4 branch to the main trunk for etch development. + + * These dpatches are removed from debian/patches because the similar + patches are already applied in the latest version: + - debian/patches/rtld-vdso-assertion.dpatch + - debian/patches/glibc232-sigsetjmp.dpatch + - debian/patches/hurd-weak-aliases.dpatch + - debian/patches/sched-update.dpatch + - debian/patches/glibc232-pthread-cancellation.dpatch + - debian/patches/glibc232-clock_settime.dpatch + + * The New dpkg-architecture changes: + - debian/rules: Replace DEB_HOST_BUILD_SYSTEM, use DEB_HOST_ARCH_OS. + Reported by Arthur Marsh . + (Closes: #315347, #315793) + - debian/control.in/main: Bump up Build-Depends: dpkg-dev (>= 1.13.5). + - debian/control: Updated. + - debian/debhelper.in/libc.preinst: Replace "dpkg + --print-installation-architecture", use "dpkg --print-architecture". + - debian/debhlper.in/libc.postrm: Likewise. + - debian/debhlper.in/libc.postinst: Likewise. + - debian/sysdeps/depflags.pl: Change checks from i386 to i486. + It also replaces -linux, use -linux-gnu. + + * Default compiler moves from gcc-3.3 to gcc-4.0: + - debian/rules: Use gcc-4.0 instead of gcc-3.3. (Closes: #315198) + - debian/control.in/main: Define Build-Depends: gcc-4.0. + - debian/control: Updated. + - debian/sysdeps/i386.mk: Replace depreciated "-mcpu", use "-mtune". + + * These dpatches are added to make glibc-2.3.5 buidable with gcc-4.0: + - debian/patches/glibc235-gcc4-cvs.dpatch: Fix some bad defintion of + internal for all architectures. + - debian/patches/glibc235-gcc4-elf.dpatch: Remove elf_machine_rel* + definitions for all architectures. + - debian/patches/glibc235-gcc4-jis0208.dpatch: Fix compilation breakage + for all architectures. + - debian/patches/glibc235-gcc4-wcstol_l.dpatch: Fix wcstol_l.c + compilation breakage for all 64bit architectures. + - debian/patches/glibc235-binutils216-ia64.dpatch: Fix _init/_fini was + not defined within procedure with binutils 2.16 for ia64. + - debian/patches/glibc235-gcc4-ia64-profile.dpatch: Fix compilation + breakage by removing strong_alias for ia64. + - debian/patches/glibc235-gcc4-ppc-procfs.dpatch: Fix ppc32 compilation + breakage by removing __uint128_t use. (Closes: #304963) + - debian/patches/glibc235-gcc4-arm-inline.dpatch: Fix arm compilation + breakage by changing static inline to auto inline for dl-machine.h. + - debian/patches/glibc235-gcc4-sparc-inline.dpatch: Fix sparc compilation + breakage by changing static inline to auto inline for dl-machine.h. + - debian/patches/glibc235-gcc4-sparc-mv8.dpatch: Fix obsolete gcc option + to replace newer standard one. + - debian/patches/glibc235-gcc4-mips-inline.dpatch: Fix mips compilation + breakage by changing static inline to auto inline for dl-machine.h. + - debian/patches/glibc235-gcc4-mips-sysdeps.dpatch: Fix mips compilation + breakage by changing large syscall arguments handling. + + * Move /etc/locale.alias to /usr/share/locale/locale.alias. + Don't install locale.alias.5. (Closes: #144670, #185991, #298784) + - debian/local/usr_sbin/locale-gen: Use /usr/share/locale/locale.alias + instead of /etc/locale.alias. + - debian/local/manpages/locale-gen.8: Delete reference to + locale.alias.5. + - debian/local/manpages/locale.gen.5: Likewise. + - debian/debhelper.in/locales.links: Remove file, don't link to /etc. + - debian/debhelper.in/locales.install: Install locale.alias under + /usr/share/locale, not /etc/. + - debian/debhelper.in/locales.manpages: Don't install locale.alias.5 + + * Add documents: + - debian/debhelper.in/libc.docs: Add CONFORMANCE and NAMESPACE. + + * Fix messages to add a patience message. (Closes: #305400) + - debian/local/usr_sbin/locale-gen + + * Move sprof from libc-prof to libc-dev. (Closes: #280030) + - debian/sysdeps/depflags.pl: Add Replaces: libc-dev (<< 2.3.5-2). + - debian/debhelper.in/libc-prof.install: Remove sprof install. + - debian/debhelper.in/libc-dev.install: Install sprof moved from -prof. + - debian/debhelper.in/libc-dev.install.hurd-i386: Likewise. + - debian/debhelper.in/libc-dev.manpages: Add sprof.1 install. + - debian/debhelper.in/libc-prof.manpages: Remove file, don't install + sprof.1. + + * Remove Depends: lib64gcc1 from libc6-sparc64. (Closes: #258647) + - debian/control.in/sparc64: Delete Depends: lib64gcc1. + - debian/control: Likewise. + + * Small change for libc6 upgrade problem. + - debian/debhelper.in/libc.postrm: Add plain messages and clean up. + + * Add conflicts to old initrd-tools for avoiding new glibc 2.3.4/5 ldd + blocks to generate initrd images. Suggested by Goswin von Brederlow + . + - debian/sysdeps/depflags.pl: Add conflicts initrd-tools (<< 0.1.79). + + * Add support PowerPC64, based on patches and suggestions by Bastian Blank + and Jeff Bailey : + - debian/control.in/main: Add Build-Depends: gcc-3.4 [powerpc] because + powerpc porting does not support gcc-4.0 currently. + - debian/control: Updated. + - debian/rules.d/control.mk: Add ppc64. + - debian/sysdeps/powerpc.mk: Added to support ppc64 target. + + * debian/sysdeps/hppa.mk: Add /usr/hppa64-linux-gnu/include symlinks for + dpkg-architecture changes. Reported by Matthias Klose + . (Closes: #313404) + + * A Costa . (Closes: #305662, #305666) + - debian/local/manpages/tzconfig.8: Fixed typo. + - debian/local/manpages/ldconfig.8: Likewise. + + * Clytie Siddall : + - debian/po/vi.po: Add the Vietnamese translation for locales. + (Closes: #309618, 311793) + + * Jens Seidel : + - debian/po/de.po: Fix typo. (Closes: #314084) + + -- GOTO Masanori Thu, 21 Apr 2005 16:52:36 +0900 + +glibc (2.3.5-1) experimental; urgency=low + + * GOTO Masanori + + * New upstream release. + - debian/shlibver: Bump up to 2.3.5-1. + + * Drop patches: + - debian/patches/hurd-malloc.dpatch: Removed, it's already applied in + the upstream source. + + * Merge with 2.3.2.ds1-21, added: + - debian/patches/linuxthreads-sizefix.dpatch: Added. + - debian/po/fi.po: Added. + - debian/patches/glibc23-mips-lazy-eval.dpatch: Added, drop dl-machine.h + because the recent upstream should not need such change. + - debian/patches/glibc232-tls-crashfix.dpatch: Added, remove some parts + that are applied in the recent version. + + * Merge with 2.3.2.ds1-21, changed: + - debian/debhelper.in/libc.preinst: Fix typo, proofreading. + - debian/debhelper.in/libc.preinst: Add export LC_ALL=C. + - debian/patches/00list: Update. + + * Update linuxthreads size fix for not only ia64, but also alpha, + amd64, i386, powerpc, s390, sh and sparc. + - debian/patches/linuxthreads-sizefix.dpatch: Update. + + * Fix more libc6 upgrade problem from old <= 2.3.4-1: + - debian/debhelper.in/libc.postinst: Don't use uname -m, use + dpkg --print-installation-architecture. Hwcappkgs mechanism does not + work on (ex:) install architecture: i386, kernel architecture: amd64. + - debian/debhelper.in/libc.postrm: Likewise. + + * Support libc6-dev NPTL static libraries and headers into + /usr/lib/nptl and /usr/include/nptl. (Closes: #276062, #279423) + - debian/rules.d/build.mk: Add installation code from tmp-nptl to + tmp-libc. + - debian/debhelper.in/libc-dev.install: Add tmp-libc/usr/lib/nptl*. + + -- GOTO Masanori Sun, 10 Apr 2005 14:02:19 +0900 + +glibc (2.3.4-3) experimental; urgency=low + + * GOTO Masanori + + * The complete libc6 installation breakage is fixed when hwcap packages + (libc6-i686 and libc6-sparcv9/sparcv9b) is installed. It introduced + /etc/ld.so.hwcappkgs to track hwcap packages. + - debian/debhelper.in/libc.postinst: Create /etc/ld.so.hwcappkgs if + such file is not existed. Check hwcap packages and decide to keep + /etc/ld.so.nohwcap. Put special ld.so.nohwcap string when the + downgraded version does not support ld.so.hwcappkgs. + - debian/debhelper.in/libc-otherbuild.postinst: When it's configured, + check /etc/ld.so.hwcappkgs and decides to keep /etc/ld.so.nohwcap. + - debian/debhelper.in/libc-otherbuild.postrm: When it's removed, + check /etc/ld.so.hwcappkgs and search other hwcap package's version + consistency. Then it decides to remove /etc/ld.so.nohwcap. + - debian/debhelper.in/libc.postrm: Leave /etc/ld.so.nohwcap if it's + downgrade to hwcappkgs incompatible version. + - debian/rules.d/debhelper.mk: Include "libc-" into OPT string + replacement. + + -- GOTO Masanori Tue, 29 Mar 2005 17:22:25 +0900 + +glibc (2.3.4-2) experimental; urgency=low + + * GOTO Masanori + + * Fix libc6 installation breakage when old libc6 and libc6-i686 was + installed, and it's replaced with a new libc6. This fix is limited + for i686 optimized package, not for sparc multiple opt packages. + (Closes: #300806, #300842) + - debian/debhelper.in/libc.postinst: Add check for the existence of + multiple optimized packages. + - debian/rules.d/debhelper.mk: Add the replace code from CURRENT_VER + to $(DEB_VERSION) for libc.postinst. Install libc-otherbuild.postrm. + - debian/debhelper.in/libc-otherbuild.postrm: Added to remove + unneeded ld.so.nohwcap for single optimized package. + + -- GOTO Masanori Tue, 22 Mar 2005 11:17:32 +0900 + +glibc (2.3.4-1) experimental; urgency=low + + * GOTO Masanori + + * Reflect from glibc-snapshot package 2.3.4-0.3.snapshot20041220.2. + + * Add glibc-libidn package handling for the following files: + - debian/sysdeps/gnu.mk + - debian/sysdeps/linux.mk + - debian/sysdeps/kfreebsd-gnu.mk + - debian/rules + + * Add separated shlibver file: + - debian/rules: Include debian/shlibver. + - debian/shlibver: Bump up shlibver to 2.3.4-1. + + * Delete removed file info/libc-dir-add.info: + - debian/debhelper.in/glibc-doc.install + - debian/rules.d/build.mk + + * These dpatches are added in debian/patches/: + - glibc234-alpha-xstat.dpatch: Fix alpha compilation failure when + kernel headers < 2.6.4 is used. + - glibc234-hppa-linesep.dpatch: Add to fix hppa compilation failure. + - glibc234-hppa-remove-mallocdef.dpatch: Add to + fix hppa compilation breakage until ldcw lock change is introduced. + This patch will be removed when ldcw patch is revised to apply. + - glibc234-m68k-linuxthreads-fPIC.dpatch: Add to fix m68k compilation + warnings to remove linuxthreads o-iterator. + - glibc234-hppa-full-nptl-2004-12-20.dpatch: Remove in-cvs parts, + apply the remained stuff for hppa, except for ldcw lock change. + This file is renamed from 50_glibc232-hppa-full-nptl-2003-10-22.dpatch. + + * These dpatches are modified/replaced with the newer patches in + debian/patches/: + - glibc-i686-timing.dpatch: Modify makefile. Fix i686 library breakage. + - glibc23-cmov.dpatch: Drop additional TLS parts. + - glibc23-sse-oldkernel.dpatch: Regenerated. + - hppa-drop-utimes.dpatch: Regenerated. + - ldconfig.dpatch: The previous patch seems being wrong because it + supresses all warnings about error. The new patch I introduced should + not warn during debootstrap, and works finely during normal operation. + - ldd.dpatch: Regenerated. + - ldso-disable-hwcap.dpatch: Regenerated. + - locale-no_NO.dpatch: Drop locale.alias part which is already applied. + - makeconfig.dpatch: Regenerated. + - 50_glibc232-arm-dwarf2-buildfix.dpatch: Modify to fix sjlj compilation. + - 50_glibc232-m68k-dwarf2-buildfix.dpatch: Likewise. + + * These dpatches are currently suspended to apply (those entries in + 00list are commented out) with various reasons, they need update or + confirmation: + - 30_glibc232-base.dpatch: If this patch is needed, the another + binutils related problem should be occured. It's disabled for a + while, then remove iff no problem is reported. + - alpha-pic.dpatch: #175511 said the upstream should have another + different fix. After confirmation, it should be removed. + - arm-output-format.dpatch: I believe the recent arm glibc should work + without this patch. If arm still has problem, then enable it. + - glibc232-globfree-clear.dpatch: The latest upstream has gl_pathv=NULL + part, bug gl_pathc=0 part. I think the current code is harmless. + It needs confirmation to Jeff Licquia. + - translation-fr.dpatch: The upstream rejects this wishlist bug. After + confirmation, it'll be removed. + - mips-asm-unistd.dpatch: I need to look at the result of the current cvs + unistd.h. + - hurd-enable-ldconfig.dpatch: Disabled currently. + + * These dpatches are currently applied, but it may be removed from + 00list as until sarge stuff: + - libgcc-compat-all.dpatch: It'll be removed in future. + - libgcc-compat-other.dpatch: Likewise. + + * These dpatches are currently suspended to apply from 00list because + we plan to be removed after sarge release: + - glibc23-ctype-compat.dpatch: Until sarge stuff. + - glibc23-errno-hack.dpatch: Until sarge stuff. + - glibc23-errno.dpatch: This patch should not be considered permanent; + it may be one of until sarge stuff. + - glibc23-function-compat.dpatch: Until sarge stuff. + - locales-supported.dpatch: Debian specific, until sarge stuff. + + * This dpatch is not used currently: + - 10_cvs.dpatch + + * These dpatches are removed from debian/patches/ because they are already + in upstream cvs: + - 11_cvs_locales.dpatch + - 11_shlib-lds.dpatch + - 51_glibc232-hppa-dist.dpatch + - 51_glibc232-hppa-nopltrel.dpatch + - 51_glibc232-hppa-profiling.dpatch + - 52_glibc233-hppa-feupdateenv.dpatch + - 90_glibc232-statvfs.dpatch + - 90_glibc232-timezones.dpatch + - alpha-crti.dpatch + - alpha-rtsigaction-fix.dpatch + - fno-unit-at-a-time.dpatch + - glibc23-dlclose-l_opencount.dpatch + - glibc23-libio-compat.dpatch + - glibc23-powerpc-sigcontext.dpatch + - glibc23-sparc-pread64.dpatch + - glibc232-catchsegv-insecure-temp.dpatch + - glibc232-hppa-unwindinfo.dpatch + - glibc232-ia64-unwindinfo.dpatch + - glibc232-iconv-ucs2-unalign.dpatch + - glibc232-mips-dl-machine.dpatch + - glibc232-misc-syslog.dpatch + - glibc232-nptl-posix-timer.dpatch + - glibc232-ppc32-nanosecond.dpatch + - glibc232-remove-vsyscall.dpatch + - glibc232-sparc64-softfp.dpatch + - glibcbug.dpatch + - hppa-syscall.dpatch + - hurd-cleanup.dpatch + - hurd-exit-attr-hidden.dpatch + - hurd-i386-hwcap.dpatch + - hurd-libc-lock.dpatch + - hurd-utmp-file.dpatch + - locale-byn_ER.dpatch + - locale-et_EE.dpatch + - locale-ro_RO.dpatch + - locale-strfmon.dpatch + - mips-sgidefs.dpatch + - nptl-io-locking.dpatch + - nptl-page-align.dpatch + - nptl-pthread-c++.dpatch + - nptl-pthread-create-attr.dpatch + - nptl-pthread-once.dpatch + - pthread-cleanup.dpatch + - s390-backtrace.dpatch + - s390-pthread-fpic.dpatch + - syslog-locale.dpatch + + * Hurd update: + - debian/patches/hurd-string.dpatch: Removed, it's already in cvs. + - debian/patches/00list.hurd-i386: Removed. + - debian/patches/hurd-malloc.dpatch: Add to fix Hurd build fix, patch + from Michael Banck . + + -- GOTO Masanori Fri, 18 Mar 2005 09:41:49 +0900 + +glibc (2.3.2.ds1-22) unstable; urgency=medium + + * Daniel Jacobowitz + + - debian/patches/rtld-vdso-assertion.dpatch: Fix an assertion failure + running /lib/libc.so.6. + - debian/rules.d/debhelper.mk: Mark runnable libraries +x again. + + -- Daniel Jacobowitz Tue, 10 May 2005 15:11:53 -0400 + +glibc (2.3.2.ds1-21) unstable; urgency=high + + * GOTO Masanori + + - debian/patches/linuxthreads-sizefix.dpatch: Fix ia64 TLS_PRE_TCB_SIZE + alignment where TLS_DTV_AT_TP is defined between linuxthreads and nptl. + It breaks evolution on ia64 linuxthreads ld.so + nptl environment. + (Closes: #292673) + - debian/patches/glibc232-sigsetjmp.dpatch: Fix gcc-4.0 compilation + breakage on amd64. (Closes: #295457) + - debian/debhelper.in/libc.manpages: Add tzconfig.8. Reported by Matthijs + Mohlmann . (Closes: #182981) + - debian/patches/90_glibc232-timezones.dpatch: Update to tzdata2005h. + - debian/patches/hurd-weak-aliases.dpatch: Add to fix undefined references + to build putty on Hurd, patched by Michael Banck . + (Closes: #295118) + - debian/debhelper.in/libc.preinst: Fix typo, proofreading. + (Closes: #294816, #303478) + - debian/rules: Bump up shlib_dep_ver 2.3.2.ds1-21. It's required by + adding GLIBC_2.3.4 symbol. + + - Bastian Blank : + - debian/patches/sched-update.dpatch: Update sched_[gs]et_affinity to + new interface and library version. Add GLIBC_2.3.4 versioned symbol + for new interface. (Closes: #297769) + - Jeff Bailey : + - debian/patches/glibc232-tls-crashfix.dpatch: Fix tls assertion that + crashes xmms/nvidia. (Closes: #219352) + - debian/patches/glibc232-pthread-cancellation.dpatch: Fix pthread + cancellation bug that causes JVM lockups. (Closes: #300943) + - Denis Barbier : + - debian/debhelper.in/libc.preinst: Add export LC_ALL=C like + libc.postinst, it corrects some locale dependent behavior, + especially for `tr'. (Closes: #304257) + - Lars Wirzenius : + - debian/local/manpages/iconv.1: Escape hyphens for Unicode + environments. (Closes: #292013) + - Emilian Nowak : + - debian/po/pl.po: Add Polish debconf translation. (Closes: #294444) + - Matti Polla : + - debian/po/fi.po: Add Finnish debconf translation. (Closes: #303816) + - Khalid Aziz : + - debian/patches/glibc232-clock_settime.dpatch: Fix clock_settime + always fails with EINVAL. (Closes: #304668) + - Thiemo Seufer : + - debian/patches/glibc23-mips-lazy-eval.dpatch: Workaround fix for + broken symbol resolving of lazy evaluation stubs on mips/mipsel, + that causes fakeroot breakage. (Closes: #265678, #264920) + + -- GOTO Masanori Mon, 14 Feb 2005 09:26:26 +0900 + +glibc (2.3.2.ds1-20) unstable; urgency=high + + * GOTO Masanori + + - debian/patches/hppa-drop-utimes.dpatch: Fix sudo breakage because + system call utimes() is not defined on hppa. Patched by Randolph Chung + . (Closes: #284449) + + - Fix ia64 unwind FTBFS. Patched by Matthias Klose : + - debian/patches/glibc232-ia64-unwindinfo.dpatch: Modify Makeconfig + which unconditionally set the libunwind macro to -lunwind, until the + it's safe again to regenerate the configure script, on advice of + Jeff Bailey. (Closes: #284563) + - debian/control.in/main: Tighten build dependency on ia64 to + gcc-3.3_3.3.5-5. + - debian/control: Likewise. + + - debian/sysdeps/amd64.mk: Add /lib64 and /usr/lib64 symlinks which are + provided by glibc instead of base-files for amd64. Requested by Goswin + Brederlow . (Closes: #259302) + - debian/rules.d/debhelper.mk: Replace from extra_pkg_install to + extra_debhelper_pkg_install rule which are used for debhelper.mk only. + + - debian/patches/librt-mips.dpatch: Update to provide clock_{set,get}time + with versioned symbol both GLIBC_2.0 and GLIBC_2.2. This patch should + be applied until sarge+1 will be released. + + - debian/local/manpages/locale.1: Add the description about + /usr/share/i18n/SUPPORTED. Requested by Guillermo S. Romero + . (Closes: #284137) + + -- GOTO Masanori Wed, 15 Dec 2004 19:44:47 +0900 + +glibc (2.3.2.ds1-19) unstable; urgency=high + + * GOTO Masanori + + - debian/local/manpages/gencat.1: Use \fR instead of \fT for bold + font, and use .TP instead of .PP for option usage. Patched by + Lars Wirzenius . (Closes: #279685) + - debian/local/manpages/iconvconfig.8: Likewise + fix typo. + - debian/local/manpages/mtrace.1: Likewise. + - debian/local/manpages/locale.1: Add "SEE ALSO" to the end of the + manual. (Closes: #282128) + + - debian/sysdeps/linux.mk: Drop -fomit-frame-pointer from compiling + option to build NPTL packages in order to get valid backtrace. + -D__USE_STRING_INLINES is also dropped to consider about backtraces. + Requested by David Mosberger . + - debian/sysdeps/amd64.mk: Likewise. + - debian/sysdeps/i386.mk: Likewise. + - debian/sysdeps/s390.mk: Likewise. + - debian/sysdeps/sparc.mk: Likewise. + + - debian/patches/glibc232-hppa-unwindinfo.dpatch: Add for unwind + information for hppa plt fixup routine. Patched by + Randolph Chung . (Closes: #281993) + - debian/patches/glibc232-ia64-unwindinfo.dpatch: Add to work + ia64 unwind info and libunwind properly. Requested by David Mosberger + . (Closes: #278837) + + - debian/patches/glibc232-catchsegv-insecure-temp.dpatch: Add fix + CAN-2004-0968: catchsegv creates insecure temporary file. + (Closes: #278278) + - debian/debhelper.in/libc.install: Remove glibcbug to fix CAN-2004-0968, + and it's meaningless to include nowadays. (Closes: #205600) + - debian/debhelper.in/libc.manpages: Remove glibcbug.1 from manpage. + - debian/patches/glibcbug.dpatch: Add comment to be removed. + + - debian/make-cvs-patch.sh: Change like make-cvs-locales-patch.sh. + + - debian/patches/s390-pthread-fpic.dpatch: Add to fix lam build failure. + It changes pthread_atfork in libpthread_nonshared.a is built with + -fPIC, not -fpic, that is already applied in libc_nonshared.a. + (Closes: #280445) + + - debian/control.in/libc: Add gcc | c-compiler to Recommends of libc-dev. + This change avoids that aptitude tries to install various compiler + packages if only c-compiler is specified. (Closes: #283668) + - debian/control.in/main: Add Build-Depends: gcc-3.3 (>= 1:3.3.5-3) [ia64] + | gcc-3.4 (>= 3.4.3-2) [ia64] because ia64 should be built with gcc + which supports libunwind. Requested by Matthias Klose + . + - debian/control: Update. + + - debian/patches/nptl-pthread-c++.dpatch: Add to disable using C99 + designators for nptl pthread.h to fix C++ breakage. Patched by + Andreas Jochens and Matthias Klose + . (Closes: #275997, #283461) + + -- GOTO Masanori Sat, 6 Nov 2004 19:04:26 +0900 + +glibc (2.3.2.ds1-18) unstable; urgency=high + + * GOTO Masanori + + - debian/patches/glibc232-sparc64-softfp.dpatch: Add to fix + glibc build breakage on sparc with binutils 2.15. It's caused by + the register misusage, that was allowed by the previous binutils. + (Closes: #266598) + - debian/debhelper.in/libc.postinst: Fix to execute NSS services + correctly when file-rc is used. (Closes: #275403) + + - debian/patches/90_glibc232-timezones.dpatch: Update to tzdata2004e. + + - debian/debhelper.in/locales.prerm: Add to fix warning not to remove + /usr/lib/locale/locale-archive. (Closes: #264020) + - debian/debhelper.in/locales.postrm: Add to remove /etc/locale.gen + when purge is specified. + + -- GOTO Masanori Tue, 5 Oct 2004 09:32:01 +0900 + +glibc (2.3.2.ds1-17) unstable; urgency=high + + * GOTO Masanori + + - debian/sysdeps/depflags.pl: Fix typo, from "kerberos4th-dev" to + "kerberos4kth-dev". (Closes: #266637) + - debian/patches/00list: Add locale-byn_ER.dpatch that was missing + when I fixed. (Closes: #270998) + + - debian/patches/glibc23-dlclose-l_opencount.dpatch: Fix reference + counter in dl that does not sometimes decrement correctly. + (Closes: #233301, #259211) + - debian/patches/glibc232-globfree-clear.dpatch: Workaround and + to make sure that fix to enforce clear gl_pathc and gl_pathv in + globfree() for sarge to conform LFS test, requested by Jeff Licquia. + (Closes: #264884) + + - debian/local/manpages/tzselect.1: Fix typo. (Closes: #269747) + + - debian/debhelper.in/libc.preinst: Don't install glibc when kernel + is not 2.6 on amd64. + - debian/sysdeps/amd64.mk: Patch from Andreas Jochens: + - Drop the 'nptl' pass from GLIBC_PASSES. + - Use 'nptl' instead of 'linuxthreads' in the 'libc' pass (this + requires kernel >= 2.6.0, but 2.4 is not supported by the amd64 + port anyway). + + -- GOTO Masanori Thu, 19 Aug 2004 12:39:35 +0900 + +glibc (2.3.2.ds1-16) unstable; urgency=high + + * GOTO Masanori + + - debian/FAQ: Add note about errno + NPTL workaround. + (Closes: #261035) + - debian/patches/glibc232-mips-dl-machine.dpatch: Fix mips/mipsel + compilation breakage with the recent binutils. (Closes: #262646) + - debian/patches/glibc232-m68k-reloc.dpatch: Fix m68k compilation + breakage with the recent binutils. (Closes: #263601) + + * Jeff Bailey + + - debian/debhelper.in/libc-dev.install.hurd-i386: Don't install + getconf. + + -- GOTO Masanori Mon, 2 Aug 2004 11:53:54 +0900 + +glibc (2.3.2.ds1-15) unstable; urgency=high + + * Jeff Bailey + + - debian/sysdeps/depflags.pl: Replace ${libc}, not libc6. + (Closes: #262669) + + - Marking urgency as high, last upload should have been marked + this way for RC bug fix. + + -- Jeff Bailey Sun, 1 Aug 2004 08:50:13 -0400 + +glibc (2.3.2.ds1-14) unstable; urgency=low + + * GOTO Masanori + + - debian/patches/glibc232-iconv-ucs2-unalign.dpatch: Add to fix + iconv unalignment access with UCS-2BE/UCS-2LE on some architectures. + (Closes: #234691) + - debian/patches/locale-byn_ER.dpatch: Add to fix byn_ER localedef + breakage. Patched by Denis Barbier . + (Closes: #246270, #257658) + - debian/patches/locales-supported.dpatch: Add no_NO.ISO-8859-1 into + SUPPORTED. (Closes: #246170) + - debian/patches/glibc232-nptl-posix-timer.dpatch: Fix posix timer + SIGEV_THREAD notification is broken. (Closes: #259878) + - debian/patches/glibc232-remove-vsyscall.dpatch: Remove __ASSUME_VSYSCALL + to fix the system startup failure on the machine using PAX. + (Closes: #245563) + - debian/patches/90_glibc232-timezones.dpatch: Updated to tzcode2004b + and tzdata2004b. + - debian/patches/locale-eu_FR.dpatch: Add eu_FR and eu_FR@euro. + Patched by Christian Perrier . (Closes: #257840) + - debian/patches/locale-sr_CS.dpatch: Add sr_CS and sr_CS@cyrillic. + Patched by Christian Perrier . But this patch is + conflicted to sr_YU things - it's disabled for a while. + + - debian/local/etc_init.d/nscd: Rewritten the whole script to make + use of the initscript's method. Patched by Thomas Hood + . + (Closes: #229273, #229484, #253119, #252284, #222953) + + - debian/local/manpages/iconv.1: Add small description for `-c' and + so on. (Closes: #189958) + - debian/local/manpages/rpcgen.1: Add -M option description. + (Closes: #193467) + - debian/po/de.po: Updated. Patched by Helge Kreutzmann + . (Closes: #251732) + + - debian/debhelper.in/libc.postinst: Add apache-ssl and apache-perl to + restart script. Suggested by Daniel Jacobowitz . + (Closes: #208997) + - debian/debhelper.in/libc.postinst: Add vsftpd to restart script. + Suggested by Jeff Bailey . (Closes: #213535) + - debian/debhelper.in/libc.postinst: Add lpr-ppd. Change init script + name from lpr, lpr-ppd to lpd, lpd-ppd. (Closes: #205084) + - debian/debhelper.in/libc.postinst: Fix package detection failure when + uninstalled package is encountered during NSS upgrade. + (Closes: #193278) + - debian/debhelper.in/libc.postinst: Add export LANG=C to work scripts + correctly even if user sets locale environment variable. + - debian/debhelper.in/libc.postinst: Change sleep time from 1 to 2. + It's work-around fix, actual fix is start-stop-daemon --stop should + check the process termination. See: #211784. + + - debian/local/usr_sbin/tzconfig: Fix typo: old_timezone vs oldtimezone. + Reported by Kai Henningsen . (Closes: #213159) + + - debian/control.in/libc-dbg: Add Provides: libc-dbg for -dbg package. + (Closes: #219145) + - debian/control.in/libc, debian/control: likewise. + + - /usr/bin/getconf and getconf.1 are moved from libc-dev to libc. + (Closes: #239170) + - debian/debhelper.in/libc-udeb.install: Add libutil* and libcrypt* + to -udeb. (Closes: #258956) + + - Put amd64 port from Andreas Jochens. + - debian/control: Updated. + - debian/control.in: Modify Build-Depends: gcc-3.3 | gcc-3.4. + glibc can build at least gcc-3.3 and later. And this will make it + possible to build glibc with gcc-3.4 when gcc-3.4 becomes the default + on amd64 without changing glibc again. + - debian/sysdeps/amd64.mk: Use workaround -g0 option when gcc-3.4 is + used, because gcc-3.4 on amd64 with -g0 + nested functions are broken: + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=260710 + + * Andreas Jochens + + - debian/rules.d/control.mk: Add amd64 at the appropriate places. + - Add debian/patches/amd64-lib.dpatch to disable the biarch lib64 dir on + amd64 and enable this patch in debian/patches/00list. (Closes: #246547) + - Add a new file debian/sysdeps/amd64.mk with GLIBC_PASSES += nptl + (Closes: #248192) + - debian/sysdeps/amd64.mk: Use gcc instead of gcc-3.3 on amd64. + - debian/patches/fno-unit-at-a-time.dpatch: Add -fno-unit-at-a-time + test to configure for amd64 + gcc-3.4. (Closes: #261082) + + * Jeff Bailey + + - debian/patches/syslog-locale.dpatch: Include patch from Jakub + Jelinek to make sure syslogging happens in the C locale. + Thanks to pere for catching this. (Closes: #161340, #158651) + + - debian/patches/hurd-string.dpatch: New file + - debian/patches/00list.hurd-i386: Only load hurd-string on hurd-i386. + + -- GOTO Masanori Mon, 31 May 2004 23:43:29 +0900 + +glibc (2.3.2.ds1-13) unstable; urgency=low + + * Jeff Bailey + + - debian/control.in/main: Change to new email address. + - debian/debhelper.in/libc-dev.install.hurd-i386: Add missing files. + Thanks to Michael Banck (Closes: #246355) + - debian/sysdeps/gnu.mk: Stub out kernel_check. + Thanks to Michael Banck + + * GOTO Masanori + + - debian/debhelper.in/libc.preinst: Fixed to work when kernel version is + x.y.zFOOz pattern. (Closes: #245643) + - debian/patches/locale-ro_RO.dpatch: Fix Romania can't be built. + (Closes: #245657) + - debian/local/manpages/locale.1: Fix typo: LOC_PATH -> LOCPATH. + (Closes: #246557) + - debian/rules: Fix build correctly when we execute "debian/rules binary". + Patched by Jurij Smakov . (Closes: #247241) + - debian/patches/glibc232-misc-syslog.dpatch: Fix syslog segv under + memory shortage. (Closes: #249559) + - debian/patches/s390-backtrace.dpatch: Fix 900 test failures in the + libjava testsuite in gcc-3.4 on s390. (Closes: #243394) + - debian/sysdeps/linux.mk: Fix build failure when kernel headers directory + in /usr/src has symlink asm direcotry. Patched by Wolfram Gloger + . (Closes: #249408) + + - debian/debhelper.in/libc-udeb.install: Add libnss_files.so*, + - debian/libnss-dns-udeb, libnss-dns-files: Update description. + - debian/control: Update. + + * Colin Watson + + - debian/rules: Add libnss-dns-udeb and libnss-files-udeb. + (Closes: #247430) + - debian/.cvsignore: Likewise. + - debian/control.in/libc: libc-udeb depends on libnss-dns-udeb and + libnss-files-udeb. + - debian/debhelper.in/libc-udeb.install: Remove libnss_dns and libnss_files. + - debian/rules.d/control.mk: Likewise. + - debian/control.in/libnss-dns-udeb: Update description. + + -- GOTO Masanori Wed, 26 May 2004 00:18:06 +0900 + +glibc (2.3.2.ds1-12) unstable; urgency=low + + * GOTO Masanori + + - debian/local/etc_init.d/mountkernfs: Fix typo. (Closes: #229340) + - debian/local/etc_init.d/mountkernfs: Fix error if the kernel does not + set CONFIG_TMPFS on 2.4. (Closes: #230758) + - debian/local/etc_init.d/mountkernfs: Check each mount directory is + actually directory or not. (Closes: #234813) + - debian/local/etc_init.d/mountkernfs: remove "set -e". + - debian/debhelper.in/libc.postinst: use invoke-rc.d to invoke + mountkernfs when it's available, suggested by Junichi Uekawa + . (Closes: #230008) + + - debian/debhelper.in/libc.install: drop installing three files: + debian/local/etc_init.d/mountkernfs, debian/local/etc_default/devpts, + and debian/local/etc_default/tmpfs. Because initscripts now provides + those files. (Closes: #238963) + - debian/debhelper.in/libc.preinst: devpts.sh should be actually replaced to + mountkernfs. But by now mounting filesystems should be done with + mountvirtfs in initscripts. Initscripts needs to remove devpts.sh and + mountkernfs. + - debian/debhelper.in/libc.postinst: likewise. + - debian/debhelper.in/libc.postrm: likewise. + + - debian/debhelper.in/libc.preinst: Fix kernel version detection correctly. + Patched by Goswin von Brederlow . + (Closes: #241395). + + - debian/rules.d/debhelper.mk: Fix build failure in strip processing. + + - debian/patches/51_glibc232-hppa-nopltrel.dpatch: Do not process + lezy relocations if no DT_PLTREL is present. Reported by + Richard Hirst and Patched by + Carlos O'Donell . (Closes: #228375) + - debian/patches/glibc232-ppc32-nanosecond.dpatch: Fix ppc32 stat + reports bogus nanosecond data. Patched by Anton Blanchard + . (Closes: #231358) + - debian/patches/nptl-io-locking.dpatch: Add stdio performance + improvement for nptl. Dpatched by Michael Clark + . (Closes: #238213) + - debian/patches/52_glibc233-hppa-feupdateenv.dpatch: + The newest compiler in unstable has caught a bug in the feupdateenv + implementation for hppa. The code should not be using the constant input + argument as temporary scratch. Patched by Carlos O'Donell + . + - debian/patches/localedef-fix-trampoline.dpatch: Fix localedef segv + when run under exec-shield/PaX and so on due to trampoline issue. + Dpatched by James Troup . + (Closes: #231438, #198099, #215624, #215821, #221740) + - debian/patches/alpha-rtsigaction-fix.dpatch: Fix alpha sigaction with + SA_SIGINFO (rt_sigaction), keep program execution after exiting signal + handler, with correctly calling rt_sigreturn. (Closes: #221969) + - debian/patches/translation-fr.dpatch: Include fr.po translation patch. + Patched by Petter Reinholdtsen . Related bug #243183 + is currently suspended. + - debian/patches/locale-et_EE.dpatch: Fix et_EE locale incorrect charset. + Patched by Petter Reinholdtsen . (Closes: #208238) + + - debian/debhelper.in/libc.postinst: add rsync to NSS checking code. + (Closes: #229196) + - debian/debhelper.in/libc.preinst: add kernel version check code if + real i386 is used. (Closes: #231538) + + - debian/po/da.po: added. Patched by Morten Brix Pedersen . + (Closes: #230669) + - debian/po/cs.po: added. Patched by Miroslav Kure + . (Closes: #230969) + - debian/po/el.po: added. Patched by Konstantinos Margaritis + . (Closes: #230997) + - debian/po/ru.po: added. Patched by Ilgiz Kalmetev + . (Closes: #221657) + - debian/po/uk.po: added. Patched by Eugeniy Meshcheryakov + . (Closes: #235850) + - debian/po/zh_CN.po: added. Patched by Hiei Xu + and Carlos Z.F. Liu . (Closes: #231907) + - debian/po/tr.po: added. Patched by Ercin EKER + and Recai Oktas . (Closes: #240654) + + - debian/debhelper.in/glibc-doc.links: add manpages links for sem_*. + + - debian/patches/template.dpatch: split Author to Dpatch author and + Patch author. + + - debian/sysdeps/hppa.mk: added to create symlink + /usr/hppa64-linux/include to /usr/include for hppa64. (Closes: #239020) + - debian/sysdeps/depflags.pl: added conflicts to gcc-3.3-hppa64 and + gcc-3.4-hppa64. + - debian/sysdeps/depflags.pl: Add replaces: kerberos4th-dev (<< 1.2.2-10) + to avoid conflicting /usr/include/ifaddrs.h. (Closes: #234347) + + - debian/control.in/opt: made libc6-i686 description easier to + understand from users' requests. (Closes: #218396, #239555, #242546) + + - debian/local/usr_sbin/locale-gen: Add code to write an error if the + line doesn't satisfy the format. Patched by Petter Reinholdtsen + . (Closes: #207199) + + * Jeff Bailey + + - debian/debhelper.in/libc.preinst: Don't use awk except in + upgrade mode. (Closes: #229461) + Also make sure that it doesn't trip on words being added to the + upstream revision number. Thanks to James Troup for + mentioning this. + Thanks to Bastian Blank for the fix. + - debian/debhelper.in/libc.postinst: Respect DEBIAN_FRONTEND=noninteractive + for setting timezone. Default to UTC. (Closes: #196382) + + - debian/debhelper.in/libc.docs: Add TODO. + + Hopefully the last round of hurd-i386 fixes: + + - debian/debhelper.in/libc-dev.install.hurd-i386: New file. + - debian/rules.d/debhelper.mk: Deal with the arch-specific install files. + - debian/patches/hurd-cleanup.dpatch: New file for dl-procinfo.c and + missing include in malloc.c (Both in upstream) + - debian/patches/00list: Update + + Locales surgery, with many thanks to Petter Reinholdtsen: + + - debian/patches/glibc22-eo_EO.dpatch: Rename to ... + - debian/patches/locale-eo_EO.dpatch: ... this. + - debian/patches/11_cvs_locales.dpatch: New generated file from CVS. + - debian/patches/locales-stuff.dpatch: Remove bogs code and split + into .. + - debian/patches/locale-de_CH.dpatch: ... this and ... + - debian/patches/locale-ru_RU.dpatch: this. + - debian/patches/locale-no_NO.dpatch: New file to keep no_NO around + during the transition to nb_NO. + - debian/patches/locale-strfmon.dpatch: New file from CVS needed + for new locales formatting. (Closes: #226047) + - debian/patches/00list: Update. + + - debian/patches/glibc22-locales.dpatch: Obsoleted by CVS update. + - debian/patches/locale-es_AR.dpatch: Add template header. + - debian/patches/locales-supported.dpatch: Remove entries provided + by CVS. Add no_NO for transition. + + (Closes: #211607, #215466, #218424) + + - debian/patches/template.dpatch: Tweak to make it easier to + generate patches. + - debian/make-cvs-locales-patch.sh: New file. + + * Daniel Jacobowitz + + - Add separate-debug-info files to libc6-dbg to allow backtraces through + optimized libraries (Closes: #227097, #219459) + - debian/control.in/main: Bump build dependencies for binutils and + debhelper. + - debian/control.in/libc-dbg: Update package description. + - debian/rules: Set NOSTRIP after loading sysdeps rules files, so that + it actually gets set. + - debian/rules.d/debhelper.mk: Generate separate debug info libraries. + Touch stamp file for libc-udeb. + - debian/sysdeps/i386.mk, debian/sysdeps/linux.mk, s390x_extra_cflags, + debian/sysdeps/sparc.mk: Use -g1 instead of -g0 so that we get + unwind information. + - debian/wrapper/objcopy: Wrapper script to remove excess debug + info, for now. + - Remove tabs from debian/changelog, since they confuse + dpkg-parsechangelog. + - Add missing quotes in debhelper.mk NOSTRIP test. + - Don't add libc-dir-add.info to info after all + (Closes: #222171, #230765). + (debhelper.in/glibc-doc.info, debhelper.in/glibc-doc.install) + + * Ben Collins + + - Added and enabled a sparc v9b target (UltraSPARC III). + + * Bastian Blank + + - Add libnss-dns-udeb package. + - Rename udebs to match the real packages. (Closes: #183139) + - Fix provides of udebs. (Closes: #183143) + - Use debhelper udeb knowledge. + + -- GOTO Masanori Wed, 21 Apr 2004 00:40:55 +0900 + +glibc (2.3.2.ds1-11) unstable; urgency=low + + * Jeff Bailey + + - debian/control.in/s390x: Remove -dev dependency on gcc-3.2. + - debian/sysdeps/s390.mk: Add missing ) + - debian/rules: Fixes for cross-compiling + - debian/patches/90_glibc233_tcsetaddr.dpatch: LSB Fix for tcgetattr + (Closes: #218131) + - debian/sysdeps/depflags.pl: Update wine conflicts. + (Closes: #218717) + - debian/sysdeps/depflags.pl: Update cyrus-imapd conflicts. + (Closes: #220983) + - debian/sysdeps/sparc.mk: Force -m32 when building sparcv9 + - debian/patches/glibc-sparc-timing.dpatch: New file to let sparcv9 works. + (Closes: #222886) + - debian/patches/nptl-page-align.dpatch: New file to fix page + alignment troubles. (Closes: #223241, #225466) + + - debian/patches/hurd-exit-attr-hidden.dpatch: New file to fix + compilation on gcc-3.3 and hurd-i386 + - debian/patches/hurd-i386-hwcap.dpatch: New file to give the needed + i386 HWCAP defines on hurd-i386 + - debian/patches/hurd-libc-lock.dpatch: New file to fix FTBFS on hurd-i386 + - debian/patches/hurd-utmp-file.dpatch: New file to fix FTBFS on + non-Linux. + - debian/patches/glibc23-cmov.dpatch: Update for moved i386 HWCAP + definitions. + - debian/patches/glibc23-sse-oldkernel.dpatch: Updated for + severelly munged sysdeps/unix/sysv/linux/i386/dl-procinfo.h + Thanks to Barry deFreese for helping get these in order. + + - debian/patches/00list: Update + + - debian/debhelper.in/libc.preinst: For Linux kernels of the form + x.y.z-n, fail the install if z >= 255. (Closes: #226688) + Thanks to James Morrison and Kevin Everets for help on the wording + of the error message. + + - debian/sysdeps/sparc.mk: Revert Ben's change of '-mcpu=v8 + -mtune=ultrasparc'. This was misleading because it was always + overridden by the glibc Makefile and had no effect. + + * Phil Blundell + + - Require linux-kernel-headers >= 2.5.999-test7-bk-9 to avoid module- + related problems on ARM. + + * Ben Collins + + - Bump sparcv9 back to -mcpu=v8 -mtune=ultrasparc. Should fix sparcv9. + + * Daniel Jacobowitz + + - Pass CC to configure; should fix sparc64. + - Suppress the errno warning message for now. Update to point to + README.Debian.gz. + - debian/patches/glibc23-errno-hack.dpatch, debian/FAQ + - Redirect dpkg -s sysvinit's stderr to /dev/null (Closes: #225601). + - Fix on MIPS targets. Thanks to Guido Guenther + for testing and improvements to the patch (Closes: #223891, #226483). + - debian/patches/mips-asm-unistd.dpatch + - Fix for GCC changes from Thiemo Seufer (Closes: #224744). + - debian/patches/mips-sgidefs.dpatch + - Fix i386-linux build failure. + - debian/patches/glibc23-sse-oldkernel.dpatch + - Quote a backslash in libc.preinst + + * GOTO Masanori + + - debian/debhelper.in/glibc-doc.links: add missing links for + pthread_mutex_*(), pthread_mutexattr_*(), pthread_cond_*(), and + pthread_condattr_*(). + - debian/control.in/main: remove Build-Depends-Indep: latex2html. + (Closes: #221317) + + - debian/local/etc_init.d/devpts.sh: rename to mountkernfs. + - debian/local/etc_init.d/mountkernfs: rename from devpts.sh, for + adding to mount tmpfs(shmfs), sysfs, and usbfs. + - debian/local/etc_default/tmpfs: add to control tmpfs upper limit size. + - debian/debhelper.in/libc.dirs: add to make /sys. + - debian/debhelper.in/libc.install: add mountkernfs and tmpfs, + remove devpts.sh. + - debian/debhelper.in/libc.postrm: rename devpts.sh to mountkernfs. + - debian/debhelper.in/libc.postinst: likewise. + - debian/local/etc_init.d/mountkernfs: fix devpts_mounted to check + its pathname is exactly started from the top directory. + + - debian/debhelper.in/libc.preinst: fix preinst does not stop + on mips even if it's kernel version is < 2.4.22. (Closes: #223769) + + - debian/po/pt_BR.po: Update pt_BR debconf template translation. + Patched by Andre Luis Lopes . (Closes: #219839) + - debian/po/nl.po: Update nl debconf template translation. + Patched by cobaco . (Closes: #220693) + + * Carlos O'Donell + + - debian/patches/51_glibc232-hppa-dist.dpatch: Add entry.h to dist. + - debian/patches/51_glibc232-hppa-profiling.dpatch: Fix profile support. + (Closes: #221010) + + -- Daniel Jacobowitz Tue, 20 Jan 2004 09:41:48 -0500 + +glibc (2.3.2.ds1-10) unstable; urgency=low + + This is the "Swimming to the surface" release. + + * GOTO Masanori + + - debian/control.in/opt: Add more ix86 CPUs in the description. + - debian/debhelper.in/libc.preinst: Ignore old libc4/5. + (Closes: #218449) + + * Daniel Jacobowitz + + - Add a patch to automatically disable NPTL for programs which + reference the old errno; and update the FAQ to match. + (glibc23-errno-hack.dpatch). + - Update make build dependency as reported by Mikko Kautto + (Closes: #218595). + - Update debian/po/nl.po with new translation from Bart Cornelis + (Closes: #218642). + - Update SSE disabling patch to work for static binaries too + (Closes: #218524, #219025). + - debian/debhelper.in/libc.preinst: Ignore ia32-libs also + (Closes: #219176). + - debian/control.in/main: Build depend on fixed linux-kernel-headers + to get ia64 module syscalls (Closes: #218645). + + * Jeff Bailey + + Update to Standards-Version 3.6.1: + - debian/changelog: Convert from Latin-1 to UTF-8. 1 Line affected. + - debian/control.in/main: Update version number. + Fix some lintian warnings: + - debian/changelog: Remove obsolete user-emacs settings. + - debian/control.in/libc: Remove trailing periods from synopis'. These + aren't full sentences. + - debian/local/manpages/gencat.1: New file. + - debian/local/manpages/trace.1: New file. + - debian/debhelper.in/libc-dev.manpages: Install them. + - debian/local/manpages/iconvconfig.8: New file. + - debian/debhelper.in/libc.manpages: Install it. + - debian/patches/90_glibc232-statvfs.dpatch: Don't get confused on bad + mtab. (Closes: #219271) + - debian/patches/90_glibc232-timezones.dpatch: Update timezone + information. + + * Phil Blundell + + - debian/patches/arm-ioperm.dpatch: Third time lucky? + + -- Jeff Bailey Wed, 5 Nov 2003 10:53:14 -0500 + +glibc (2.3.2.ds1-9) unstable; urgency=low + + * GOTO Masanori + + - debian/po/es.po: Update. Patched by Carlos Valdivia Yagüe + . + - debian/debhelper.in/libc.preinst: Replace s/libc6/glibc/ + in messages, actually there are not only libc6, but also + libc6.1, libc0.3, and so on. + + * Daniel Jacobowitz + + - Export libpthread symbols needed for thread debugging + (glibc23-thread-debugging.dpatch). + - Remove glibc23-thread-debugging.dpatch in response to upstream + comments. Don't strip libpthread symbols needed for thread debugging. + - Add version sanity check for kernels whose extraversion starts with a + dot (Closes: #218546). + - Disable SSE for pre-2.4 kernels (Closes: #218524). + - Symlink asm-sparc and asm-sparc64 into debian/include if necessary. + - Don't duplicate .so symlinks in libc6-s390x and libc6-dev-s390x. + - Add a build fix for sparc64; pread syscall has been renamed to + pread64. + - Add a FAQ entry for unresolved errno (Closes: #218561). + - Import patch from CVS to fix ucontext_t/mcontext_t on powerpc32 + (Closes: #207806). + - Patch from Randolph Chung for HPPA system calls + (hppa-syscall.dpatch). + + -- Daniel Jacobowitz Sat, 1 Nov 2003 18:54:16 -0500 + +glibc (2.3.2.ds1-8) unstable; urgency=low + + * Daniel Jacobowitz + + - Don't use --enable-omitfp since we don't install libc_g.a. + - Enable NPTL for S/390. + - Fix the /lib/ld64.so.1 symlink for s390x. + - Update maintainer scripts for fixes lost in the rewrite. + - Enable NPTL for ia64. Thanks to Ian Wienand for testing. + - Automatically cross-compile if the kernel is too old to build + an optimized library. + - Do not run make check if cross compiling. + - Fix msqid_ds on MIPS. Dpatch from Guido Guenther, patch by + Thiemo Seufer (Closes: #215273, #200215, #217593). + - Check for old copies of glibc in a couple of places (Closes: #212224). + - Fix a libio compatibility code bug which crashed the Citrix client + (glibc23-libio-compat.dpatch). + - Remove fuzzy markers from fr.po. Patch from Denis Barbier + (Closes: #217865). + - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had + gotten lost. + - Re-add typo fixes to iconv.1 and rpcgen.1. (Closes: #202161) + - Merge iconv.1 fix to iconv.pod. + - Re-add fix for locale-gen and POSIXLY_CORRECT. + - Update ldso-disable-hwcap.dpatch and preinst/postinst scripts. + - Update maintainer scripts not to use basename; dpkg invokes the + scripts as tmp.ci/postinst, not libc6.postinst. + - Add a patch for building shlib.lds which fixes a parse error when + building without an existing -dev package installed. + - debian/patches/11_shlib-lds.dpatch + + * Jeff Bailey + + - debian/sysdeps/linux.mk: Use getconf _NPROCESSORS_ONLN instead + of /proc/cpuinfo to calculate NJOBS. The cpuinfo file format + is not consistent between arch's. + - debian/.cvsignore: New file. + + * GOTO Masanori + + - debian/debhelper.in/locales.dirs: Add /usr/lib/locale, because + localedef stops to create locale data if this dir is not found. + - debian/debhelper.in/libc-otherbuild.preinst: Fix typo which + disturbs to install libc-otherbuild package. + - Dan's checking code for old copies in libc6 preinst fixes + installation breakage for example /usr/lib/debug is in + /etc/ld.so.conf, or so on. + (Closes: #165374, #212224). + - debhelper.in/libc.preinst: add kernel version sanity check for + sun4m arch which needs at least 2.4.21 due to hardware multiplication + instruction is used by default. (Closes: #215010, #215012) + - debian/debhelper.in/libc.preinst: fix check_dirs return value. + + -- Daniel Jacobowitz Tue, 28 Oct 2003 18:29:09 -0500 + +glibc (2.3.2.ds1-7) experimental; urgency=low + + * Daniel Jacobowitz + + - Fix TLS libraries, which belong in /lib/tls, not /libtls. + - Fix -march for NPTL libraries on i386 - was i686, should have + been i486. + - Move i686 libraries to /lib/tls/i686/cmov. + - Include make check output in the libc package. + - S/390 perversely uses /lib/ld64.so.1 as the dynamic linker; include + a symlink. + - Leave /lib64/ld64.so.1 executable on S/390. + - Generate SUPPORTED again. + - Update ldconfig to prefer /lib/tls to /lib/i686/cmov. + - Disable conflicts between optimized libraries and libsafe/memprof; + they've worked for a while. + - Switch the i686 optimized libraries to use NPTL, and update their + description. + - Fix dependencies for locales package. + - Include SONAME symlinks in libc6-dbg. + - Remove vestigial gconv-modules Provides. + - Install more files for libc6 and locales packages. + - Correct section for zdump.8 man page. + - Install ld.so.8 in the right directory (debhelper thinks that .so is a + language extension). + - Install info menu entries for functions provided by libc, in + glibc-doc. + - Include changelog in glibc-doc also. + - Re-add libc6-dev dependency on matching libc6. + - Fix libc-udeb build. + + * Phil Blundell + + - debian/patches/arm-ioperm.dpatch: Try again. + + * Jeff Bailey + + Welcome back HPPA, Thanks to Carlos O'Donell + + - debian/patches/50_glibc232-hppa-full-nptl-2003-10-22.dpatch: New. + - debian/patches/50_glibc23-hppa-entry.dpatch: Remove. + - debian/patches/glibc23-00-hppa-pthreads.dpatch: Remove. + - debian/patches/glibc23-01-hppa-dl-machine.dpatch: Remove. + - debian/patches/glibc23-07-hppa-atomicity.dpatch: Remove. + - debian/patches/glibc23-hppa-compat.dpatch: Remove. + - debian/patches/glibc23-hppa-malloc8.dpatch: Remove. + + - debian/patches/00list: Update. + + - debian/rules: Define NJOBS as 1. + - debian/sysdeps/linux.mk: Define NJOBS based on number of processors + - debian/rules.d/build.mk: Use -j $(NJOBS) during build. + Based on patch from Ian Wienand + + - debian/debhelper.in/libc.install: Install pt_chown + - debian/rules.d/debhelper.mk: Don't clobber SUID on pt_chown + - debian/debhelper.in/glibc-doc.docs: Install DEB_SRCDIR/ChangeLog* + - debian/rules.d/build.mk: Don't run testsuite if DEB_BUILD_OPTIONS + contains nocheck + + - debian/sysdeps/gnu.mk: Define slibdir. + - debian/rules.d/build.mk: Only set slibdir in configparms if its set. + - debian/debhelper.in/glibc-doc.doc-base: New file. + - debian/debhelper.in/glibc-doc.install: New file. + - debian/debhelper.in/glibc-doc.links: New file. + - debian/rules.d/build.mk: Generate HTML files. + - debian/rules.d/debhelper.mk: Map LIBC to $(libc) in generated files. + - debian/debhelper.in/libc.install: Install Linuxthreads ChangeLog. + - debian/debhelper.in/libc.docs: Install various docs. + - debian/sysdeps/kfreebsd-gnu.mk: New file. Put in all the magic + from the old packaging. + - debian/sysdeps/kfreebsd.mk: Deleted. + - debian/sysdeps/gnu.mk: Add in GLIBC_OVERLAYS to allow patching to work, + create ld.so symlink at end of build. + - debian/sysdeps/sparc.mk: Change MIN_KERNEL_REQUIRED to + MIN_KERNEL_SUPPORTED. + - debian/sysdeps/s390.mk: Likewise. + - debian/rules: Define kernel_check macro. + - debian/sysdeps/linux.mk: Override kernel_check for Linux. + - debian/rules.d/build.mk: Call kernel_check macro when --build == + --host + + * GOTO Masanori + + - debian/po/ru.po: Update. Patched by Ilgiz Kalmetev + . (Closes: #214349) + + -- Daniel Jacobowitz Sat, 25 Oct 2003 15:09:02 -0400 + +glibc (2.3.2.ds1-6) experimental; urgency=low + + * Phil Blundell + + - debian/patches/arm-ioperm.dpatch: New. + + * Daniel Jacobowitz + + - Add debhelper build dependency. + - Use linux-kernel-headers package for headers. + - Add S/390 support. + - Build libc6-dev-sparc64. + + -- Daniel Jacobowitz Mon, 20 Oct 2003 16:27:39 -0400 + +glibc (2.3.2.ds1-5) experimental; urgency=low + + * Daniel Jacobowitz + + - Fix a thinko in i686 timing patch for non-HP_TIMING architectures. + - Add -k to make check. + + -- Daniel Jacobowitz Mon, 13 Oct 2003 10:53:31 -0400 + +glibc (2.3.2.ds1-4) experimental; urgency=low + + * Daniel Jacobowitz + + - Update i686 timing patch to fix clock_gettime. + - Update glibc23-cmov patch to let ld load tls libraries from + ld.so.cache. + - Include symlinks in optimized library directories to placate + dpkg-shlibdeps. + - Fix shlibs files to include a version again. + - Re-enable make check. + - Update makeconfig.dpatch to fix a typo that broke make check. + - Add glibc-make-check-perms.dpatch to fix an upstream make check + problem. + - Build some optimized libraries using appropriate --build options + so that they can run make check. + + * Jeff Bailey + + - Build libraries for sparcv9 and sparc64. + - Enable TLS for ia64. + + -- Daniel Jacobowitz Sun, 12 Oct 2003 19:42:11 -0400 + +glibc (2.3.2.ds1-3) experimental; urgency=low + + * Daniel Jacobowitz + + - Use ldd* in debhelper.in/libc6, because non-i386 arches don't have + lddlibc4. + - Include gconv-modules in libc6. + - Don't include some unnecessary generated kernel headers. + - Merge previous .dpatch files (Closes: #214470). + - Run depflags.pl again (Closes: #214468). + - Don't include profiled libraries in libc-dev (Closes: #214504). + - Ship /usr/include/asm-generic (Closes: #214512). + + -- Daniel Jacobowitz Mon, 6 Oct 2003 21:18:28 -0400 + +glibc (2.3.2.ds1-2) experimental; urgency=low + + * Daniel Jacobowitz + + - Install the right headers in /usr/include/asm, instead of trying to + replace the directory with a symlink (Closes: #214233). + - Map DEB_HOST_GNU_CPU to a uname value for creating the asm symlink. + - Move libc6-dev's postinst back to preinst. + - Support multiple autoconf.h headers. + - Add an ia64 autoconf.h, from Branden Robinson. + + -- Daniel Jacobowitz Sun, 5 Oct 2003 14:47:05 -0400 + +glibc (2.3.2.ds1-1) experimental; urgency=low + + * Essentially redo the debian/ packaging directory. + + Specifically, the following directories were changed: + - debian/sysdeps/*: Redo into os-based and arch-based handling. + - debian/debhelper.in/*: Use debhelper for all package management. + - debian/rules.d/*: Split out rules file into logical pieces. + - debian/local/*: Move all of the files that Debian provides to here. + + Update dpatch to more closely match the debian package: + - debian/patches/0list: Rename to 00list to match dpatch update. + - debian/rules.d/dpatch.mk: Sync with Debian package with the + following four changes: + 1) Support srcdir != builddir builds. + 2) Support $(stampdir) + 3) patch target depends on unpack + 4) Use $(DEB_SOURCE_PACKAGE) instead of $(PACKAGE) + + Remove dependency on various kernel-headers packages, bring into + the package: + - linux-kernel-headers/: New directory, import from 2.6.0-test2 + + Add NPTL support on i386: + - debian/sysdeps/i386.mk: Add NPTL patterns, set minimum kernel. + + Redo "DBS-Style" tarball support: + - debian/rules.d/tarball.mk: New file + - debian/sysdeps/linux.mk: Bring in linuxthreads and nptl overlays. + - prep.sh: Remove. + - version: Remove. + + Update to recent CVS snapshot to support NPTL: + - debian/patches/10_cvs.dpatch: update + + This cleanup project is the result of several discussions between + Jeff Bailey, GOTO Masanori, Daniel Jacobowitz, and Philip Blundell. + + The initial work here was done by Jeff Bailey, Branden Robinson, + and Daniel Jacobowitz. + + -- Daniel Jacobowitz Thu, 2 Oct 2003 13:47:40 -0400 + +glibc (2.3.2-9) unstable; urgency=medium + + Urgency set to medium, because this version should bring HPPA alive again. + + * GOTO Masanori + + - debian/patches/82_glibc232-iconv-euc-jp-ms-fix.dpatch: Fix EUC-JP-MS + does not work even if they are listed as available in iconv. + Dpatched by Topia . (Closes: #212080) + + - debian/manpages/iconv.1: Fix typo in -o option. Patched by + Max Vozeler . (Closes: #211733) + + - debian/manpages/rpcgen.1: Fix typo which cause some infos for the '-o' + option are not shown, and add -Sm option description. Patched by + Nicolas Francois . + (Closes: #211984) + + - debian/libc/DEBIAN/preinst: Updated libc6 libnss restarting version + from 2.2.94-1 to 2.3.2-2 in preinst. Postinst code was already fixed + in 2.3.2-2. (Closes: #211825) + + - debian/locales/DEBIAN/template: There is no reason to + set LANG=C in /etc/environment, so do not display this locale + in the locales/default_environment_locale question. + - debian/locales/DEBIAN/config: Likewise. + - debian/locales/DEBIAN/postinst: If /etc/environment sets the LANG + variable and a new configuration asks for not setting it, the + line was not removed from this file. + - debian/po/templates.pot: Update templates followed by above changes. + - debian/po/fr.po: Update accordingly using debconf-updatepo with new + translation. + - debian/po/ja.po: Likewise. + - debian/po/ca.po: Update accordingly using debconf-updatepo. + - debian/po/de.po: Likewise. + - debian/po/es.po: Likewise. + - debian/po/fr.po: Likewise. + - debian/po/ko.po: Likewise. + - debian/po/pt_BR.po: Likewise. + - debian/po/ru.po: Likewise. + - debian/po/nl.po: Update accordingly using debconf-updatepo with + fixing line invalid wrapping. + All patched by Denis Barbier . + + - debian/patches/80_glibc232-locales-nb_NO-fix.dpatch: Added to fix + nb_NO as real locale, not an alias. Patched by Petter Reinholdtsen + . (Closes: #206474) + + * Jeff Bailey : + + - 20_glibc232-hppa-full-2003-10-20.dpatch: New HPPA patch. + (Closes: #209253) Thanks to Carlos O'Donell + + - 50_glibc23-hppa-entry.dpatch: Remove. + - 80_glibc232-locales-nb_NO-fix.dpatch: Remove. + - glibc23-00-hppa-pthreads.dpatch: Remove. + - glibc23-01-hppa-dl-machine.dpatch: Remove. + - glibc23-07-hppa-atomicity.dpatch: Remove. + - glibc23-hppa-compat.dpatch: Remove. + - glibc23-hppa-malloc8.dpatch: Remove. + + - 0list: Update + + -- Jeff Bailey Wed, 22 Oct 2003 13:46:39 -0400 + +glibc (2.3.2-8) unstable; urgency=low + + * Phil Blundell + + - debian/control.in/main: add gawk to Build-Depends, since testsuite + apparently requires it. + + - debian/patches/pthread-cleanup.dpatch: Vector __pthread_cleanup_push + and __pthread_cleanup_pop through __libc_pthread_functions. + (Closes: #205234) + + - debian/patches/arm-no-hwcap.dpatch: Admit HWCAP_FAST_MULT again, + since we want to start using this for openssh. + - debian/patches/arm-updates.dpatch: Add some miscellaneous arm + changes taken from upstream. + - debian/patches/arm-vfork.dpatch: Avoid bad interaction between + vfork and libpthread. + + * GOTO Masanori + + - debian/patches/80_glibc232-fesetround-fix.dpatch: Fix fesetround static + link time failure. (Closes: #211135) + + - debian/patches/lo_LA.UTF-8_not_supported.dpatch: Dropped, to support + lo_LA.UTF-8 again. + - debian/patches/80_glibc232-locales-lo_LA.dpatch: Added to support + lo_LA.UTF-8 again. + + - debian/locales/usr/sbin/locale-gen: Fix locale-gen breaks with bash + 2.03, unset POSIXLY_CORRECT iff it's previously defined. + Patched by Daniel Verite . (Closes: #210301) + + -- Philip Blundell Wed, 17 Sep 2003 20:44:48 +0100 + +glibc (2.3.2-7) unstable; urgency=medium + + * GOTO Masanori + + - debian/patches/90_glibc232-mathinline_iso.dpatch: Fix inline math + function complaints with gcc -pedantic -ffast-math. Patched by + Thomas Richter . (Closes: #208016, #207221) + + - debian/patches/template.dpatch: Added DP: Related bugs: field. You can + use it to put which bugs are related with this dpatch. + + * Daniel Jacobowitz + + - debian/control.in/main: Update binutils dependency for !s390. + + - debian/patches/linuxthreads-push-pop.dpatch: Add __libc_cleanup_push + and __libc_cleanup_pop. + - debian/patches/syslog-backrev.dpatch: Remove, no longer necessary. + This should fix the crashes in syslog without libpthread loaded. + + - debian/patches/linuxthreads-jumptable-wine.dpatch: Move + pthread_cond_timedwait out of the way, so that it doesn't break + the way Wine pokes into this structure (Closes: #210347). + + - debian/patches/ia64-memccpy.patch: Fix a segfault on ia64 + (Closes: #210441). + + -- Daniel Jacobowitz Fri, 12 Sep 2003 14:56:19 -0400 + +glibc (2.3.2-6) unstable; urgency=low + + * Phil Blundell + + - debian/control.in/main: require kernel-headers-2.4.20-m68k (>= + 2.4.20-1) for m68k. Requested by Adam Conrad . + + - debian/patches/pthread_cond_timedwait.dpatch: avoid problem when + pthread_cond_timedwait is used in code that doesn't link with + -lpthread. (Closes: #209139) + + * GOTO Masanori + + - debian/sysdeps/kfreebsd-gnu.mk: Added to support kfreebsd-gnu. + Patched by Robert Millan . (Closes: #206663) + - debian/sysdeps/freebsd.mk: Dropped because of replacing kfreebsd-gnu.mk. + - debian/sysdeps/soname.mk: Modified from freebsd to kfreebsd-gnu. + + -- Philip Blundell Mon, 8 Sep 2003 08:51:49 +0100 + +glibc (2.3.2-5) unstable; urgency=low + + * Phil Blundell + + - debian/control: change section for -pic, -dbg, -prof packages + from devel to libdevel. + + - debian/control.in/main: add Build-Depends changes from 2.3.2-3 + here as well. + + - debian/packages.d/*.mk: add md5sums for generated packages, + thanks to Petr Konecny. (Closes: #158354) + + - debian/patches/80_glibc232-locales-header.dpatch: adjust + filenames so patch applies correctly. + + - debian/locales/DEBIAN/config: The "Leave alone" option has been + removed, but locale-gen crashes if it was set by a previous run, + so really discard it. Patch by Denis Barbier (Closes: #204958) + + - debian/patches/lo_LA.UTF-8_not_supported.dpatch: remove this + locale from SUPPORTED file; requested by Denis Barbier. + (Closes: #205118) + + - debian/patches/nss_compat-shadow: fix problem with shadow + passwords and NIS. Patch from Thorsten Kukuk. (Closes: #204711) + + * GOTO Masanori + + - debian/control.in/libc: Add more missing change section for -pic, + -dbg, -prof packages from devel to libdevel. + - debian/control.in/libc-dbg: likewise. + + - debian/patches/80_glibc232-locales-header.dpatch: Fix an_ES, + wa_BE, yi_US localedata header. (Closes: #194289) + + - debian/locales/usr/sbin/locale-gen: Add "unset POSIXLY_CORRECT" + because if user set POSIXLY_CORRECT, this script is interrupted. + (Closes: #206784) + + - debian/patches/glibc22-ttyname-devfs.dpatch: Fix one byte leak + in getttyname_r. Patched by Hunor Csordas . + (Closes: #194637) + + - debian/sysdeps/freebsd.mk: Modified config-os from freebsd-gnu + to kfreebsd-gnu. Patched by Robert Millan . + (Closes: #206663) + + - debian/patches/80_glibc232-iconvdata-fix.dpatch: Fix cp932 + does not work. (Closes: #205679) + + -- Philip Blundell Tue, 26 Aug 2003 22:51:03 +0100 + +glibc (2.3.2-4) unstable; urgency=low + + * Jeff Bailey + - debian/locales/DEBIAN/postinst: Use tail -n 1 instead of tail -1. + Thanks to Jurij Smakov (Closes: #206464) + + * Phil Blundell + - debian/patches/glibc23-arm-waitpid.dpatch: deleted. + - for arm, Build-Depend on kernel-headers 2.4.19-4 or newer. + (Closes: #206895) + - debian/patches/revert-old-libio.dpatch: back out changes causing + problems with fseek in binaries linked with glibc 2.0. + (Closes: #206839) + - debian/libc/DEBIAN/postinst: also restart cucipop (Closes: #206783) + - debian/patches/arm-output-format.dpatch: Very bad hack to avoid + problem with libc.so on ARM until a proper fix is forthcoming. + - debian/patches/81_glibc232-utimes-fix.dpatch: replace with version + that applies cleanly to current sources. + - debian/control: require sed 4.0.5-4 or later. + + * GOTO Masanori + + - debian/po/es.po: Updated Spanish (es) debconf template. + Patched by Carlos Valdivia Yagüe . + - debian/patches/81_glibc232-utimes-fix.dpatch: Fix utimes wrong time + calculation. Patched by Paul Eggert . + (Closes: #204728, #202243, #205110) + + -- Philip Blundell Tue, 26 Aug 2003 17:27:00 +0100 + +glibc (2.3.2-3) unstable; urgency=low + + * GOTO Masanori + + - debian/patches/80_glibc232-futimes-buildfix.dpatch: Fix build failure + on arm, mips, mipsel, due to be missing #include . + (Closes: #204768) + + - debian/libc/DEBIAN/preinst: Modified chown owner:group separater from + `.' to `:', according to POSIX 1003.1-2001. (Closes: #205527) + - debian/packages.d/glibc-doc.mk: likewise. + - debian/packages.d/libc-dbg.mk: likewise. + - debian/packages.d/libc-dev.mk: likewise. + - debian/packages.d/libc-pic.mk: likewise. + - debian/packages.d/libc-prof.mk: likewise. + - debian/packages.d/libc-udeb.mk: likewise. + - debian/packages.d/libc.mk: likewise. + - debian/packages.d/locales.mk: likewise. + - debian/packages.d/nscd.mk: likewise. + - debian/packages.d/optimized.mk: likewise. + - debian/packages.d/s390x.mk: likewise. + - debian/packages.d/sparc64.mk: likewise. + + - debian/libc/DEBIAN/postinst: Restarting script supported dovecot. + (Closes: #205566) + + - debian/po/pt_BR.po: Updated Brazilian Portuguese (pt_BR) debconf + template. Patched by Andre Luis Lopes . + (Closes: #195873) + - debian/po/nl.po: Added nl.po debconf template. Patched by + Bart Cornelis . (Closes: #205090) + + -- GOTO Masanori Fri, 8 Aug 2003 20:32:24 +0900 + +glibc (2.3.2-2) unstable; urgency=low + + This is the "fleeing to the horizon" release... + + * GOTO Masanori + + - debian/patches/glibc23-arm-waitpid.dpatch: Fix arm ld-linux failure due + to sys_waitpid missing. Patched by Philip Blundell . + - debian/patches/50_glibc232-arm-dwarf2-buildfix.dpatch: Avoid arm dwarf2 + build failure. Patched by Philip Blundell . + - debian/patches/50_glibc232-m68k-dwarf2-buildfix.dpatch: Avoid m68k + dwarf2 build failure. Suggested by Philip Blundell , + Andreas Schwab . + - debian/libc/DEBIAN/postinst: Modified watermark of restarting NSS + services from 2.1.94-1 to 2.3.2-2, because libnss_compat is changed in + 2.3.2-1 (2003-06-17 Upstream change). + - debian/patches/80_glibc232-wcsmbs-fix.dpatch: Added to fix wcsmbs bugs + which is lacked in 2003-07-15 upstream cvs. (Closes: #202969) + + - These bugs are fixed in this update: + * Bug in dlopen/dlclose leads to segfaults with kdecore is fixed in this + version. (Closes: #201221) + * Static linking adjtimex() on alpha failed to compile due to undefined + reference to `__adjtimex_tv32'. It's fixed in this version. + (Closes: #186331) + + * Jeff Bailey + - debian/packages.d/s390x.mk: Remove gcc-3.2 hardcode + + * Phil Blundell + - debian/patches/alpha-crti.dpatch: remove stray .prologue causing + alpha build failure. + - debian/patches/alpha-pwrite.dpatch: add missing __GI___pwrite64 alias. + - debian/control: demand binutils 2.14.90.0.5-0.1 or later (required + for .usepv on alpha) + + -- GOTO Masanori Sat, 19 Jul 2003 00:37:11 +0900 + +glibc (2.3.2-1) experimental; urgency=low + + ** UPLOADING THIS TO EXPERIMENTAL ** + + * Clint Adams + - debian/control: build-dep on gcc-3.3 for sparc(64) + - debian/rules: re-enable sparc64 build + - debian/packages.d/sparc64.mk: use gcc-3.3 to build sparc64 + - debian/sysdeps/linux.mk: re-enable sparc64 build + + * Jeff Bailey + - debian/patches/hurd-enable-ldconfig.dpatch: New file + - debian/packages.d/libc.mk: Install regular ldconfig, not + debian/ldconfig-hurd.sh on hurd-i386 + - debian/patches/0list: Add hurd-enable-ldconfig + - debian/sysdeps/paths.mk: Comply with FHS, use $(prefix)/lib, not + $(prefix)/libexec + - debian/rules: Introduce "perfect_make_check_archs" concept - + arch's listed in this variable must pass make check cleanly, + or the build will fail. Start off with i386, powerpc, sparc, alpha + and s390. + - debian/control.in/main: Build-dep on gcc-3.3 + - debian/sysdeps/tools.mk: Use gcc-3.3 + - debian/patches/sparc32-buildfix.dpach: Prune after yet another CVS + update + - debian/patches/syslog-backrev.dpatch: New file + + * GOTO Masanori + - Updated glibc 2.3.2. + - debian/patches/cvs.dpatch: rename it to 10_cvs.dpatch. + I plan to introduce <2digitnumber>_.dpatch filename. + - debian/patches/10_cvs.dpatch: update 2003-07-15 upstream cvs. + - version: bump up to 2.3.2. + - rules.d/shlibs.mk: bump up to 2.3.2. + - debian/sysdeps/sysdeps.mk: i386 optimization level is back to -O2. + + - These debian/patches/ are removed from cvs because + they are no longer being used and were superceeded by CVS patches: + * document-fix.dpatch + * glibc23-cert-rpcxdr.dpatch + * glibc23-getdents64-fix.dpatch + * glibc23-getaddrinfo.dpatch + * glibc23-hppa-shmlba.dpatch + * glibc23-m68k-madv.dpatch + * glibc23-malloc-check.dpatch + * glibc23-regcomp.dpatch + * signal-texi.dpatch + * glibc23-ia64-strncpy.dpatch + * elf-machine-rela-mips.dpatch + * glibc23-linuxthreads-fix.dpatch + * locales-monetary.dpatch + + - These debian/patches/ are removed from cvs because + they are no longer being used and already fixed the previous versions: + * rtsig.dpatch + * crypt.dpatch + * s390x-lib64.dpatch + * hurd-fork-fix.dpatch + + - These debian/patches/ are fixed to apply for glibc + 2.3.2 + cvs.dpatch. + * alpha-pic.dpatch: Fix the diff conflict. + * glibc23-hppa-Rminkernel.dpatch: likewise. + * libgcc-compat-all.dpatch: remove reflected entries in glibc-2.3.2. + * libgcc-compat-other.dpatch: likewise. + * ldconfig.dpatch: modify to be enable to compile again + + - These bugs are fixed in this update: + * glibc 2.3.2 can handle errno correctly if 32 bit uid or gid is used + and errno=ENOSYS is defined before geteuid() is called. + setfsuid(), setfsgid() and getgroups() are also fixed with my patch, + bug reported by Fumihiko Kakuma. (Closes: #183694) + * Submitter Neil's patch is applied in the upstream. (Closes: #181701) + * cfmakeraw definition in manual terminal.texi is fixed with my patch. + It can be reassign only to manpages-dev. + * sparc and powerpc has O_DIRECT definition in fcntl.h. + (Closes: #157142, #157143) + * The definition both __bswap_16 and __bswap_32 in bits/byteswap.h is + fixed and it can be ready for non-gcc C-compilers. (Closes: #181910) + * BSD derived random functions are correctly braced into #if defined + __USE_BSD with my patch. (Closes: #108619) + * Dynamic loading problems with the recent OpenOffice.org, KDE, + Wine/Mono, Quake3 Arena, Oracle, and NVidia libGL library, is fixed. + Glibc TLS does not properly handle using dlopen() to access shared + libraries which utilize some TLS models. + (Closes: #171695, #184696, #167564, #192096, #200386) + * Missing ntp_adjtime weak reference on alpha is defined. + (Closes: #182654) + * Sparc64 sysdep.h typo is fixed. (Closes: #185648) + * stdio-common/sscanf.c for libc6-sparc64 with gcc-3.3 can become to be + compiled. (Closes: #185649) + * Timezone data is updated to tzdata2003a. + (Closes: #140788, #149862, #186210, #164719, #190322) + * /usr/bin/locale -a searches both /usr/lib/locale// and + /usr/lib/locale/locale-archive in this release. (Closes: #166979) + * Powerpc fpu_control.h is fixed to be enable to compile _FPU_SETCW + macro. (Closes: #137020) + * The IA-64 versions of __sigsetjmp() and getcontext failed to restore + ar.unat before returning, is fixed in this version. (Closes: #186654) + * regcomp() crashed with some regexp pattern is fixed. + (Closes: #187475) + * pthread_atfork() is removed from unistd.h. Including this definition + in unistd.h is implementation dependent issue, and the upstream + decided not to keep it. (Closes: #106254) + * It's fixed that malloc_stats() segfaults if you don't first allocate + memory. (Closes: #191295) + * Typo in the symbol lookup code is fixed, which causes the loading of + the oracle binary to fail (and possibly affects other apps as well). + (Closes: #191952) + * The abday values for de_DE is changed to two letters. (Closes: #115536) + * IA64 umount needs to set second parameter for sys_umount. It's fixed + in 2003-05-14 cvs. (Closes: #193327) + * tmpfile64() is now available on hurd-i386. (Closes: #171022) + * SIOCSIFNAME is added. (Closes: #164638) + * cos() now correctly returns the cosine, not the sine, of values near + 0.80 on machines lacking an optimised libm. (Closes: #153548) + * ioperm() returns -ENODEV on ARM machines without ISA or PCI. + (Closes: #199134) + + - debian/locales/usr/sbin/locale-gen: Fix the localedef invocation + argument order, to run under POSIXLY_CORRECT=1 environment. + (Closes: #185924) + + - debian/sysdeps/depflags.pl: add Suggests: manpages-dev in libc-dev + package. (Closes: #158410) + - debian/sysdeps/depflags.pl: Adding entry "Suggests: glibc-doc" + into depflags.pl push. + - debian/control.in/libc: Remove "Suggests: glibc-doc" in each -dev + package entry. + - debian/control: likewise. + + - debian/patches/s390-tls.dpatch: add to build glibc 2.3.2 on s390. + The correct fix is to modify the kernel headers, but for the present + we use it regardless of the kernel issue. + Patched by Gerhard Tonn . + - debian/packages.d/libc-dev.mk: s390 kernel-headers package does not have + generate-asm.sh. The current libc-dev.mk assumes the existence of this + script, but on s390 it's not existed. Now libc-dev.mk s390 asm setup + part does not use generate-asm.sh, and has the generate-asm.sh + functionality in its own. This makes s390 which has 32/64 bit multi + libraries are much easier to build. + Patched by Gerhard Tonn . + - debian/packages.d/s390x.mk: likewise. + + - debian/locales/DEBIAN/postinst: add "rm -rf /usr/lib/locale/*" + to remove all old locale dir and locale-archive in locales + configuration time. Requested by Denis Barbier . + - debian/locales/DEBIAN/config: /usr/lib/locale/* files are no more + deleted when /etc/locale/gen is not managaed by debconf. Patched by + Denis Barbier + - debian/locales/DEBIAN/postinst: likewise. + + - debian/locales/DEBIAN/{config,postinst,templates}: Debconf must not + be used to store configuration items; another even more important is + that user changes in configuration files must be preserved. + These files are now fixed with this issue. Patched by Denis Barbier + . Some suggestions by Joey Hess . + - debian/locales/DEBIAN/config: + * Replace /bin/bash by /bin/sh on the shebang line. + * Add support for backing up. + * Parse configuration files and set debconf values. + - debian/locales/DEBIAN/postinst: + * Recreate configuration files from debconf values and run locale-gen + * As explained by Joey Hess, this script should be safer because some + border cases are now taken into account: configuration files might + have no EOL at EOF, and line order is preserved. + - debian/locales/DEBIAN/templates: + * Apply patch from #117509 and another typo fix by Joey Hess + (Closes: #117509) + * In locales/locales_to_be_generated, Choices is no more translatable + because it is set to Choices: ${locales} + - debian/locales/usr/sbin/locale-gen: + * Clean up /usr/lib/locale/ before generating locales + - debian/po/{ca.po, de.po, es.po, fr.po, ja.po, ko.po, pt_BR.po, ru.po, + templates.pot}: update with debconf-updatepo. + + - debian/control: Change Section: from devel to libdevel for packages: + libc0.3-dev, libc6-dev, libc6-dev-s390x, libc6-dev-sparc64, libc6.1-dev + and libc1-dev. + - debian/control.in/libc: likewise. + - debian/control.in/s390x: likewise. + - debian/control.in/sparc64: likewise. + + - debian/control: Remove "Conflicts: php4" from libc1 and libc0.3. + - debian/control: Add "Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 + (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7)" to fix /usr/lib/64 vs + /usr/lib64 issue with upgrading from woody for sparc64 (see bug 156947). + Suggested by Dagfinn Ilmari Mannsaker . + (Closes: #188383, #193331) + - debian/control.in/sparc64: likewise. + + - debian/copyright: update the version and the year 2003. + + - debian/patches/locales-monetary.dpatch: add to change some locales + LC_MONETARY symbols: ar_SD, sr_YU, sr_YU@cyrillic, and es_EC. + And now this patch is merged into the upstream cvs, drop dpatch. + (Closes: #160040, #173963, #185342, #187142, #188159, #190785, #193020) + (Closes: #193508, #193509, #193510, #194791) + + - debian/manpages/localedef.1: remove "-h" from --help option entry. + (Closes: #187621) + + - debian/debver2localesdep.pl: add clever version recognition for binary + only NMU or source NMU/local packaging. + Patched by Gerhard Tonn . + + - debian/patches/glibc23-linuxthreads-fix.dpatch: add to revert Jakub's + change in 2003-04-02 to be enable to compile librt.so for the present. + And this bug is fixed during the development, this patch is dropped now. + Thanks to Jack Howarth . + + - debian/libc/etc/init.d/devpts.sh: Modify mounting devpts for 2.5.68 and + later. As of 2.5.68, devpts is not automounted when using devfs. So + even in that case, devpts needs to be mounted via the devpts.sh script + as well as the case that devfs is not used. + (Closes: #189792, #189879, #191785) + + - debian/libc/DEBIAN/postinst: Add code to remove a relic of the past + /usr/doc/ symlinks. This script should keep at least until + sarge release. (Closes: #189854) + - debian/glibc-doc/DEBIAN/postinst: likewise. + - debian/locales/DEBIAN/postinst: likewise. + - debian/nscd/DEBIAN/postinst: likewise. + - debian/libc/DEBIAN/postinst: Remove symlinks for libc-{dbg,dev,pic,prof}. + + - prep.sh: Add NPTL extract code. + - version: Add NPTL version. + + - debian/packages.d/sparc64.mk: bumping up --enable-kernel version from + 2.4.0 to 2.4.1. + - debian/packages.d/s390x.mk: likewise. + + - debian/patches/50_glibc232-mips-buildfix.dpatch: add for building + mips/mipsel correctly. Patched by Guido Guenther , + Thiemo Seufer . + + - debian/packages.d/libc-udeb.mk: libc-udeb includes libnss_dns and + libresolv. (Closes: #192577) + + - debian/patches/50_glibc23-hppa-entry.dpatch: added to fix funcptr + (function descriptors) for _start on hppa, so we need a + sysdeps/hppa/elf/entry.h (similar to ppc64, ia64, etc). + Patched by Randolph Chung . (Closes: #193656) + + - debian/patches/30_glibc232-base.dpatch: add that binutils 2.14.90.0.2 + has entered in sid, which contain the binutils portion of the base fix. + Reported by Jack Howarth . + + - debian/patches/sparc32-buildfix.dpatch: added to fix sparc32 build. + + * Ben Collins + - debian/contron.in/sparc64: Remove the superflous (and incorrect) dep on + gcc-3.2 for libc6-dev-sparc64. Add lib64gcc1 as a dep for libc6-sparc64. + - Use CC for building sparc64 libs. + - Remove build-dep for gcc-3.3 on sparc. + - Really fix devpts.sh so that it mounts devpts whenever devpts is + available and not mounted. + - sparcv8-target.dpatch: New patch that enables v8 optimizations for + sparc-linux compiles. Debian specific. For some reason config.sub + doesn't recognize sparcv8, else I'd just pass sparcv8-linux as the host + target. + - Change how things are passed to configure for optimized packages, so + that we let glibc set all the optimizations for us. + - Change how sparc64 and s390x are built. Before the binary stage would + force the build of the packages. Now, the build/install phases dep on + the same for sparc64 and s390x. Same way that the OPT packages are done. + + -- Jeff Bailey Tue, 15 Jul 2003 14:35:58 -0400 + +glibc (2.3.1-17) unstable; urgency=low + + * GOTO Masanori + - debian/libc/DEBIAN/preinst: Add NSS restarting preinstallation + service detection routine and messages. xdm, kdm, gdm, + postgresql, xscreensaver needs user's hand restart. + (Closes: #165258, #165915, #184036, #184495, #188724) + - debian/libc/DEBIAN/postinst: Edit NSS restarting messages to + adopt some preinst messages. + - Cleanup optimized and sparc64 builds. + + -- GOTO Masanori Sat, 19 Apr 2003 22:01:40 +0900 + +glibc (2.3.1-16) unstable; urgency=high + + * GOTO Masanori + - debian/patches/glibc23-cert-rpcxdr.dpatch: Fix "CERT Advisory + CA-2003-10 Integer overflow in Sun RPC XDR library routines" + (Closes: #185508). + + - debian/packages.d/glibc-doc.mk: Fix unneeded file '[' and ']' in + /usr/share/man/man3. + - These debian/patches/ are removed from cvs because + they are no longer being used and were superceeded by CVS patches: + - libgcc-compat-mips.dpatch + - libgcc-compat-sparc.dpatch + - debian/libc/DEBIAN/postinst: add spamassassin to restart during + upgrade from 2.2 to 2.3. (Closes: #185275) + - debian/control.in/opt: add one empty line at the end of file. + This fix avoids opt packages to get mixed debian/control + message with libc-udeb package. (Closes: #185688) + + -- GOTO Masanori Tue, 18 Mar 2003 00:04:13 +0900 + +glibc (2.3.1-15) unstable; urgency=low + + * GOTO Masanori + - debian/packages.d/optimized.mk: drop configure --disable-static + option, because it does not work. enable-kernel version bumps + up to 2.4.1. + + - debian/manpages/nscd.8: Apply slightly improvement for the nscd(8), + nscd_nischeck(8), and nscd.conf(5) man pages. Patched by + Sebastian Rittau (Closes: #94058) + - debian/manpages/nscd.conf.5: likewise. + - debian/manpages/nscd_nischeck.8: likewise. + - debian/manpages/zdump.1: add the description that zonename should be + relative path name from /usr/share/zoneinfo. (Closes: #171017) + - debian/manpages/locale.1: add the description for LOCPATH. + (Closes: #176661) + + - debian/locales/DEBIAN/templates: Add a description "what is the + locale?". (Closes: #119197) + - debian/FAQ: Add description how to setup your own locale with + debconf + locales. (Closes: #99763) + + - debian/locales/DEBIAN/templates: Introducing new templates format + with po-debconf. Thanks to Denis Barbier . + - debian/packages.d/locales.mk: likewise. + - debian/po/*: likewise. + - debian/control.in/main: Build-Depends-Indep: po-debconf. + - debian/po/ja.po: Update translation data. + - debian/po/fr.po: Update translation data. Translated by + Denis Barbier . (Closes: #183652, #193083). + + - debian/sysdeps/depflags.pl: Remove conflicts: file-rc (<< 0.7.0) + - debian/libc/DEBIAN/postinst: Use /usr/sbin/update-rc.d in updatercd(), + suggested by Anthony Towns . + - debian/libc/DEBIAN/postinst: Check /usr/{lib,share}/file-rc/ + because file-rc >= 0.7.0 does not use /usr/lib/file-rc. + + - debian/patches/glibc23-hppa-compat.dpatch: add hppa libgcc-compat + symbols patch, patched by Randolph Chung . + - debian/patches/libgcc-compat-all.dpatch: update for mips and add + for alpha, patched by Guido Guenther . + - debian/patches/libgcc-compat-other.dpatch: add for arm, m68k, ia64 + and s390. Patched by GOTO Masanori . + + - debian/locales/usr/sbin/locale-gen: add "set -e" in order to return + value. (Closes: #183449) + + - debian/packages.d/libc-udeb.mk: contain libpthread.so to support + installer using pthread. (Closes: #183155) + + - debian/sysdeps/depflags.pl: remove php4 conflicts from libc6. + (Closes: #183477, #184091) + + - debian/libc/DEBIAN/postinst: add proftpd-{ldap,mysql,pgsql} to + restart during upgrade from 2.2 to 2.3. (Closes: #184129) + - debian/libc/DEBIAN/postinst: add cupsys. (Closes: #184257) + + - debian/patches/glibc23-m68k-madv.dpatch: add to fix build error + for some MADV_* used software on m68k, pulled from the latest cvs. + (Closes: #159723, #181661, #184589) + + - debian/patches/glibc23-00-hppa-pthreads.dpatch: add to improve + linuxthreads on hppa. Pathced by Carlos O'Donell + . His summary: LinuxThreads is now using a + self-aligning lock. + - debian/patches/glibc23-hppa-malloc8.dpatch: add to improve malloc + on hppa. Patched by Carlos O'Donell . + His summary: Malloc alignment has been moved back to 8 for optimal + performance. + + - These debian/patches/ are removed from cvs because + they are no longer being used and were superceeded by CVS patches: + - glibc23-02-hppa-min-kern-unwind-fde.dpatch + - glibc23-03-hppa-mcontext.dpatch + - glibc23-04-hppa-fcntl64.dpatch + - glibc23-05-hppa-buildhack.dpatch + - glibc23-06-hppa-tests.dpatch + - glibc23-08-hppa-configure.dpatch + + - Glibc 2.3 uses another regex engine: "sed: woody version more than + 1000 times slower than potato version" should be fixed. + (Closes: #155751) + - en_CA can generate without warnings. In addition, we use debconf + interface in these days, this kind of "manual edit /etc/locale.gen" + bug should be avoided. (Closes: #151631) + - libc6.postinst restarts samba in these days. (Closes: #168189) + - _FPU_SETCW/_FPU_GETCW macro works fine on powerpc in these days. + "Incorrect macro _FPU_SETCW in " should be fixed. + (Closes: #137020) + - hyper and unsigned hyper are supported in the current glibc. + "rpcgen(1) doesn't handle 64 bit types" should be fixed. + (Closes: #69041) + + -- GOTO Masanori Wed, 26 Feb 2003 18:44:08 +0900 + +glibc (2.3.1-14) unstable; urgency=low + + * GOTO Masanori + - debian/patches/glibc23-cmov.dpatch: Fix hwcap condition code again, + previous version did not work properly under some situation. + - debian/sysdeps/depflags.pl: Fix libnss-db dependency from << 2.2-6 + to <= 2.2-6.1.1, because the first version of libnss-db to work + with libc6 2.3 is 2.2-6.1, and 2.2-6.2 works under all architectures + correctly. Suggested by Ryan Murray . + (Closes: #181834) + - debian/sysdeps/depflags.pl: Fix libc6.postinst breakage with file-rc + (<< 0.7.0), now libc6 conflicts them. (Closes: #181683, #182320) + + -- GOTO Masanori Fri, 21 Feb 2003 09:19:45 +0900 + +glibc (2.3.1-13) unstable; urgency=low + + * GOTO Masanori + - debian/libc/DEBIAN/postinst: Replace from "/usr/lib/file-rc" to + "/usr/share/file-rc" to follow up file-rc 0.7. + (Closes: #181551, #181556, #181606) + - debian/libc/etc/init.d/devpts.sh: Fix devpts.sh failure if + $devfs_mounted is empty. (Closes: #181541, #181591) + + -- GOTO Masanori Wed, 19 Feb 2003 09:26:17 +0900 + +glibc (2.3.1-12) unstable; urgency=low + + * GOTO Masanori + - debian/patches/glibc23-malloc-check.dpatch: Fix hppa MALLOC_CHECK_ + invalid pointer problem. (Closes: #177242) + - debian/patches/libgcc-compat-sparc.dpatch: Fix sparc libgcc compat + symbol problem. Patched by Guido Guenther + (Closes: #178645) + - debian/patches/locales-supported.dpatch: This dpatch addes many + locales especially for UTF-8 and ISO-8859-15, to display debconf + locale menu using SUPPORTED.orig. + (Closes: #135334, #154556, #177472, #99623, #130517) + - debian/packages.d/glibc-doc.mk: add pthread_{getspecific, key_delete, + setspecific} manpage symlinks to pthread_key_create. (Closes: #99530) + - debian/manpages/ldconfig.8: Update from the redhat manpages. + (Closes: #180916) + - debian/patches/libgcc-compat-all.dpatch: Fix i386 libgcc compat + symbol problem, this dpatch merges with + libgcc-compat-{sparc,mips}.dpatch, patched by Guido Guenther + . (Closes: #179781, #180330) + - debian/locales/DEBIAN/{postinst,templates,config}: Fix default + environment variable "Leave alone" does not affect its meaning. + (Closes: #180040) + * Daniel Jacobowitz + - debian/libc/etc/init.d/devpts.sh: Update devpts.sh to work with the + new grep package (Closes: #181409). + + -- GOTO Masanori Sat, 8 Feb 2003 22:08:59 +0900 + +glibc (2.3.1-11) unstable; urgency=low + + * GOTO Masanori + - debian/libc/DEBIAN/preinst: Fix silly bug at parisc64 kernel version + check, replace from $ver to $kernel_ver. (Closes: #178159, #178217) + - debian/patches/glibc23-cmov.dpatch: Fix hwcap inappropriate handling + not to load CMOV libraries (/*/lib/i686/cmov/) on VIA C3 architecture. + - debian/patches/libgcc-compat-mips.dpatch: Fix undefined some symbols + like __umoddi3 to export libgcc compat symbol. Patched by + Guido Guenther . + - debian/patches/0list: Disabled ldso-disable-hwcap.dpatch because + (1) -opt is not provided currently, (2) disabling hwcap is not good + way whether -opt package is installed or not. + + -- GOTO Masanori Wed, 22 Jan 2003 22:17:45 +0900 + +glibc (2.3.1-10) unstable; urgency=low + + * The "trudging the sludge" release. + + * GOTO Masanori + - debian/packages.d/glibc-doc.mk: install linuxthreads/man/*.man + manpages into glibc-doc package. (Closes: #155794) + - debian/libc/DEBIAN/preinst: add kernel version check compared with + 2.4.19-pa17 on parisc64. Suggested by Randolph Chung. + - debian/libc/DEBIAN/preinst: add kernel version requirement for + 2.5.53-pa3 in 2.5 series kernel on parisc64. + - debian/locales/DEBIAN/config, debian/locales/DEBIAN/templates: + add translated selection "Leave alone" and "None" because such strings + were hardcoded and could not be localized in the templates file. + Patched by Denis Barbier . (Closes: #171502) + - debian/packages.d/glibc-doc.mk: Fix glibc-doc dangling symbolic link for + /usr/share/doc/glibc-doc/html/index.html. (Closes: #169878, #176701) + - debian/libc/DEBIAN/postinst: Fix to work $DEBIAN_FRONTEND value + regardless its case insensitivity. See #176483. + - debian/sysdeps/depflags.pl: Fix again to conflict against wine + (<< 0.0.20021007-1) and php4 (<< 4:4.2.3-5). (Closes: #170385) + - debian/control: Fix unneeded Conflicts: wine and php4, as denoted above. + - debian/control.in/libc: likewise. + - debian/patches/glibc23-cmov.dpatch: Add CMOV to hwcap, for VIA C3 which + is i686 class processor, but does not have 686 optional instruction CMOV. + - debian/patches/glibc23-regcomp.dpatch: Fix regex crash, if clearing + buffer, clear allocated too. This patch is pulled from the current + upstream glibc cvs. (Closes: #175529) + + * Daniel Jacobowitz + - debian/patches/alpha-pic.dpatch: Fix errno reporting from syscalls + on Alpha (Closes: #175511). + + -- GOTO Masanori Sun, 5 Jan 2003 09:13:22 +0900 + +glibc (2.3.1-9) unstable; urgency=low + + * Daniel Jacobowitz + - debian/packages.d/s390x.mk: Don't try to install CVS directories + (Closes: #174267). + - debian/packages.d/optimized.mk, debian/packages.d/sparc64.mk: + Likewise. + - debian/patches/glibc23-errno.dpatch: Updated for "h_errno" and "_res" + also. + - Upload properly this time, with a .diff.gz (Closes: #174436). + + * GOTO Masanori + - debian/patches/glibc23-hppa-shmlba.dpatch: Applied hppa SHMLBA + definition. (Closes: #170507) + - debian/libc/DEBIAN/postinst: add mysql-server in restarting service + list. (Closes: #172123) + - debian/patches/document-fix.dpatch: Applied patches sent by + H. S. Teoh and GOTO Masanori. (Closes: #117680) + - debian/patches/glibc23-asserth-decls.dpatch: Applied patches send by + Jeroen T. Vermeulen . (Closes: #106253, #164571) + - debian/libc/DEBIAN/postinst: Removed 'logind' from checking list + because it does not exist. + - debian/libc/DEBIAN/postinst: Replaced dpkg -s from apache2 to + apache2-common correctly. + - debian/libc/DEBIAN/postinst: Redirect dpkg stderr message to /dev/null, + which is showed if there are not installed packages. (Closes: #168481) + - debian/libc/DEBIAN/postinst: Message typo fixed as "successfully." + (Closes: #168483) + - debian/manpages/ldd.1: Updated newer version which is pulled from + RedHat manpages. + - debian/locales/usr/sbin/locale-gen: add '-A /etc/locale.alias' into + localedef option to consult locale alias name when making archives. + + -- Daniel Jacobowitz Thu, 2 Jan 2003 12:02:13 -0500 + +glibc (2.3.1-8) unstable; urgency=high + + * Daniel Jacobowitz + - debian/patches/glibc23-errno.dpatch: Temporarily re-enable linking + to "errno" to fix compatibility with broken binaries + (Closes: #174040, #174004). + - debian/patches/glibc23-getaddrinfo.dpatch: Add getaddrinfo patch + from CVS (Closes: #174027). + - debian/control.in/main: Add myself to Uploaders. + + -- Daniel Jacobowitz Tue, 24 Dec 2002 12:35:39 -0500 + +glibc (2.3.1-7) unstable; urgency=high + + * The "Climb Ev'ry Mountain" release. + + * GOTO Masanori + - debian/packages.d/s390x.mk: typo fixed, s390x-linux should be + ok to rebuild. (Closes: #173874) + - debian/patches/glibc23-getdents64-fix.dpatch: Fix getdents64 + failure on linux kernel 2.2. (Closes: #173913) + + * Jeff Bailey + - sysdeps/linux.mk: Finish disabling sparc64. + + -- GOTO Masanori Sun, 22 Dec 2002 01:35:43 +0900 + +glibc (2.3.1-6) unstable; urgency=low + + * The "I will not be thwarted" release. + + * Daniel Jacobowitz + - Update glibc23-ctype-compat.patch to fix segfaults in old static + binaries (Closes: #171451). + - Allow building from the CVS checkout without getting CVS dirs in the + resulting packages. Whew. + + * Jeff Bailey + - debian/patches/cvs.dpatch: Update. + (Closes: #171550, #170507) + - debian/patches/0list: Update + - debian/control.in/libc: Conflict against wine (<< 0.0.20021007-1) + (Closes: #170385) + Also conflict against php4 (<< 4:4.2.3-5) + Thanks to Steve Langasek for hunting this down! + - debian/rules: Disable sparc64 build targets for now. + - debian/packages.d/s390x.mx: Setup the 64 bit build as a cross-compile, + because 's390' cannot run binaries intended for 's390x' + + * GOTO Masanori + - cvs.dpatch update resolve some bugs (Closes: #169919, #165603) + - debian/patches/glibc23-hppa-Rminkernel.dpatch: Added hppa kernel + version checking due to prevent people from installing unmatched version. + Patched by Carlos O'Donell (Closes: #171804) + - debian/libc/DEBIAN/preinst: likewise. + - glibc23-function-compat.dpatch: Added for some bad application to + keep running and not to resolve some symbols like __libc_wait, + __libc_waitpid, so on. This patch will be removed when sarge will be + relased apparently. (Closes: #165358, #173201) + + - debian/locales/DEBIAN/config: db_set is set if and only if locale.gen + is existed. Patched by Masato Taruishi + His note: + The previous config script always set locales_to_be_generated + even when /etc/locale.gen doesn't exist. So the question in + dpkg-preconfigure time became empty in dpkg --configure locales time. + This change resolves long outstanding locales bug. + (Closes: #156386, #151784, #154244, #164523) + + -- Daniel Jacobowitz Mon, 2 Dec 2002 17:26:38 -0500 + +glibc (2.3.1-5) unstable; urgency=low + + * This is the "Leonids" release. + + * Jeff Bailey + - debian/packages.d/libc-udeb.mk: Do not rename file to SONAME if it's + a symlink. Needed for hurd-i386. + - debian/patches/signal-texi.dpatch: New file to remove link to + linuxthreads manual. Needed for hurd-i386. + + Welcome back, hppa: + + - debian/patches/glibc23-00-hppa-pthreads.dpatch + - debian/patches/glibc23-01-hppa-dl-machine.dpatch + - debian/patches/glibc23-02-hppa-min-kern-unwind-fde.dpatch + - debian/patches/glibc23-03-hppa-mcontext.dpatch + - debian/patches/glibc23-04-hppa-fcntl64.dpatch + - debian/patches/glibc23-05-hppa-buildhack.dpatch + - debian/patches/glibc23-06-hppa-tests.dpatch + - debian/patches/glibc23-07-hppa-atomicity.dpatch + - debian/patches/glibc23-08-hppa-configure.dpatch + Thanks to Carlos O'Donell for these! + + - debian/control.in/libc-udeb: Remove missing trailing blank line. + Thanks to Tollef Fog Heen. Closes: #169342 + - debian/control.in/s390x: Remove missing trailing blank line. + Thanks to Gerhard Tonn. + + - debian/libc/DEBIAN/postinst: Fix error in apache2 restart logic. + Thanks to Carlos O'Donell. + + - debian/packages.d/libc-dev.mk: Fix missing tabs from s390x section. + - debian/patches/s390-types.dpatch: New file to fix __ssize_t + Thanks to Gerhard Tonn for these. + + - debian/packages.d/libc-udeb.mk: use DEB_HOST_ARCH, not DEB_BUILD_ARCH + for determining package name. Fixes cross-compilation case. + + - debian/patches/0list: Update for above + + -- Jeff Bailey Mon, 18 Nov 2002 23:12:47 -0500 + +glibc (2.3.1-4) unstable; urgency=low + + * Daniel Jacobowitz + - debian/patches/cvs.patch: Fix RCS ID tags. + - debian/rules, debian/sysdeps/sysdeps.mk: Move i386 optimization + hack out of the rules file and put debugging information back in + libc6-dbg for i386 (Closes: #165892). + - debian/patches/crypt.dpatch: Fix initialization in crypt_r + (Closes: #163260). + - debian/patches/rtsig.dpatch: Fix the value of SIGRTMIN in non-threaded + applications (Closes: #165412). + - debian/rules, debian/packages.d/libc-dev.mk, + debian/packages.d/libc-udeb.mk: Don't use '{}' wildcards, to fix + building with /bin/sh -> ash. + + * GOTO Masanori + - debian/libc/DEBIAN/postinst: add more NSS services: + samba, courier-authdaemon + - debian/packages.d/sparc64.mk: fix build error. + - debian/libc/DEBIAN/postinst: modify apache2 service, + apache2 ships its init script in apache2-common, but the script + is in apache2. So replace from apache2-common to apache2 is needed. + Closes: #165959 + - debian/patches/cvs.patch: Hurd trailing slash handling fixed. + Closes: #162414 + - debian/patches/locales-stuff.dpatch: Fixed error generating de_CH, + it's caused by typo. Closes: #140054 + + * Jeff Bailey + - debian/patches/cvs.dpatch: New file. + - debian/patches/0list: Update + - debian/sysdeps/depflags.pl: Conflict against libnss-db <= 2.2-6 + Thanks to Ryan Murray for the patch. Closes: #168890 + + - debian/patches/s390x-lib64.dpatch: New file. + - debian/control.in/s390x: New file. + - debian/libc-s390x/postinst: New file. + - debian/packages.d/libc-dev.mk: Handle asm-s390x + - debian/packages.d/s390x.mk: New file. + - debian/rules: Include s390x files. + - debian/rules.d/control.mk: Add s390x to control_deps, and include + control.in/s390x + - debian/sysdeps/linux.mk: Add s390x support. + + Thanks to Gerhard Tonn. Closes: #169176, #166450. + + - debian/control.in/main: Update Standards-Version to 3.5.7.0 + + - debian/patches/glibc22-hppa-fcntl.dpatch: Remove File + - debian/patches/glibc22-hppa-fcntl-lfs.dpatch: Remove File + - debian/patches/glibc22-hppa-mcontext.dpatch: Remove File + - debian/patches/glibc22-hppa-pthreads.dpatch: Remove File + - debian/patches/glibc22-hppa-rela.dpatch: Remove File + - debian/patches/glibc22-hppa-tests.dpatch: Remove File + - debian/patches/glibc22-hppa-unwind.dpatch: Remove File + + - debian/patches/hurd-fork-fix.dpath: New File. + + Note: CVS patch disabled for this upload + + -- Daniel Jacobowitz Tue, 29 Oct 2002 13:14:51 -0500 + +glibc (2.3.1-3) unstable; urgency=low + + * GOTO Masanori + - debian/patches/librt-mips.dpatch: librt is not worked on + mips/mipsel architecture, we apply it until sarge will be + released. Thanks to Guido Guenther . + - debian/patches/glibc23-ctype-compat.dpatch: added. + glibc 2.3.x changes some symbols (__ctype_b, __ctype_toupper, + __ctype_tolower) as hidden attribute. These symbols that are + crashing the old 2.2.x dynamic linking code in static binaries + are now exported. + This patch is originally pulled from RedHat patch, I modified + it for current debian glibc. Closes: #165554 + + -- GOTO Masanori Sun, 20 Oct 2002 15:04:48 +0900 + +glibc (2.3.1-2) unstable; urgency=low + + * This is the "Why did everything stop working, mommy?" release + + * Jeff Bailey + - debian/libc/DEBIAN/postinst: Warn about NSS changes if upgrading + from older than 2.2.94-1. Add ssh-krb5 and apache2 to list of + services that definetly need restarting. + + Add libc-udeb (closes: #158589) Thanks to Tollef Fog Heen. + - debian/control.in/libc-udeb: New file + - debian/packages.d/libc-udeb.mk: New file + - debian/rules: Call udeb machinery. + - debian/rules.d/control.mk: Call udeb machinery. + + - debian/sysdeps/build-options.mk: Strip libc on alpha + + - debian/control.in/main: 2.13.90.0.10-1 is broken on s390 + require 2.13.90.0.4-1 for them. + + * GOTO Masanori + - debian/patches/0list: disable ip6-fix.dpatch. Closes: #165287 + - debian/packages.d/libc-udeb.mk: Clean up and fix indent crap. + - debian/rules.d/shlibs.mk: bump up to 2.3.1-1. Closes: #165456 + + -- Jeff Bailey Fri, 18 Oct 2002 11:27:07 -0400 + +glibc (2.3.1-1) unstable; urgency=low + + * This is the "twilight" release... + + * Jeff Bailey + - Upgrade tarballs to 2.3.1 + - version: Update to 2.3.1 + + - debian/sysdeps/linux.mk: Do not build optimized libraries + - debian/rules.d/control.mk: Likewise + + - debian/control.in/main: Require binutils 2.13.90.0.10-1 for ppc + + - debian/patches/elf-machine-rela-mips.dpatch: New file + - debian/patches/0list: Update accordingly. + + - debian/rules: Use -O on i386. This should go somewhere else, + but I want to get this release out. + + * XXX Below here was during the 2.3 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.3 + - version: Update to 2.3 + + - debian/patches/hppa-data-start.dpatch: Remove, incorporated upstream + - debian/patches/various-lsb-fixes.dpatch: Remove, incorporated upstream + + - debian/patches/0list: adjust accordingly + Also, prune ia64-reloc-none from the list. + I can't tell from the code snippet if this + has been incorporated or not. + + - .cvsignore: Add the stamp directories + + - debian/rules: Don't put CFLAGS in configparms, resolves ldconfig + miscompile on i386 + + - debian/rules: Add freebsd-i386 support + - debian/rules.d/control.mk: Add freebsd-i386 support + - debian/sysdeps/freebsd.mk: New file to add freebsd-i386 support + - debian/sysdeps/paths.mk: Add freebsd-i386 support + - debian/sysdeps/soname.mk: Add freebsd-i386 support + + * XXX Below here was during the 2.2.94 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.2.94 + - version: Update to 2.2.94 + + - debian/patches/cvs: Remove + - debian/patches/manual-texinfo4: Remove, incorporated upstream. + - debian/patches/i386-mathinline.dpatch: Remove, glibc headers require + ANSI compilers. + - debian/patches/db1-addon-enabler.dpatch: Remove + - debian/patches/0list: adjust accordingly + + - debian/patches/0list: Comment out string2-pointer-arith. + This was originally created to fix #44697, but without this + patch, 44697 is no longer reproducable. + + - debian/patches/fhs-linux-paths.dpatch: Update to new template format + + - .cvsignore: New file + + * XXX Below here was during the 2.2.93 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.2.93 + - version: Update to 2.2.93 + + The following important patches are still disabled: + + glibc22-hppa-pthreads, glibc22-hppa-rela, ia64-perf + + - debian/patches/0list: prune commented out patches that won't + be needed anymore + + - debian/patches/ia64-reloc-none.dpatch: Updated, thank to + Randolph Chung + + - debian/make-cvs-patch.sh: New file. + + - debian/patches/template.dpatch: Update headers to new format. + + - debian/patches/hurd-ioperms.dpatch - Deleted + - debian/patches/hurd-lfs64.dpatch - Deleted + - debian/patches/hurd-update.dpatch - Deleted + - debian/patches/syserrlist.dpatch - Deleted + + - debian/README - More updates + + - debian/rules.d/control.mk: debian/control should Depend on + debian/sysdeps/depflags.pl + + - debian/sysdeps/depflags.pl: Actually add the dependancy on + libdb1-compat. This is an update to GOTO Masanori's change, + Thanks to Ryan Murray for catching this. + + - debian/patches/mathpatch.dpatch: Prune + + - debian/rules.d/patch.mk: Add `setup' as an alias for `patch' + to provide dbs compatability. + + - debian/patches/cvs.dpatch: Sync with CVS from September 14th. + - debian/patches/0list: Updated + + * GOTO Masanori + - debian/packages.d/glibc-doc.mk: change texi2html processed file from + chapters.texi to libc.texinfo. Closes: #159417 + - debian/packages.d/libc-{dbg,pic,prof}.mk: fix /usr/doc removal + compilation failure. + - debian/libc/DEBIAN/postinst: Fix 'grep -v' failure if the size of + /etc/ld.so.nohwcap is 0. + - debian/rules.d/control.mk: Generate libc-opt control information. + + - Updating 2.2.9x fixes LSB 1.2 compliance. Closes: #156821 + - debian/control: add Depends: libdb1-compat. + Until woody, libdb1 is included in libc6 package. However after sarge, + libdb1 support is removed. libdb1-compat contains libdb1 which is + formerly provided by libc6. Now libc6 depends on libdb1-compat, + so upgrading from woody to sarge does not break any libdb1 issues. + Closes: #155904 + + - debian/patches/glibc22-hppa-fcntl.dpatch: added, patched by + Carlos O'Donell . + - debian/patches/glibc22-hppa-fcntl-lfs.dpatch: added, patched by + Randolph Chung . Closes: #160846 + + * Ben Collins + - Make sparc64 build use gcc-3.2. + - Update all config options to not use --disable-sanity-checks, since we + are actually using gcc-3.2 for everything. + - Patch cleanups. + - Re-enable optimized libs. Includes a simple mechanism which should fix + the conflicting symbols during libc/libc-opt upgrade scenarios. This + means that libc6-v9, libc6-i586 and libc6-i686 are back in full swing. + - Remove all references to /usr/doc symlink crap, which is deprecated. + + * XXX Below here was during the 2.2.92 development, and never released. + + * Jeff Bailey + - Upgrade tarballs to 2.2.92 + - version: Update to 2.2.92 + - debian/control.in/main: Require gcc-3.2 for all archs + - debian/patches/0list: prune glibc-cvs, glibc22-s390-resource, + gmon-start, locales-de_CH, sh-sysdep, alpha-build-failure + + These are already included in the 2.3 series. + + - debian/patches/glibc22-misc.dpatch: Split into ... + debian/patches/makeconfig.dpatch: ... this + debian/patches/locale-es_AR.dpatch: ... and this + debian/patches/i386-mathinline.dpatch: ... and this + debian/patches/ldconfig.dpatch: ... and this. + + - debian/patches/makeconfig.dpatch: Update for 2.3 series + + - debian/patches/0list: Temporarily disable some other patches: + + glibc22-hppa-pthreads, glibc22-hppa-rela, ia64-perf + + - debian/rules: memset.S works on ppc now, so stop deleting it. Thanks + to Jack Howarth for letting us know. + + - debian/sysdeps/gnu.mk: Remove --enable-libio, now set by default. Add + NO_TEST = yes, make check does not run on i386-gnu. + + - debian/sysdeps/tools.mk: Hardcode gcc-3.2 for $(CC) and $(BUILD_CC) + until gcc-defaults switches. + + - debian/rules: use CC=$(CC) when calling configure to get any changed + definitions. + + - debian/control.in/main: Require binutils (>= 2.13.90.0.4-1) + + - debian/rules: Add time/date stamps to beginning and end of log files + + - db1-addon-2.1.3.tar.bz2: Delete + + - debian/ppc-memset.S: Delete + + - debian/README: Update + + * GOTO Masanori + - debian/packages.d/libc-dbg.mk: update libpthread-0.9 -> 0.10. + - packages.d/libc.mk: likewise. + - packages.d/optimized.mk: likewise. + - packages.d/sparc64.mk: likewise. + + - debian/patches/glibc22-hppa-mcontext.dpatch: Fix unmatched userland + mcontext_t definition differed from kernel. Patched by + Carlos O'Donell . Closes: #157374 + + * XXX Below here was during the 2.2.5 development, and never released. + + * GOTO Masanori + - debian/patches/glibc-cvs.dpatch: Update from Glibc CVS. + - debian/patches: Dropped applying below patches due to updating + glibc-cvs.dpatch. + hurd-update, hurd-ioperms, ia64-strncpy, sparc-misc, resolv-nss_dns, + glibc-openoffice-fixes, xdr-array-security, hurd-lfs64, + syserrlist, mathpatch + - Fix gcc 3.1/3.2 compatibility building for glibc on ppc, with upstream + patched by Jack Howarth and + Franz Sirl . + Closes: #155606 + + -- Jeff Bailey Thu, 17 Oct 2002 08:37:52 -0400 + +glibc (2.2.5-15) unstable; urgency=low + + * debian/patches/dl-procinfo-fix.dpatch: Fix libssl optimization + problem occured by glibc dl-procinfo. + Closes: #161700, #161717, #161720, #161740, #161773, #161774 + Closes: #161786, #161788, #161813 + + -- GOTO Masanori Thu, 3 Oct 2002 09:56:46 +0900 + +glibc (2.2.5-14.3) unstable; urgency=low + + * NMU + * debian/patches/glibc22-mips-mcontext.dpatch: delete. + + -- Ryan Murray Sun, 15 Sep 2002 14:21:21 -0700 + +glibc (2.2.5-14.2) unstable; urgency=medium + + * NMU + * debian/patches/alpha-stxncpy.dpatch: keep testsuite patch (accepted + upstream), but disable all use of stxncpy until a correct patch can + be made. + + -- Ryan Murray Thu, 12 Sep 2002 13:04:47 -0700 + +glibc (2.2.5-14.1) unstable; urgency=low + + * NMU + * sysdeps/depflags.pl: Make libc{6,6.1} depend on libdb1-compat + (closes: #155904) + * debian/patches/alpha-stxncpy.dpatch: Add patch from Daniel Jacobowitz + for alpha stxncpy (closes: #159633) + * debian/patches/glibc22-mips-msq.dpatch: Add + sysdeps/unix/sysv/linux/mips/bits/msq.h for mips (closes: #159923) + * debian/patches/glibc22-hppa-fcntl.dpatch: Add DN_* and F_NOTIFY definitions + for hppa (closes: #159636) + * debian/patches/glibc22-hppa-mcontext.dpatch: correct definition of mcontext + to match kernel (closes: #157374) + * debian/patches/glibc22-mips-mcontext.dpatch: correct definition of mcontext + to match kernel (closes: #160462) + * add build-depends on dpkg 1.10.8 to ensure we use the install-info that + has the perl 5.8 workaround. + + -- Ryan Murray Tue, 10 Sep 2002 22:35:48 -0700 + +glibc (2.2.5-14) unstable; urgency=low + + * GOTO Masanori + - debian/patches/sh-sysdep.dpatch: Added the patch to compile for sh[34] + sh[34]eb. Closes: #156273 + - debian/patches/glibc22-m68k-compat.dpatch: Newer m68k debian specific + compatibility patch. Patched by Michael Fedrowitz . + - debian/patches/malloc-security.dpatch: Applied malloc security patch + Patched by Wolfram Gloger . + - debian/patches/alpha-build-failure.dpatch: Fix alpha build failure. + + -- GOTO Masanori Wed, 7 Aug 2002 20:56:54 +0900 + +glibc (2.2.5-13) unstable; urgency=low + + * Ben Collins + - Last maintainer upload for me. + - Fix double getent listing for build of libc package. + Closes: #154133, #152866 + - Set maintainer to the debian-glibc mailing list. Set uploaders to myself + and others. + - Placed into CVS (this log entry is the first test commit). + - ia64 build failure was fixed in last NMU. Closes: #151956 + - This sshd/libc bug is long since gone. Closes: #72596, #82468 + - ldconfig search order has also since been fixed. Closes: #105249 + - Add patches that OpenOffice needs in order to build. Closes: #153107 + - Bump min kernel supported to 2.2.0. Closes: #149529 + - Remove db1 compat library. The only user I know of this is coda. Coda + can include it's own version of the library now. I've emailed the coda + maintainer. + - Bump the shlibs ver because of the min-kernel change, and db1 removal. + - Add xdr-array.c security patch, Closes: #154992 + + * GOTO Masanori + - applied patches/locale-de_CH. + - debian/control: fix my uploader address due to my obsolete gpg key. + - debian/copyright: update copyright year. + + * Jeff Bailey + - Add hurd-i386 patch for support LFS from CVS + - Add patch to only declare sys_errlist and sys_nerr on Linux. This + allows gcc to build cleanly on hurd-i386. + - Require mig >= 1.3-2 (hurd-i386 only), and hurd-dev >= 20020608-1 + (hurd-i386 only) + - Prune hurd-ldflags from Hurd patch list. Noone is quite sure what + it's for. With this change, all hurd-i386 patches are now upstream + in CVS. + - Add 'mathpatch' to fix a math testsuite failure. + + -- Ben Collins Thu, 25 Jul 2002 11:13:22 -0400 + +glibc (2.2.5-12) unstable; urgency=low + + * Non-maintainer upload to fix build problems on ia64 + * replaces ia64-asm-fixes.dpatch with ia64-perf.dpatch, ia64-strncpy.dpatch + + -- Bdale Garbee Tue, 16 Jul 2002 17:09:24 -0600 + +glibc (2.2.5-11) unstable; urgency=low + + * Yet another NMU + * Build with a -11 version to work around fragile logic that breaks + locale dependencies when using NMU versioning. Closes: Bug#152968 + + -- Wichert Akkerman Sun, 14 Jul 2002 23:59:04 +0200 + +glibc (2.2.5-10.0) unstable; urgency=low + + * Non-maintainer upload by the security team + * Rebuild, uploads to both testing and unstable are not allowed + + -- Wichert Akkerman Sun, 14 Jul 2002 04:48:50 +0200 + +glibc (2.2.5-9) testing-security unstable; urgency=low + + * Something fucked up. Not sure why the .diff.gz size didn't match the + .changes/.dsc. Not sure why katie didn't reject the upload when it found + that out aswell. + + -- Ben Collins Sat, 13 Jul 2002 10:08:51 -0400 + +glibc (2.2.5-8) testing-security unstable; urgency=low + + * Resolver security bug fix. + + -- Ben Collins Fri, 12 Jul 2002 18:24:28 -0400 + +glibc (2.2.5-7) unstable; urgency=low + + * Misc ia64 asm updates, and strncpy fix + * Misc sparc patches from DaveM + * Revert sparc64 back to lib64 from my rebelious lib/64 effort. Use gcc-3.1 + now. + + -- Ben Collins Mon, 17 Jun 2002 22:33:39 -0400 + +glibc (2.2.5-6) unstable; urgency=low + + * Fix locales/config to be 755. + * Add big fat note to default nscd.conf about how host cache is insecure, + and disable it by default. This lowers the severity of #139879 for the + time being. I'll close it when a proper fix is in. + * Hurd patches from Jeff Bailey. Hurd goes to libc0.3! + + -- Ben Collins Sun, 28 Apr 2002 11:21:48 -0400 + +glibc (2.2.5-5) unstable; urgency=low + + * Fix missing LOCALES var in locale-gen. + * Fix space before "]" in locales/postinst. Closes: #139902, #139977, + #140048, #140464, #141408, #141515, #141558, #141617, #141786 + * Generate list of locales directly in locales/DEBIAN/config, so that we + have a working list during pre-inst. Closes: #76954, #141384 + * Backout nice changes for now. + + -- Ben Collins Mon, 25 Mar 2002 21:05:44 -0500 + +glibc (2.2.5-4) unstable; urgency=low + + * Include s/ip6.arpa/ip6.int/ patch from Fabbione. Closes: #119773, + #132310 + * Fix perms on locales/DEBIAN/config. Closes: #134094, #139682 + * Update from Glibc CVS: Lots of euro conversions and locales updates. + Closes: #128181, #130259 + Lots of other various fixes (please read the ChangeLog). Closes: #138094 + * Upstream fixed ia64 ldd rewrite problem. Closes: #128451 + * Upstream fixed nice return. Closes: #136815 + * pt_BR translation is ok now, Closes: #128530 + * Applied patch from Ganesan R to better handle some locale names. + Closes: #128969 + * Add ARM patch to disable hardware caps. + * Fix typos in catalan template. Closes: #133247 + * Add a "Leave alone" option for locales setting of /etc/environment. + Make it the default. Closes: #133315, #133315 + * HPPA patch from Randolph Chung. Closes: #133666 + * Fix zh_HK date output, from Anthony Fok. + * s/Noninteractive/noninteractive/ (hopefully for the last time). + Closes: #134381, #137348 + * Fix locales/config for when locale.gen doesn't exist. + Closes: #135343, #134613, #139284 + * Patch from Gary Hade (via Randolph Chung) to fix gmon-start. + Closes: #135748, #129903 + * Fix locale.1 - s/LC_PAPR/LC_PAPER/ Closes: #114174 + * Add glibc22-hppa-tests patch from Randolph Chung. Closes: #137513 + * Alistair McKinstry: + - Added locale.alias(5) and locale.gen(5) man pages. Closes: #106117 + - Patch for glibcbug to correctly handle bad EDITOR setting. + Closes: #128699 + - Include glibcbug.1 manpage. Closes: #128701 + - Add patch to fix segv in localedef. + - Patch for locale.1 and localedef.1 to add missing LC_* vars. + Closes: #114174 + - Fix for the d_fmt field in de_CH. Closes: #27397 + - Fix locale.alias so Russion charset is KOI8-R instead of ISO-8859-5. + Closes: #62586 + - s/Jun/Juni/ s/Jul/Juli/ for sr_YU. Closes: #131846 + - Typo in categories.def. Closes: #133379 + - Update iso-4217.def Closes: #133380 + - Re-enable el.po since we are using newer gettext. Closes: #133383 + * nscd.conf.5: Clarification. server-user option cannot be used with + -S/--secure. It will fail to start. Also note that using server-user other + than root may break some lookup services. Closes: #139433 + * Completely remove the pthread man pages. They are _way_ out of date (last + updated in 1998 according to the ChangeLog). Use the info or html docs + instead. Feel free to send me mucho patches for them, if you want them + back. Closes: #139052, #139042 + * Various LSB conformance patches from Joey Hess. Closes: #136815 + * ia64 patch for R_IA64_NONE relocs. Closes: #135314 + + -- Ben Collins Sun, 24 Mar 2002 09:49:37 -0500 + +glibc (2.2.5-3) unstable; urgency=low + + * Fix logic in locales postinst which would fail on empty or missing + /etc/environment. Closes: #132025, #131999, #132244 + * Remove build-dep on gcc-3.0-sparc64 + * Fix case where no locales are selected, so the only choices for LANG are C + and None. This left a hangin comma which debconf doesn't seem to like. + Closes: #132245 + + -- Ben Collins Sun, 3 Feb 2002 23:13:29 -0500 + +glibc (2.2.5-2) unstable; urgency=low + + * Remove glibc22-m68k-resource.dpatch. Patch is already included upstream. + Closes: #130922 + * Fix thinko in locales postinst. Also add a "None" option for LANG, and + check for it in postinst. + * HPPA correct unwind setting, from Matthew Wilcox. Also update patch + splitting the linuxthreads and rel/rela changes. Closes: #131216 + * Fix copyright shown for the GNU Libc Manual. Closes: #130866 + * Fix problem where a binary-NMU rebuild of libc would provide a version + that was incompatible with the current locales dep. + * Fix atomic_lock_t decleration for hppa. Closes: #131367 + * Fix logic in locales where LANG wasn't being set in /etc/environment. + Closes: #131040 + * Moved SUPPORTED list to /usr/share/i18n/, since policy says it can't be in + /usr/share/doc/locales/. Fixup debconf scripts to notice this. + * A few patches from CVS: + - Fixes bad optimization in dynamic linker + - Updates m68k and arm for unwind + - tzdata2002b updates + - Some irrelevant (for us) x86_64 updates + * Patch from Gerhard Tonn for s390-32 for bits/resource.h. + * libc6-sparc64-dev: Change dep to gcc-3.0 instead of gcc-3.0-sparc64. The + packages are now merged. + + -- Ben Collins Fri, 1 Feb 2002 11:52:54 -0500 + +glibc (2.2.5-1) unstable; urgency=low + + * New upstream. Closes: #122980, #126441 + * locales.postinst: Add a signature line to /etc/locale.gen so people can + take over the file manually instead of through debconf. + * Added -de template for locales. Closes: #114078 + * Removed need for generate-config.mk. SUPPORTED list for debconf is now + generated dynamically using SUPPORTED.gz. + * Added debconf option in locales to choose LANG= default in + /etc/environment based on contents of /etc/locale.gen. Closes: #117216, + #120410 + * Patched nscd init script. Patch supplied by Grant Bowman. Closes: #121942 + * Do not install tzconfig(8), Closes: #123679 + * Removed obsolete BSD license clause in debian/copyright. Closes: #123821 + * Applied spelling patch for locales description. Closes: #125092 + * Updated glibc-doc description to note that it includes html docs too. I am + not, however, splitting info and html docs into seperate packages. Closes: + #125825 + * Check for the existence of libdb.so.3 before cat'ing it. Closes: #126459 + * Added powerpc sysconf patch from David Schleef. Closes: #127560 + * Added SuperH support. Closes: #127740 + * No longer apply glibc-vs-gcc3 patch. Implementation merged upstream. + * Last minute ARM patch to fix unwind. + + -- Ben Collins Thu, 24 Jan 2002 00:31:40 -0500 + +glibc (2.2.4-7) unstable; urgency=low + + * glibc22-hppa: Fix mips/pt-machine.h, so that it patches both the ISA-1 and + ISA-2 cases of testandset(). Also add IPC updates from Willy. Closes: #120383 + * glibc22-hppa: Updated, from Mathew Wilcox. + + -- Ben Collins Mon, 3 Dec 2001 12:09:26 -0500 + +glibc (2.2.4-6) unstable; urgency=low + + * glibc22-hppa.dpatch: Fix lock_held macro on non-hppa. This patch is now + enabled by default for all archs. + * Update patches for HPPA dynamic loader from. + * m68k resource.h patch from Roman Zippel, Closes: #118909 + + -- Ben Collins Fri, 9 Nov 2001 21:20:59 -0500 + +glibc (2.2.4-5) unstable; urgency=low + + * Added patch from Ulrich to really fix the [x-] fnmatch() case. + Closes: #96013 + * Updated gcc3 compat patch. + * Several changes to ldconfig: + - Parse the config file before checking system directories. This is needed + to make sure it is possible to override system directories. + - Cleanup the config file parsing routine a bit. Make sure we open the + config file with correct perms in case it gets created by this call. + * Pulled from CVS as of Oct 27, 2001: + - Includes fnmatch fix upstream. + - strxfrm fix. + - dlfcn fix for C++ program usage. + - ENABLE_NLS fixes for various functions (doesn't affect us, since it is + mainly meant for non-nls builds). + - IPv6 reverse lookup fixes. + - Lots of libm fixes. + - Several language translation updates. + - Several m68k setjmp fixes. + - Some mips fixes merged. + - Timezone updates. + - S390 ucontext fixes. + - Several hurd fixes. + - ELFOSABI_* Updates. + * Update the kernel headers on all the systems I build for (arm, ppc, i386, + mips, sparc, sparc64, hppa). + * Added "es" template for locales, from Carlos Valdivia. Closes: #117413 + * Fixup ttyname patch for devfs, which broke some things. Closes: #117551 + * Remove the errno.texi explanation for _GNU_SOURCE for two defines. The + thing is, according to the libc manual conventions, this is not the + correct way to handle it. In fact, it is already done according to the + convention of the rest of the manual. The two items are tagged with the + "GNU" comment, meaning they are GNU extensions. The libc manual explains + in its introductory chapters that this means it needs the _GNU_SOURCE + define. + + -- Ben Collins Mon, 29 Oct 2001 20:25:40 -0500 + +glibc (2.2.4-4) unstable; urgency=low + + * Hopefully fix the damn .html docs. Looks good to me. Closes: #84237, + #89382 + * Fix inttypes.h typo. Closes: #114483 + * Disable sanity checks for gcc-3.0 archs, Closes: #114724 + * Fix entry for locales depending on debconf. Closes: #115155 + * Fix echo commands when generating locales.config. The -e option is not + portable. + * New hppa patch from several people. This, along with the .10 binutils, + should fix all of hppa's problems. + * Apply devfs compatibility patch for ttyname. Closes: #74911 + * Add (modified) patch for ldconfig to create ld.so.conf if it doesn't + exist. Original patch from David Whedon, Closes: #98763 + * Clarify some errno.texi functions wrt _GNU_SOURCE. Patch from Jeremiah + Savage. Closes: #99683 + * Add conflicts/replaces for all the potato locales that cannot be installed + with this glibc (and are actually supported now). Closes: #108015 + * Fix comma in confnames.h to make all the -pedantic folks happy :). + Closes: #113498, #113816, #114672 + * Include a mips termios.h cleanup patch, sent by Ryan Murray, patch by Ralf + Baechle. + * Add Russion template for locales package, by Ilgiz Kalmetev. Closes: + #114303 + * Fix sed in ia64/ldd-rewrite.sh: Closes: #115784 + * Add Brazilian Portuguese locales template from Andre Luis Lopes, closes: + #116435 + + -- Ben Collins Wed, 24 Oct 2001 12:28:49 -0400 + +glibc (2.2.4-3) unstable; urgency=low + + * Apply patch to fix es_AR number formatting. Closes: #108373 + * Fix SA_* defines on some archs. Patch sent upstream, and accepted. + Closes: #113273 + * Brought in dynamic module patch from CVS that fixes + mozilla/galeon/konquerer. Closes: #113457, #113481, #113708 + * Fixed libc postinst for the readlink call. Based on patch supplied by + Branden Robinson. Closes: #113459 + * Increase shlib dep to 2.2.4-2. Closes: #113731 + + -- Ben Collins Sat, 29 Sep 2001 23:38:11 -0400 + +glibc (2.2.4-2) unstable; urgency=low + + * Updates from CVS Head, includes some s390 fixes, closes: #109072 + * Reincluded some missed patches (notable the fakeroot fix), closes: + #109162 + * Include the iconvconfig program in the libc6 package, closes: #109600 + * Fixup locales/libc dep back to the old way, closes: #109850 + * Apply patch for locale-gen.8, closes: #110554 + * Apply patch to make /etc/locale.gen generated by debconf interface. + Thanks to Ho-seok Lee, closes: #110980, #110661 + * glibc22-fts.dpatch: Remove, fixes upstream now. + * libc/DEBIAN/postinst: Before calling init u, make sure /proc/1/exe + resolves to /sbin/init. This should help ensure we don't muck up + debootstrap. closes: #110615 + + -- Ben Collins Fri, 7 Sep 2001 14:52:02 -0400 + +glibc (2.2.4-1) unstable; urgency=low + + * Final release of 2.2.4. Not much changed from 2.2.3-11. + * Remove cruft from debian/patches/ + + -- Ben Collins Thu, 16 Aug 2001 09:29:14 -0400 + +glibc (2.2.3-11) unstable; urgency=low + + * Updated to HEAD of CVS as of Aug 11, 2001 + - Misc fixes found in 2.2.4pre2 + - This is basically 2.2.4pre3 + * New glibc-vs-gcc3 patch, closes: #108408, #108364, #108415, #108364, + #108454, #108476 + + -- Ben Collins Sun, 12 Aug 2001 10:02:12 -0400 + +glibc (2.2.3-10) unstable; urgency=low + + * Updated to HEAD of CVS, as of Aug 4, 2001 + - Mostly arch specific bug fixes. + - This is actually the same as 2.2.4-pre2 (releasing in a day or so) + * Ok, I give up. I don't want any more bug reports, so I've added the + nfs getdents fix. If it breaks anything, I will hunt down all of those + who submitted the patch/bug. closes: #86877 + * Added two more Q/A's to the Debian FAQ (AKA "The Overfiend Clause" :) + This documents Debian's glibc following stable CVS, and also + kernel-headers desync. + * Added latex2html to build-dep-indep, closes: #101662 + * Fix tzconfig so it handles ambiguous names correctly, closes: #105580 + Patch by Martin Pool + * Add copyright and license to tzconfig, closes: #105581 + * Updated libc0.2 hurd dep to (>= 20010718-1), closes: #106291 + * Include locale-gen.8 manpage from Eduard Bloch + * Duh. We don't need to cat in the saved libdb.so.3 to the new location. + Ldconfig does the work for us by creating a symlink to it. + * Remove sysdeps/powerpc/memset.S so ppc gets the generic C version for + now (which is actually faster on most machines anyway), until they get + their memset.S fixed (especially for Power3). + * Added updates for hppa patch from Matthew Wilcox. + * debian/rules.d/control.mk: Added hppa to list of archs for libc6 + + -- Ben Collins Tue, 7 Aug 2001 10:11:22 -0400 + +glibc (2.2.3-9) unstable; urgency=low + + * Really fix the timezone problem this time. I moved the UTC check + before the TZ check, and then reuse that to get the TZ date, instead + of the other way around. That solves the problem. Using this method, I + can get the UTC date first setting LC_ALL=C, and then allow the + override for the real UTC0 and $TZ date, so we get lang support + without breakage now. + + -- Ben Collins Tue, 24 Jul 2001 12:19:48 -0400 + +glibc (2.2.3-8) unstable; urgency=low + + * Use glibc- instead of glibc_ for the provides between libc and + locales. Underscores are actually not allowed in package names. + * CVS as of July 22, 2001 + * Use LC_ALL instead of LANG in libc postinst, closes: #106043, #106078, + #106081, #106187, #106215 + * Use Noninteractive, not noninteractive in postinst's, closes: #105902 + * SUPPORTED file ends in .gz...guess some people can't bother to add + that themselves. Also, add notes about locale-gen closes: #105915 + * Fix cp -L calls, use cat instead to make sure we avoid any command + line problems, closes: #106120, #106096 + * MIPS WARNING: The MAP_BASE_ADDR patch does not apply anymore, since it + seems that whole bit of code was removed. MAKE SURE THIS DOESN'T BREAK + ANYTHING! :) + + -- Ben Collins Sun, 22 Jul 2001 23:04:15 -0400 + +glibc (2.2.3-7) unstable; urgency=low + + * CVS as of 7-9-2001, closes: 101308, 103251, 100398, 100398 + * New hppa patch, still not enabled by default since I got deadlocks in + the linuxthreads tests (ex2 and ex10) on sparc. + * Increased shlibdep to 2.2.3-7 + * SUPPORTED locales list is now in doc dir, and locale.gen is a + non-changing file (still a conffile, but it doesn't change when glibc + changes). + * Fix fts patch so it doesn't break Hurd, closes: 102826 + * Make libc provide glibc_$DEBVERSION, and locales depend on it. This + way we make sure everything matches up. closes: 100605, 100605, + 101034, 100605, 99344 + * Added some more UTF-8 locales, closes: 103742, 86372 + * Fixed hurd's ldconfig, closes: #101691 + * Already fixed ld_envlib_path, closes: 101622 + * In libc preinst, detect if we are upgrading from a version where we + used to provide our own libdb.so.3, and keep a copy. We reuse it + during postinst. This way, we have no time where libdb.so.3 doesn't + exist. closes: 101795, 103586 + * Removed depends on libdb2 from libc6, since our hack above makes it + pointless. Now, libc6 should get installed before libdb2 (since it + depends on libc6), which will leave a working libdb.so.3. After libdb2 + is upgraded, the new libdb.so.3 will be installed, which will work + since the new libc6 that it depends on is also working. + * Fixed calls for zoneinfo as per JoeyH's suggestion. closes: 100461 + * Updated copyright notice since LGPL 2.1 is now used. + + -- Ben Collins Tue, 10 Jul 2001 14:00:59 -0400 + +glibc (2.2.3-6) unstable; urgency=low + + * CVS As of 6-9-2001, closes: #100055 + * debian/sysdeps/depflags.pl: Fix typo where netbase/netkit-rpc wasn't + being added to libc-dev control flags, closes: #98735, #99460, #99990, + #100382 + * Moved rpcinfo from /usr/sbin to /usr/bin... closes: #100279 + * Added fts() security patch + * Updated patch for HPPA, now also enabled per default + + -- Ben Collins Sat, 9 Jun 2001 16:35:29 -0400 + +glibc (2.2.3-5) unstable; urgency=low + + * CVS as of 5-28-2001 + * Added fake ldconfig script for hurd, provided by Robert Bihlmeye, + closes: #95189 + * Add replaces for netbase (<< 4.0), closes: #98708, #98735 + * Install rpcgen/rpcinfo manpages, closes: #98710 + + -- Ben Collins Mon, 28 May 2001 14:36:32 -0400 + +glibc (2.2.3-4) unstable; urgency=low + + * CVS as of 5-24-2001 + * Add forgotten mips ld.so patch + * Added s390 to arch lists, closes: #97718 + * Add m68k fPIC patch for libc_nonshared, closes: #97663 + * Add LD_LIBRARY_PATH to --library-path, closes: #98638 + + -- Ben Collins Thu, 24 May 2001 16:10:09 -0400 + +glibc (2.2.3-3) unstable; urgency=low + + * Upgraded to CVS as of 5-20-2001 + * New HPPA patch (applies cleanly) + * Fix prep.sh, closes: #97600 + * Add rpcinfo to libc, and rpcgen to libc-dev. Add Conflicts/Replaces + for both packages with netkit-rpc, closes: #93280 + + -- Ben Collins Mon, 21 May 2001 09:56:47 -0400 + +glibc (2.2.3-2) unstable; urgency=low + + * Enable threads for hppa + * Updated to CVS as of May 10, 2001, closes: #96968, #94501 + * Run locale-gen on upgrades from before 2.2.3-1, closes: #96767, #96913 + * Should be fixed, old regex problems, closes: #86728, #88677 + * This should be fixed now too, closes: #88662 + * There were some regcomp related fixes that appear to have fixed this, + closes: #93167 + * Build-Depends-Indep: s/perl5/perl/, closes: #95782 + * Updated eo_EO from Edmund GRIMLEY, closes: #78085 + + -- Ben Collins Thu, 10 May 2001 13:54:42 -0400 + +glibc (2.2.3-1) unstable; urgency=low + + * Were up to 2.2.3 now. + * libc-dev: Conflict with older gcc's that do not have the weak-sym or + pic-kludge patches. + * ldd.dpatch: New and improved fix for the "no execute permissions" + buglet. Now, ldd will not call the "file" command for every file. This + should speed up dpkg-shlibdeps a lot. + * Removed some obsolete db2 patches + * Removed some other obsolete patches + * Conflict with libnss-db that used db2 + * Depends on current libdb2 which contains libdb.so.3...hopefully this + wont make apt choke because of a dep loop + * Use the new gcc-3.0 to build sparc64 64bit libc/libc-dev packages. + * Build-Depend += gcc-3.0-sparc64 [sparc] + + -- Ben Collins Thu, 12 Apr 2001 21:08:33 -0400 + +glibc (2.2.2-4) unstable; urgency=low + + * Yeah! We can disable our libdb.so.3 (db2) interface in favor of the + one in libdb2. That package now has a symboled version so we can start + to migrate away from this cruft. However, we do still have the db1 + support. + + -- Ben Collins Fri, 23 Mar 2001 19:17:39 -0500 + +glibc (2.2.2-3) unstable; urgency=low + + * Disable building of optimized libs for now. I did not forsee the + problems involved with symbol skew between ld-linux.so.2 and the + optmized libc.so.6. As of now, I can see no way around this. + * Make libc6 conflict with the optimized libs for now, so we can get rid + of them, closes: #90753, #90758, #90763, #90770, #90778, #90779 + * RPC patch from Jakub Jelenik, probably closes: #90830 + * Add build-dep for file, m4 not needed now that opt libs are gone. + closes: #90773 + + -- Ben Collins Fri, 23 Mar 2001 10:31:24 -0500 + +glibc (2.2.2-2) unstable; urgency=low + + * Fix ld.so shlib output, closes: #87655 + * Update to latest CVS, as of 2001-03-21 + * manual/arith.texi: Fix documentation of fast and least integer + typedef's. Patch sent upstream, closes: #84711 + * glibc22-getaddrinfo.dpatch: Add fix from Hiroyuki YAMAMORI + , closes: #85304 + * i386/mathinlines.h: Fix non-ANSI ?: construct, closes: #85322 + * sysdeps/unix/sysv/linux/mips/bits/mman.h: Add and fix some madvise + declerations, closes: #86676 + * Explicitly list inetd to be restarted, closes: #86715 + * Updated Hurd SIOCS patch from Marcus Brinkman + , closes: #87903 + * Added eo_EO locale by Robert Thomson + * Check to make sure any services actually need to be restarted, closes: + #88440 + * Conflict with old strace, which appears to break under new libc6, + closes: #88775 + * Make sure we remove any CVS cruft, closes: #90173 + * Removed -O2 override for hppa, at Matt Taggart's request. + * Build-Depend on latest gcc so we get the weak sym stuff right. + * Made opt libs compiled specifically for 2.4.0+ kernels. This should + make them even faster and smaller since it reduces the compatibility + code. + * libc-opt/DEBIAN/preinst: Check to make sure we are running under a + 2.4.0 kernel, and under the correct cpu + * libc/DEBIAN/{prerm,postinst}: Changed check for package name to use + basename of $0 as opposed to uname. + + -- Ben Collins Fri, 23 Mar 2001 10:30:47 -0500 + +glibc (2.2.2-1) unstable; urgency=low + + * New upstream version + * Updated to CVS as of 2001-02-16, should make alpha build now. + + -- Ben Collins Thu, 15 Feb 2001 23:55:24 -0500 + +glibc (2.2.1-4) unstable; urgency=low + + * Fixup section "disparities" between control and overrides on + ftp-master + + -- Ben Collins Tue, 13 Feb 2001 11:47:22 -0500 + +glibc (2.2.1-3) unstable; urgency=low + + * Update CVS, should fix regex memleak, closes: #85788 + + -- Ben Collins Mon, 12 Feb 2001 22:57:56 -0500 + +glibc (2.2.1-2) unstable; urgency=low + + * Synced with CVS as of 2001-02-09, 2.2.2-pre1 + * shlibs: s/libdb1/libdb/ + * debian/rules (clean): remove shlibs file, since it is generated + * move getaddrinfo patch to it's own .dpatch + * Added some ia64 setups, closes: #82384 + * clean target, remove debian/control.in/libc?*, since they are + generated + * debian/control.d/main (locales): Fix description to reflect recent + merging of the i18ndata package, closes: #82347 + * Added hppa patch from Matt Taggart + * db/ndbm.h: s,db.h,db1/db.h, closes: #83171, #83443 + * Added extra disclaimer to the locale postinst warning. closes: #83394 + * libc/DEBIAN/postinst: change logic in check for init. closes: #84287 + + -- Ben Collins Mon, 29 Jan 2001 10:54:53 -0500 + +glibc (2.2.1-1) unstable; urgency=low + + * Upstream version 2.2.1 release, not many changes for us really, since + we've been using CVS all along. + * Included Hurd-SIOCS patch from Marcus Brinkman. + * segfault.c: s/__access/access/. Patch sent upstream. closes: #82026 + * Increase shlibdep version to 2.2.1 + * Merged i18ndata package into locales package. closes: #81990 + * Added snmpd to the restart list, closes: #81736 + * Resynced bug list. Count is 57 now... + + -- Ben Collins Wed, 10 Jan 2001 08:55:08 -0500 + +glibc (2.2-11) unstable; urgency=high + + * Synced to CVS as of 2001-01-09 - 52 unique bugs and decrementing... + This fixes the RESOLV_HOST_CONF security problem. + * Included nscd(8), nscd_nischeck(8) and nscd.conf(5) man pages by + Sebastian Rittau . closes: 66365 + * /etc/init.d/nscd: Actually uncomment and use the nscd_nischeck to see + if we want to start in secure mode. + * debian/manpages/getconf.1: New manpage for getconf utility. closes: + #63897 + * debian/manpages/catchsegv.1: New manpage for catchsegv utility. + closes: #70740 + * debian/glibc-doc/usr/share/doc-base/glibc-manual: Fix for new html + setup. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Try absolute lookups first. + closes: #64192 + * manual/conf.texi (File Minimums): make _POSIX_PATH_MAX match the + posix1_lim.h value, patch sent upstream aswell. closes: #81628 + + -- Ben Collins Sun, 7 Jan 2001 16:15:34 -0500 + +glibc (2.2-10) unstable; urgency=low + + * Synced to CVS as of 2001-01-05 - 64 unique bugs and decrementing... + * manual/stdio.texi: getline(): Clarify the return value if EOF is + reached before a newline. Patch sent upstream aswell. closes: #14590 + * manual/string.h: basename()/dirname(): Added documentation for these. + Basename() required two definitions, one for the GNU version, the + other for the XPG version. Included examples. Patch sent upstream. + closes: #27586 + * DISCLAIMER: All three of the above changelog entries did in fact change + the state of the files in this source. It is the opinion of the + maintainer (hereto after refered to as GOD), that the changes made do + in fact make the package(s) better. GOD does not warantee that these + changes will make your life (be it sex life, or no life) better. GOD + does guarantee that you (hereto after refered to as NON-DIETY) will + gain great wisdom simply by using this(these) package(s). The + NON-DIETY shall not, in any event, hold GOD responsible for misreadings + of these statements. + + -- Ben Collins Fri, 5 Jan 2001 10:46:42 -0500 + +glibc (2.2-9) unstable; urgency=low + + * CVS synced as of 2001-01-03. Happy freaking new year. + * Remove FAKEROOT check, since we don't build locales now, we don't have + to worry about it. + * dlfcn/dlerror.c: dlerror(): Check for result->errstring being NULL, + closes: #80991 + * No offense, but I cannot be expected to debug fortran programs + compiled with a commercial(?), non-GNU compiler. Talk to them about + getting it to work. As for the "works on RH, but not Debian", most + likely that didn't do anything to make it very portable. closes: #68510 + * Tested with current NIS, and the test cases passes with no open fd's. + closes: #52222 + * Make note of AMD in libc6-i[56]86 descriptions. closes: #77791 + * Make note about some commercial programs not liking our optimized + libraries (IBM JDK for one). closes: #78656 + NOTE: To the submitter of this bugreport, I'm pretty sure the JDK + relies on frame-pointer to handle some special ass-backwards stuff, + which wont work with these libraries since they are compiled without + frame-pointer (making it hard to strace, and debug using these libs). + * Yes, semget(2) refers to SEMMSL, but nothing I can find says it should + be defined in userspace. closes: #11560 + * This patch only applies to kernel-headers, and since they don't need + to be used in userspace, it's ok to have some oddities, closes: #55578 + * I was able to write an 90 byte "Hello World" .c, and compile it into + an 800 byte static binary using -nostdlib and -Wl,-lc. closes: #21676 + * Making an ar archive from one .o is just silly, closes: #58606 + * Patch sent upstream. Might change a bit, but the result should be the + same, closes: #73003 + * I believe the reason the .pwd.lock file remains is to avoid a race + condition, where something might be waiting for the lock, and + unlinking it would cause something else to be able to obtain the lock, + even though it isn't available. closes: #14093 + * I tried to reproduce this, but glob kept working right for me. I think + the user is misusing the function. Most likely they are passing the + glob on the command line, which is in turn doing some escape + processing, and not working right with glob() itself. closes: #67921 + * In Debian, locales are not required to be installed. closes: #35875 + * Could not reproduce in the latest glibc. Upstream seems to have fixed + this. closes: #75163 + * Bug report log says this is fixed in glibc 2.1.1, closes: #36775 + * I think this was an issue with the gcc-2.95 compiler defaulting to + 486 instruction sets. This was fixed by gcc some time ago. closes: + #38998 + * The "order" directive in host.conf is supposed to be a space seperated + list of sources, not comma. This is a bug in host.conf(5), which has + already been reported. I'm closing this one to avoid duplication. + closes: #35731 + * Appears to be related to #36775, but I checked the test case anyway, + and it worked as expected. closes: #35035 + * I tried the test program, and it worked fine. So either guile or glibc + fixed the bug already. closes: #36030 + * The locales package is not referenced by any other package ATM. + closes: #38742 + * Symlink /usr/share/zoneinfo/localtime to /etc/localtime for libc5 + compat. closes: #48705 + * SUSv2 defines putenv as "int putenv(char *)", closes: #60960 + * From my understanding of of the SUSv2 definition, the pointer + reference of inbuf may be incremented to the current position of + translation. So in actuality, the object is not const. GLibc + interprets this using the __restrict compiler option (defined in gcc's + later than 2.92, e.g. egcs 1.1.2, and gcc 2.95). closes: #77312 + * Fixed ambiguity problem in tzconfig, closes: #69045 + * This was a netscape/libc5/plugin issue, closes: #50672 + * User error. He is setting all of the fd's in the pollfd struct to -1, + which returns POLLNVAL, which is the expected response. closes: #51877 + * objstack_* does use const definitions now, closes: #68918 + * This was the old xmms-segv's-on-exit bug, fixed by glibc 2.1.9X (can't + remember which version exactly). closes: #74345 + * leading zero makes sscanf determine the number as an octal, closes: + #69278 + * zic.8: zdump is section 1, not 8. closes: #72095 + * Old libdb2 upgrade issue, fixed in during the 2.1.9x uploads. closes: + #72663 + * Update this changelog to include the revisions from the stable (potato) + updates. + * Patch sent upstream. Fixes timezone showing up as "/etc/localtime". + closes: #71060 + + -- Ben Collins Tue, 2 Jan 2001 20:22:11 -0500 + +glibc (2.2-8) unstable; urgency=low + + * The one-liner fix for devpts.sh + * Patch sent and accepted upstream, closes: #80485 + * CVS synced as of 2000-12-30 + + -- Ben Collins Thu, 28 Dec 2000 09:49:30 -0500 + +glibc (2.2-7) unstable; urgency=low + + * Synced to CVS as of 2000-12-25 + * Patches sent upstream, closes: #75334, #34550, #71928, #11839, #75349 + closes: #38392, #68923, #77416, #39440 + * TCPOPT_EOL, TCPOPT_NOP, TCPOPT_MAXSEG: not declared in glibc (was a + libc5 thing), so they don't need to be documented, closes: #9888 + * Use texi2html for .html output, which actually does split the file, + closes: #61257, #76678 + * Hmm, not sure I can fix hamm->slink upgrades for libc6-doc->glibc-doc, + closes: #32792, #32801 + * Fixed by upstream, closes: #62173, #10686, #37014, #54051, #57297 + closes: #53786, #74611, #37162, #41388, #60255, #63569, #67204 + closes: #67205, #60034, #42850, #60320, #39594, #59800, #48371 + closes: #66803 + * Could not reproduce. My test program showed that it resolved the + libpthread properly. I am going to assume user error, or some + funkiness on the user's system. closes: #78585 + * This is reported as a kernel issue, and the submitter was asked to try + a newer kernel, but never replied. I'm closing on the grounds that I + believe it was a kernel issue, closes: #45693 + * The iconv test program seems to work as expected in glibc 2.2, + closes: #39762 + * lt_LT uses ISO-8859-13 now, closes: #10358 + * Things relying on sort to work correctly, should set LANG=C to get + expected behavior, closes: #56195, #61746, #69544 + * Fixed long long ago, closes: #58226, #58586, #35948, #76246, #53530 + closes: #39584, #13800, #34452, #53894, #54096, #42490, #30683, #32468 + closes: #29619, #34816, #35113, #39071, #35334, #35497, #42867, #36212 + closes: #59316, #62826, #35131, #36952, #43659, #24090, #36076, #45041 + closes: #54156, #37307, #27146, #34729, #47457, #34699, #35250, #34538 + closes: #30054, #35389, #36655, #36762, #36932, #36933, #61163, #58954 + * We no longer build locales at build time, but at install time, closes: #69172 + * I don't see the problem in this testcase, works for me, closes: #73018 + * debian/control.in/main: Show in description that nscd also handles + host lookups, closes: #48716 + * Unreproducable, probably fixed in 2.2, closes: #57026, #42726, #40768 + closes: #45848, #58367, #62990, #40870, #67296, #38897, #60099, #66769 + * nscd now has a --invalidate option, closes: #42727, #43729 + * adduser now calls nscd -i, so works correctly, closes: #36080 + * Hey, it's one of my bugs, and it isn't any good! closes: #34940 + * Yeah, I agree with the bug report. If you don't want nscd to run on a + particular system, just uh, don't install it, closes: #36621 + * Setting Fixed to, closes: #47289 + * Do not use UNIX_PATH_MAX, use SUN_LEN(ptr) (defined in sys/un.h), + closes: #61963 + * _PATH_DEFPATH is the bare minimum for linux. If you want more, use the + PATH env, closes: #31983 + * The man page is wrong. dlerror.c, and dlfnc.h both show that the + return string is allocated, so it is not const. closes: #35694 + * All together now, "Using kernel headers in userspace is BAD", + closes: #12207, #19646, #43105 + * Ran the test case with -O0, -O2, -O3, -O6 on sparc and i386, and did + not see the problem reported, closes: #37154, #27516 + * Seems perl has worked around this (or libc has), since perl modules + are building fine, AFAICT, closes: #34110 + * Linus does not suggest doing /usr/include/{linux,asm} symlinks + anymore. closes: #24949 + * This isn't a glibc bug, it was a gdb bug that is now fixed. closes: #27544 + * lrint is defined with -D_ISOC99_SOURCE, closes: #43530 + * No reference to which docs, nor is there a test case, so: closes: #63511 + * Doh, this was already fixed by me in 2.2-6! closes: #79666 + * User malfunction, not a bug. closes: #39648, #50261, #36075 + * Including stdio.h only ensures that getline will work, it does not + guarantee you that it's return type is defined, which you must do + yourself. closes: #62511 + * O_LARGEFILE is only usable when compiling with -D_LARGEFILE64_SOURCE, + closes: #68873, #52455 + * Ok, strcoll doesn't seem as slow now as shown in the bug report when + LANG is set. The thing is, this function will always be slower when it + has to take localization into account. closes: #62803 + * Re bug #44093 + a) I'm pretty sure there is no problem with libc translating errno + from the kernel, else we'de have some serious problems. + b) The ioctl() manpage cannot document all returns (and in fact it + says that it does not document all ioctl types). + c) I'm pretty sure the EIO return on this particular case is generated + by the kernel. + closes: #44093 + * Tested this, and I was able to get 1022 temp files from mkstemp on a + single run, using the same template, closes: #31415 + * Ulrich Drepper, Re: sortlist in libresolv: + >It never was and in general is not wanted. Beside, it is another poor + >DNS feature which doesn't work with IPv6. Finally, the NSS gethost*() + >functions don't have the supporting code. + closes: #64327 + * lpd should not be using internal glibc functions. closes: #33686 + * makedb -V has no translation now, closes: #34702 + * Checking printf returns is left to the programmer, closes: #28250 + * Ok, the 51 pages of flaming in tis bug report leads me to believe that + this will never be resolved in glibc. IMO, it is up to the programmer + to be smart enough to check these things (where it matters). I am + closing this bug report on the precedence that it is not really a bug + because current functionality meets specs (and this bug report would + break that compatibility). This entire bug report should be archived + all on it's own. Hell, it should have it's own BTS just to track the + conversation. closes: #28251 + * mkstemp complies with SUSv2 and BSD 4.3. Changing it's bahvior would + cause portability problems. closes: #34793 + * Downgrading is not supported, closes: #36578 + * The test case did not use pthread_detach(), which resolved the issue. + closes: #25879 + * Fix devpts regex for when to mount devfs. closes: #79830 + * I believe Wichert found out that base-passwd did have a bug that was + causing this, and fixed it. closes: #55367, #79043 + * First of all, I do think tzconfig manpage needs to be in section 8. + However, changing the execute permissions does very little. In fact it + does nothing. Since normal users don't have perms to change the system + tz, it doesn't matter if they can execute tzconfig. closes: #62397 + * Added autofs to the services that need to be restarted. + closes: #80453, #79926 + * Use neat dpkg/awk one-liner from Adam Heath to get list of installed + services for the daemon check. closes: #80454 + * tzconfig allows you to choose UTC now. Just go to "12" (none of the + above), and then choose UTC. closes: #38556, #35094 + * Ok, my opinion on this is that you should check dlopen's return every + time. The example program shows that they did not do this. closes: #37604 + * Looks like a bug in haskell to me. closes: #37902 + * IIRC, all the BSD code is gone. closes: #58270 + * Bug report claims it is not a bug. closes: #42155 + * We have optimized libs now, so that should solve this. closes: #44619 + * I'm pretty sure this "large" wtmp file with only 3 entries is a sparse + file (check with du). closes: #43950 + * I seriously doubt that ld.so's LD_LIBRARY_PATH stopped working. + closes: #59110 + * I don't think this is a glibc bug. Sounds more like a cross-compiler + bug. closes: #68424 + * In Debian, 2.1.2 and 2.1.3 are binary compatible. closes: #60113 + * To get i18n/charmaps, you need to install i18ndata. closes: #65132 + * We don't need to mount shmfs anymore, closes: #65510 + * Fixed by dpkg, closes: #66913, #64906 + + -- Ben Collins Mon, 25 Dec 2000 08:42:49 -0500 + +glibc (2.2-6) unstable; urgency=low + + * Added m68k lchown fixes, plus removed conflict for libstdc++2.10-dev + on m68k. Bug/patch provided by Michael Fedrowitz + , closes: #78937 + * libc-opt: added memprof to the death list of packages that don't work + with our optimized libraries, closes: #79224 + * Added Provides: glibc2.2 to libc6/libc6.1/libc0.2 so I can make + locales dep on it, closes: #78495 + * CVS sync as of 2000-12-15 + * Fixed previously: closes: #75865, #77170, #75473 + * Added a "." counter while checking services for install, closes: #78881 + * %hhn works as expected in i386 in this version of glibc, closes: #79221 + * Looks like this is resolved, closes: #59429 + * The libc info page says not to use fgets on streams that may have NULL + char's, which sockets might, closes: #57729 + * This is probably fixed, if not reopen it please, closes: #24414 + * Well this bug report has no report in the BTS, I am going to assume + from the age and type of the title, that it is fixed, closes: #21272 + * Old ld.so issue, most likely resolved in hamm, closes: #46173 + * This bug is a simple programming mistake. For one the child never + * fills the buffer in certain cases, so it's contents are never flushed. + If the program called fflush after every output, then it works fine, + closes: #26226 + * The new upgrade code in libc postint should resolve this, closes: #64074 + * This is a compilation error. libc.so.6 does not contains fxstat + (libc-nonshared.a does), so if you don't link properly (like with + gcc), you will miss some symbols, closes: #36139 + * Similar to the above, also resolved, closes: #30427 + * Old ld.so bug, fixed, closes: #70658 + * Current localedef doesn't seem to segv on improper input, closes: #65634, #64878 + * YAOLDSOB (Yet Another LDSO Bug), closes: #42944 + * Lack of useful info in the BTS ("I suspect glibc" doesn't cut it), + closes: #36498 + * Someone needs to read release notes, closes: #41455 + * Uh, tzconfig works. Tzselect is not for changing timezones, but for + querying what the available ones are. From tzselect(1): + + Note that tzselect will not actually change the timezone + for you. Use the tzconfig(8) utility to achieve this. + + So you see, this is how it's meant to be, closes: #37409 + * Fixed in glibc 2.2, closes: #42512 + * a) all init scripts need to support restart + b) postinst uses stop/start now anyway + c) postinst fails much better now when things go wrong + + closes: #52914 + * getaddrinfo does DNS lookups regardless because of the nature of the + function. Also it handles ipv4/ipv6 better now, closes: #60743 + * I don't see why libc6 needs to create /etc/rcS.d/ when dpkg does it so + closes: #66138 + * strstr seems pretty fast now, closes: #10689 + * Latest emacs/libc6 is working fine, closes: #48476 + * YAOLDSOB, closes: #42135 + * libstdc++-v3/glibc2.2 compiles fine together, closes: #66757 + * strerror() with maxerror+1 works as expected now, closes: #40184 + * No other info, and no similar reports. Assuming user error, closes: #31465 + * Old ssh-nonfree getting a sigsegv is not a bug in libc6, but sshd, + closes: #41800 + * Restarting woffle already, closes: #74164 + * I believe this was due to some old nss1 issues, which are now resolved + during upgrades, closes: #35089 + * This is something libc6 itself cannot fix. Either way, rsh/rlogin is + broken by nature, closes: #19168 + * Well, I can't retroactively go back to hamm and add a stub for + setresuid(), closes: #29675 + * Fixed upstream a long time ago, closes: #39693 + * From unix/getlogin.c: + + /* Get name of tty connected to fd 0. Return NULL if not a tty or + if fd 0 isn't open. Note that a lot of documentation says that + getlogin() is based on the controlling terminal---what they + really mean is "the terminal connected to standard input". The + getlogin() implementation of DEC Unix, SunOS, Solaris, HP-UX all + return NULL if fd 0 has been closed, so this is the compatible + thing to do. Note that ttyname(open("/dev/tty")) on those + systems returns /dev/tty, so that is not a possible solution for + getlogin(). */ + + So basically, closes: #17528 + * Current nis/nss-compat code looks like it handles this right, + closes: #33197 + * libc6 cannot compensate for broken coding, closes: #42912 + * nprocs is fixed in 2.2, closes: #57101 + * libdb.so.2 does have shlibs now, closes: #39578 + * getcwd now returns NULL in the case shown in this bug report, so there + is no suprise if the program checks the return correctly, closes: + #27227 + * Adduser now restarts nscd as needed, closes: #37296 + * getaddrinfo fixes for ipv4/ipv6 fixes this, closes: #58713 + * Programs using libc5/libc6 at the same time via dynamically loading + libc5 apps from a libc6 apps) simply does not work, closes: #42088 + * getaddrinfo fix, closes: #70012 + * libc-64 was never meant to work right, closes: #53748 + * libNoVersion.so.1 is gone, closes: #37681 + * libc/postinst is file-rc friendly now, closes: #40053 + * libdb2 is no longer a reference for libdb stuff, closes: #61154 + * ld.so/ldconfig now have man pages, closes: #41917 + * Bah, libtricks is old and gone, closes: #39080 + * /var/state/glibc is gone, closes: #39562, #39705 + * glibc no longer includes db/db2, so look for docs in those seperate + packages, closes: #23547 + * scsi/scsi.h is there, closes: #31502 + * linux/joystick.h is there, closes: #38028 + * db.h is no longer in libc6-dev, closes: #39077, #74945 + * nprocs works on sparc now, closes: #52420 + * ldd now supports libc5 better, closes: #35644 + * Unreproducable, closes: #39582, #25773, #35624, #35123 + * /var/lib/misc/Makefile does not refer to /var/db, closes: #41947 + * llseek is obsolete, use lseek64 now, closes: #20988 + * Actually this looks like an error in the program, closes: #41952 + * Hmm, I would guess that libc6/libc5.4.38 is correct, and libc5.4.17 is + wrong, close: #21839 + * Fixed in the Before Time, during the Great Long-Long Ago, + closes: #39585, #34442, #59622, #24652 + * That's all for now... + + -- Ben Collins Fri, 15 Dec 2000 15:30:16 -0500 + +glibc (2.2-5) unstable; urgency=low + + * Update to CVS as of 2000-11-27 + - Includes hppa config stuff + * Ok, libsafe seems to be broken with our optimized packages. I + reassigned the bug report to that package. Most likely this wont be + fixed in libsafe for a bit, so for now I am making the optimized + packages conflict with it. The likely cause is the inline string + functions (-D__USE_STRING_INLINES). + * libc/postinst: added lprng and lpr to the list of daemons to restart, + closes: #78132 + + -- Ben Collins Mon, 27 Nov 2000 11:33:25 -0500 + +glibc (2.2-4) unstable; urgency=low + + * Dear god! Who changed things to a symlink in the kernel-headers and + didn't tell me of all people!? This must be a conspiracy! Some one is + out to get me! Everyone, I am going to go underground until the + security of my system is safe once again! (btw, I fixed the asm + include problem before I took a vacation from my sanity...) + + -- Ben Collins Thu, 23 Nov 2000 18:19:24 -0500 + +glibc (2.2-3) unstable; urgency=low + + * Damn, really remove libc6 dep from locales this time + * Include shlibs file with optimized libs, so dpkg-shlibdeps will be + happy with people using them. + * Added updates eo_EO locale + + -- Ben Collins Wed, 22 Nov 2000 15:40:12 -0500 + +glibc (2.2-2) unstable; urgency=low + + * Update to CVS to 2000-11-19 + - Includes the ldconfig patch, so removed from local set + - WOOHOO! Includes a patch to getaddrinfo, so that it only returns + failure if both ipv4 AND ipv6 lookups fail for PF_UNSPEC. + closes: #72764, #72905, #74692, #74692, #74367, #75388, #74692 + - Now includes the USAGI ipv6 patch + * control/locales: remove $(libc) dep...bad for a arch-all package, + closes: #76830 + * Move locales to binary-indep targets, closes: #76830 + * Add another hppa patch for _setjmp. Also, make hppa build with -O for + now. + * libc-dbg: make debug/ld*.so executable + * $(libc): suggests libnss-db + * locale-gen: set umask to 022, closes: #77191 + * etc/locale.gen: uncomment en_US as a default + * debian/sysdeps/optimized.mk: New make snippet, which allows building + optimized sets of runtime libraries. Right now, only sparc and i386 + seem to support hwcap, so we only build i586, i686 and v9 optimized + libraries. When other archs start supporting hwcap, then they too can + join the club. + * prep.sh: use ./version, so ash will work too + * Fixed prior to this release: closes: #71938, #75295, #75488, #76168 + + -- Ben Collins Sun, 19 Nov 2000 16:32:27 -0500 + +glibc (2.2-1) unstable; urgency=low + + * ALL HAIL GLIBC 2.2 RELEASE! Please put seats in full upright position, + remain seated until installed, and do not panic. The ride is almost + over. Once you have installed Glibc 2.2, please procede to our new + Debian-Rough-Ride, Xfree86-4.0.1, which is currently in progress. + * glibc22-ipv6-USAGI.dpatch: New patch, brings some stability and + compatibility to ipv6. This will most likely fix ipv6 issues with + things like ssh (let me know). + * Totally whack job on the locales package! We now do not provide *any* + precompiled locales. Instead we allow the admin to selectively decide + which ones to compile. + * Start of support for future upgrades. A new patch that should make + upgrades easier, post woody. This deals soley with the NSS module + problem and daemons running during upgrade. + * glibc22-hppa-config-fix: Fix config.{sub,guess} so hppa builds (From + the nice Debian folks at HP). BTW, where's my HP/PA BOX!? :) + * glibc22-ldconfig-fix: Fix bad allocation in ldconfig + * Bugs closed by this release: closes: #74057, #74362, #74692, #75249, + #75956, #76390, #76451 + + -- Ben Collins Fri, 10 Nov 2000 12:47:02 -0500 + +glibc (2.1.97-1) unstable; urgency=low + + * New upstream, + recent CVS + - includes lockf fix now + - fixes fmemopen issues + - adds ja_JP.ujis alias, closes: #72686 + - fixes for sparc mathinline.h + - lots of locale related updates + - mips patches are now included upstream + * depflags.pl: added replaces ldso for libc6 too (ldd), closes: #76126 + * Set --enable-kernel for Linux builds, so we can control how much + backward compatibility we have. + * Fix build-depends for gcc to include epoch + * Up'd the shlibs deps to 2.1.97 + * Removed static nss + + -- Ben Collins Tue, 7 Nov 2000 14:04:36 -0500 + +glibc (2.1.96-1) unstable; urgency=low + + * New upstream release (close to a final 2.2), closes: #73058 + - fixes ld.so reference counting (fixes some obscure bugs with + loadable modules, like NSS). + - fixes for ppc + - netinet/tcp.h fixes for uint8, closes: #74061 + - fixes limits.h/LONG_MAX declerations, closes: #75720 + * When running "$(MAKE) test" use -k so we complete as much as possible + * db/Makefile: remove patch that inhibited the db1 headers. Now, db1 + applications can be built again. This is temporary, to give poeple + time to migrate (db2 maintainer can use this for db_dump185), + closes: #72723 + * shlibs.mk: Use $(objdir)/soversions.i for generating the shlibs file, + which is more correct. Thanks to Marcus Brinkman for pointing this + out, closes: #75685 + * debian/glibc-doc/usr/share/doc-base/linuxthreads-faq: removed, no + longer in upstream source, closes: #74046 + * libc/postinst: added wu-ftpd, wu-ftpd-academ, slapd, openldapd and + logind to list of daemons to to restart, closes: #74158 + * libc/postinst: added support for filerc, thanks to Roland Rosenfeld + , closes: #74290 + * libc/postinst: check for existence of /sbin/init before restarting it, + closes: #75310 + * sysdeps/depflags.pl: Change g++ conflict to libstdc++-dev so we + precludes the right package (i.e., we need a newer libstdc++-dev, not a + new g++), closes: #75019 + * sysdeps/depflags.pl: make libc6 depend on libdb2 from woody so we + don't make apt act all weird with a three layer dependency of sorts + (ask Jason, I'm not sure of all the issues, but it seems it is needed + for now), closes: #75601, #75689 + * sysdeps/generic/lockf.c: explicitly set l_type to F_RDLCK (help from + Anton on this one) + * dl-machine.h.mips-2: new patch from Florian Lohoff to + fix ld.so segv on mips (I expect to see some .deb's in the official + archive soon, my Indy is getting jealous :) + + -- Ben Collins Sun, 29 Oct 2000 16:39:12 -0500 + +glibc (2.1.95-1) unstable; urgency=low + + * New upstream release + * debian/sysdeps/depflags.pl: Don't conflict/replace old libdb2, just + conflict. + * debian/libc/DEBIAN/postinst: Don't just check the service name with + "dpkg -s" since we miss things like inetd, which isn't in a package + named "inetd". Check for "installed" and "", then -x of the init.d + file + * debian/patches/ldd.dpatch: fixup so we don't get double output of + libraries, closes: #72710 + * debian/sysdeps/depflags.pl: Hmm...where did the libnss-db dep go + anyway? There now. + * debian/manpages/: Added man pages for ldd, ldconfig and ld.so + to replace the ones removed from ld.so, closes: #72648, #72727 + * locales fixed in -2, closes: #72752 + + -- Ben Collins Mon, 2 Oct 2000 11:18:48 -0400 + +glibc (2.1.94-3) unstable; urgency=low + + * updated CVS post-2.1.94 to 20000929 + * Put db/db2 libs back in for runtime use only (not linkable and no + headers). Closes a shitload of bugs, and makes everyone happy. Oh, let + the sun shine down. + * alpha-dwarf2-dl-machine: merged upstream + * debian/sysdeps/depflags.pl: removed all the db2 cruft conflicts + * debian/libc/DEBIAN/postinst: Use /etc/rc${rl}.d/ instead of + /etc/init.d/ when restarting services. This way, we don't start any + services that were meant to be off. Also, check for a non-zero exit when + starting and report such failures. This will give people a heads up to + any problems. + + -- Ben Collins Fri, 29 Sep 2000 16:29:59 -0400 + +glibc (2.1.94-2) unstable; urgency=low + + * Removed WANT_LDD, we now install it for every arch. This removes the + need for the ldso package completely, on systems without libc5 (YAH!) + * debian/sysdeps/depflags.mk: removed cruft + * debian/sysdeps/depflags.pl: new script with a simplified control deps + setup to replace depflags.mk. The former was getting too complex + * debian/rules.d/shlibs.mk: fixed logic preventing it from actually + installing the new shlibs file + * debian/sysdeps/depflags.pl: Added lots of conflicts for NMU'd packages + that fell prey to the db2 problems. + * debian/contron.in/main: Fix nscd depend on libc6 + + -- Ben Collins Wed, 27 Sep 2000 10:09:51 -0400 + +glibc (2.1.94-1) unstable; urgency=low + + * New maintainer, "Lector, si monumentum requiris, circumspice" + * New upstream version, pre 2.2 now + - crypt is now in glibc source, so is not a seperate tarball + - removed nss1 compat tarball + - db2 is gone aswell + - without db2, upstream split nss_db from main source (*sigh*) + * Added inetd to list of services to restart + * modfl/fmodl: documented in info pages, closes: #17874 + * Just a quick list of bugs that I can verify do not exist any longer, + closes: #45903, #26514, #46547, #32345, #30987, #48713 + * fcloseall: in the case of stdio/fcloseall.c, yes, it only ever + returns success. However, we use libio/fcloseall.c, who does in fact + have a chance to return EOF, closes: #20973 + * libio/libio.h: shows that the Stream Hooks do in fact take (void *) as + the first argument as shown in the protos, closes: #61497 + * trunc/floor: documented correctly in this release, closes: #65683, #65684 + * Hurd maintainers say this can be closed, closes: #54154 + * I'm pretty sure this isn't an issue anymore, else potato wouldn't be + releasing, closes: #35049 + * Sorry this isn't a glibc bug. The kernel handles error returns on a + failed executable. Most likely this is bin_interp's problem, but I + seriously doubt it will be fixed because of conventions, standards and + the like, closes: #22301 + * keyenvoy: no longer compiled for linux (it seems), closes: #47560 + * infnan: is defined now, closes: #19264 + * libc5 bug, no longer applies, closes: #11300 + * Make sure we copy over asm-sparc for sparc aswell as "generate-asm.sh" + script used to generate /usr/include/asm + * Disable parallel build on sparc (broken for some reason, might not be + sparc specific) + * devpts.sh: used a more devfs friendly version from bug submitter, + closes: #65276 + * libc/postinst: cannot reproduce problem, appears to be user error, + closes: #64865 + * glibc-doc: this bug is no longer valid, closes: #33759 + * We now use ldconfig from libc6 for all archs, ldso will conform. + * Change build deps to just "kernel-headers" for non-Hurd archs. With + mips and other coming down the pipe, this is bound to get ugly if we + specify the particular version for each. + * Add checks to automatically detect proper kernel-headers, error out + otherwise. + * hurd: add Depends: hurd (>= 20000803) for libc0.2 + * libpthread: soname version is now 0.9 + * debian/libc/DEBIAN/shlibs: bump to 2.1.94 + * libc6: add temporary depend on libdb2 + * debian/rules: check for FAKEROOTKEY, and fail if it's there. We cannot + build under fakeroot, we need real rewt. Fear my hacking skillz. + + -- Ben Collins Mon, 25 Sep 2000 11:30:45 -0400 + +glibc (2.1.3-14) stable; urgency=low + + * Stable upload for some serious issues in potato + * Patch to match glibc 2.2 to not set personality, closes: #72165 + * Arm ld.so patch, closes: #75982 + * Add check for FAKEROOTKEY, to $(checkroot) to make sure we build as + real root, and not fakeroot. This is required for locale definitions + to be generated properly. closes: #70806, #70876 + * Backport the fix to lockf(F_TEST), which fixed this on alpha and + sparc. + + -- Ben Collins Tue, 2 Jan 2001 17:15:44 -0500 + +glibc (2.1.3-13) stable; urgency=low + + * Damnit...used the 0824 patch set, now there's an 0827 :/ + + -- Ben Collins Fri, 1 Sep 2000 10:54:11 -0400 + +glibc (2.1.3-12) stable; urgency=low + + * Ugh, add three patches posted by Solar Designer which include the ldso + bug (better patch), locales bug, and md5 fixups. + + -- Ben Collins Thu, 31 Aug 2000 11:10:46 -0400 + +glibc (2.1.3-11) stable; urgency=low + + * Security upload for ldso problem + * Fix sparc headers too + * Might aswell change the maintainer too (So long Joel, you are missed) + + -- Ben Collins Thu, 31 Aug 2000 11:10:36 -0400 + +glibc (2.1.3-10) frozen unstable; urgency=low + + * The "Ask not for whom the feep tolls" release. + * zic -l will use hardlinks if /etc and /usr are on the same + filesystem, so revert to ln -s. + * Update Build-Depends to kernel-headers-2.2.15. + + -- Joel Klecker Fri, 28 Apr 2000 18:45:49 -0700 + +glibc (2.1.3-9) frozen unstable; urgency=low + + * The "Insert clever reference here" release. + * debian/patches: + - i386-sys-io-c++: Change '::' to ': :' to avoid confusing g++ + + closes: Bug#57914 + - zic-l: Fix -l in zic(8) (taken from OpenBSD) + * Teach tzconfig to acquire current timezone from /etc/localtime + symlink if necessary. + * Use zic -l instead of ln to make /etc/localtime symlink. + + -- Joel Klecker Fri, 21 Apr 2000 13:30:47 -0700 + +glibc (2.1.3-8) frozen unstable; urgency=low + + * The "What's my name? Say my name, bitch!" release. + * debian/patches: + - i386-linux-ucontext: Don't use ERR. + + closes: Bug#59962 + - ldd: + + Improve non-executable shared object handling. + + Revert ${RTLD} --list stuff. (closes:Bug#60869) + + alpha will break again, someone needs to fix ld.so. + * debian/control.in/main: locales: Depends: @libc@ (= ${Source-Version}) + This will insulate us from data format changes. + * Fix tzconfig man page (closes:Bug#61610,#61613). + * Revert /etc/localtime to a symlink (closes:Bug#60744). + + -- Joel Klecker Mon, 3 Apr 2000 08:40:07 -0700 + +glibc (2.1.3-7) frozen unstable; urgency=low + + * The "Light my Alpha fire with a SPARC" release. + * debian/patches: + - libc-pr-fixes: Fixes for post-2.1.3 PRs + + closes: Bug#59802,#59257 + - tzdata2000c: Includes AR timezone correction + + closes: Bug#59790,#59806 + - sparc-linux-getsysstats: Update so it actually works. + - alpha-dwarf2-dl-machine: Fix for unaligned traps from C++ EH code + + closes: Bug#59789 + + -- Joel Klecker Tue, 7 Mar 2000 10:31:42 -0800 + +glibc (2.1.3-6) frozen unstable; urgency=low + + * The "Smash Everything with a _Huge Steamroller_!" release. + * debian/sysdeps/gnu.mk: Define WANT_LDD (closes:Bug#59165). + * debian/libc/DEBIAN/preinst: Make this as /bin/bash script (closes:Bug#59613). + * debian/libc/DEBIAN/postinst: + - Only make /var/mail symlink on upgrades. + - Make this a /bin/bash script. + * debian/sysdeps/depflags.mk: (libc_control_flags) + C/R/P gconv-modules where necessary, Replace locales (<< 2.1.3-5). + * debian/control.in/main: Build-Indep-Depends: perl5 (closes:Bug#59350). + * debian/libc/etc/init.d/devpts.sh: Remove version check, checking for + the filesystems alone should be sufficient (closes:Bug#59576). + + -- Joel Klecker Sat, 4 Mar 2000 09:28:08 -0800 + +glibc (2.1.3-5) frozen unstable; urgency=high + + * The "Down, not across" release. + * 2.1.3 final. + * Pre-Depends were a bad idea + - quit using readlink. + - removed pre-depends on debianutils. + * Add devpts.sh again, this time not as a conffile. + * Build-Depends: gcc (>= 2.95.2-6) [alpha], remove sharutils [alpha]. + * Move /usr/lib/gconv to $(libc). + + -- Joel Klecker Sat, 26 Feb 2000 00:14:34 -0800 + +glibc (2.1.3-4) frozen unstable; urgency=low + + * The "Pain as bright as steel squared" release. + * glibc 2.1.3pre4. + * Remove debian/patches/po-it-po.dpatch, + debian/patches/powerpc-linux-sys-procfs.h.dpatch, and + debian/patches/powerpc-linux-syscalls.list-mmap64.dpatch; + Integrated upstream. + * Add back debian/patches/linuxthreads-lock.dpatch now that I know + what it's for (closes:Bug#58385). + * Bugs closed since devpts.sh is gone (closes:Bug#57584,#57698,#57580). + * debian/libc/DEBIAN/preinst: + - Save a copy of /etc/timezone in /etc/timezone.save. + - Convert /etc/localtime from link to file. + * debian/libc/DEBIAN/postinst: + - Use /etc/timezone.save if necessary. (closes:Bug#57885,#57922). + - Remove some unnecessary timezone code that caused some odd behavior + (closes:Bug#57456). + * tzconfig: /etc/localtime is a file, not a link. + * $(libc): Pre-Depend on debianutils (>= 1.13.1) for readlink. + + -- Joel Klecker Fri, 18 Feb 2000 17:35:19 -0800 + +glibc (2.1.3-3) frozen unstable; urgency=low + + * The "Pain as bright as steel" release. + * Move iconv, locale, localedef to $(libc). + * Remove devpts.sh. + * debian/patches/po-it-po.dpatch: + Add "portable object" for Italian (closes:Bug#57031). + * $(libc): Replaces: locales (closes:Bug#57482). + * Add Build-Depend for gettext (closes:Bug#57797). + + -- Joel Klecker Fri, 11 Feb 2000 13:02:13 -0800 + +glibc (2.1.3-2) frozen unstable; urgency=low + + * The "Dark, Naughty Evil" release. + * debian/patches/powerpc-linux-sys-procfs.h.dpatch: + Fix sys/procfs.h for powerpc-linux. + + -- Joel Klecker Mon, 7 Feb 2000 17:38:54 -0800 + +glibc (2.1.3-1) frozen unstable; urgency=low + + * The "From now on all of my world-killing weapons will be kept a TOTAL SECRET!" release. + or the "Brown Paper Bag" release. + * Really fix devpts.sh + (closes:Bug#56659,#56687,#56726,#56770,#56782,#56893,#56941,#56850,#56659,#57049,#57005,#57156,#57183). + * Give up and call it 2.1.3. + * CVS as of 2000-01-31. + * Move some docs from glibc-doc back to $(libc). + * Make /etc/init.d/devpts.sh and /etc/default/devpts conffiles (closes:Bug#57081). + * Re-enable libnss1-compat.. + + -- Joel Klecker Sun, 6 Feb 2000 08:55:41 -0800 + +glibc (2.1.2-13) frozen unstable; urgency=low + + * The "@!%$&! you, I use Debian" release. + * debian/patches/powerpc-linux-syscalls.list-mmap64.dpatch: + Fix mmap and stuff (closes:Bug#56343). + * Add sharutils [alpha] to Build-Depends, drop gcc dep. + * $(libc): conflict with locales (<< 2.1.2-12). + * locales: replaces $(libc)-bin (closes:Bug#56540,#56536,#56534). + * Fix devpts.sh (closes:Bug#56487,#56507,#56559). + * Update to CVS as of 2000-01-29. + * Restore HTML to glibc-doc (closes:Bug#56609). + + -- Joel Klecker Sun, 30 Jan 2000 01:14:05 -0800 + +glibc (2.1.2-12) frozen unstable; urgency=low + + * The "Cardboard Messiah" release. + * debian/rules: Form arch_packages and indep_packages using += instead + of $(filter-out ...). + * debian/package-rules/locales.mk: Remove cross-compiling kluges. + * debian/package-rules/libc-dbg.mk: Fix libthread_db (closes:Bug#55439). + * debian/control.in/main: + - locales: Architecture all -> any. + - Build-Depends: + + add make (>= 3.78) due to use of new warning and error make functions. + + add gcc (>= 2.95.2-5) for alpha. + * Merge gconv-modules back into locales. + * Move locale and localedef programs back into locales. + * Put devpts.sh init script back in $(libc). (closes:Bug#50913,#53842) + * Add Replaces for timezones back into $(libc). + * Kill $(libc)-bin. + * Restore `tzselect' script, which slipped out of $(libc) (closes:Bug#55377) + * Bugs fixed in -11.0.1 (closes:Bug#53705,#53659,#53680,#53754 + * Update to CVS as of 2000-01-26. + * Eliminate obsoleted patches. + + -- Joel Klecker Wed, 26 Jan 2000 16:44:12 -0800 + +glibc (2.1.2-11.0.1) unstable; urgency=low + + * Binary-only upload of locales. + + -- Joel Klecker Wed, 29 Dec 1999 11:45:56 -0800 + +glibc (2.1.2-11) unstable; urgency=low + + * The "If it ain't broke, you're not tryin'" release. + * Split out $(libc)-bin and libnss1-compat. + * Split debian/rules into debian/package-rules/*. + $(libc-bin): + - Install db_* programs as glibcdb_*. + - Move zic, zdump, locale, localedef, getent here. + - Use alternatives for db_*. (closes:Bug#50311,#50341) + * debian/mk/rules-* -> debian/rules.d/*. + * debian/ now resembles $(tmpdir) tree for . + * Improve setperms rule, so debian/perms can specify fewer files. + * New source unpacking system, see prep.sh. + * Remove devpts.sh, the init script is now in sysvinit. + * Improve debian/libc/DEBIAN/shlibs rule (debian/rules.d/shlibs.mk). + * debian/sysdeps/soname.mk: Bump shlib_depend. + * Add sysdeps files for $(DEB_HOST_GNU_CPU). + * Add debian/patches/glibc-mega.dpatch: + Selected patches from CVS (closes:Bug#48120,#52195). + * Add debian/patches/linuxthreads-mega.dpatch: + Selected patches from CVS. + * Add debian/patches/alpha-pt-machine.h.dpatch: + Fix pt-machine.h so that linuxthreads compiles on Alpha. + * Add debian/patches/db2-alpha-powerpc-mutex.dpatch: + Alpha and PowerPC implementations for db2 spinlocks. + (patches by David Huggins-Daines ) + (db2 patch slightly modified) + * Add debian/patches/powerpc-plt.dpatch: + 1999-10-07 Geoffrey Keating + * sysdeps/powerpc/dl-machine.c: Many minor formatting changes. + (OPCODE_LWZU): New macro. + (OPCODE_ADDIS_HI): New macro. + (OPCODE_LIS_HI): New macro. + (__elf_machine_runtime_setup): Change PLT code-generation scheme + for thread safety even with very large PLTs, better efficiency, + and to fix a cache-flushing bug. + (__elf_machine_fixup_plt): Likewise. + (__process_machine_rela): Don't use elf_machine_fixup_plt. + * Add debian/patches/sparc64-linux-lib64.dpatch: + Use /lib/64 and /usr/lib/64 instead of /lib64 and /usr/lib64. + * Add debian/patches/sparc64-linux-execve.dpatch: + Add __syscall_execve to sparc64 syscalls.list. + * Add automatic parallel build support for SMP systems. + * Fix broken parsing of DEB_BUILD_OPTIONS. + * Add framework to build libc6-64 and libc6-64-dev packages for sparc + (not enabled for potato). + * Split locales into `locales' and `i18ndata'. + + -- Joel Klecker Sat, 25 Dec 1999 09:54:29 -0800 + +glibc (2.1.2-10) unstable; urgency=low + + * The "Omigod! I overdosed on heroin!" release. + * debian/devpts.init: Create /dev/ptmx unconditionally. + * Restore correct nscd DEBIAN dir. + * Revamp rules a bit (split more parts into debian/mk/rules-*). + * debian/mk/sysdeps.mk: Split into pieces and include them. + * debian/patches/tzcode1999h.dpatch: + Update timezone data to 1999h release. + * Add stub for support for libc6-64 packages for sparc. + * Add one more last timezone sanity check to libc postinst (closes:Bug#49539). + * Always unpack linuxthreads add on and pass --enable-add-ons=crypt to + configure for hurd (closes:Bug#49459). + + -- Joel Klecker Mon, 8 Nov 1999 09:47:28 -0800 + +glibc (2.1.2-9) unstable; urgency=low + + * The "Service with a capital 'Bugger Off'" release. + * debian/copyright: Update for 2.1.2. + * debian/rules: Make each binary package depend on setperms (closes:Bug#48914). + * Move debian/libc-doc to debian/glibc-doc and eliminate the need for + postinst and prerm to be generated files. (closes:Bug#48786). + + -- Joel Klecker Sun, 31 Oct 1999 09:23:16 -0800 + +glibc (2.1.2-8) unstable; urgency=low + + * The "Can't Start a Fire Without a SPARC" release. + * Build with unstable dpkg. + * debian/patches/sparc-various.dpatch: Various sparc-specific patches + from Jakub Jelinek and David S. Miller . + + -- Joel Klecker Sat, 30 Oct 1999 06:55:33 -0700 + +glibc (2.1.2-7) unstable; urgency=high + + * The "Fuck Me Harder" release. + * sparc-linux: Replaces: ldso (<< 1.9.11-6). + * debian/{libc.postinst.in,libc/prerm}: Add /usr/doc symlink stuff (closes:Bug#48324). + * debian/control.in-main: Adjust locales depends. + Correct Build-Depends: field. + * debian/mk/source-rules.mk: Split unpack-source, source, and orig-source + targets from debian/rules. + * debian/patches/manual-texinfo4.dpatch: Use @ifnottex instead of @ifinfo. + * Use makeinfo --html to generate HTML version of glibc manual. + * Remove texi2html from debian/scripts. + * Fix debian/scripts/Makefile for cross-compiling. + * Correct debian/patches/string2-pointer-arith.dpatch for archs that don't + support unaligned memory accesses. + + -- Joel Klecker Fri, 29 Oct 1999 09:06:27 -0700 + +glibc (2.1.2-6) unstable; urgency=low + + * The "Evil Bitch Monster of Death" release. + * debian/rules: Move debian/control targets to... + debian/mk/debian-control.mk. + * Move debian/*.mk to debian/mk/. + * Use debian//* for control archive items. + Adjust debian/rules for this. + * Add setperms target to set modes of debian//*. + Make unpack-source and clean depend on it. + * Don't compile with -g when DEB_HOST_GNU_CPU is alpha. + * debian/patches/string2-pointer-arith: New file. + Fix "/usr/include/bits/string2.h:419: warning: pointer of type `void *' + used in arithmetic" (closes:Bug#45824,#44491,#44697) + * Change maintainer back to "Joel Klecker ". + * Update to CVS sources as of 1999-10-24. + * debian/patches/{linuxthreads-signals.c-ucontext,cs-po}.dpatch: + Fixes for source tree brokenness. + * Adjust clean target for new generated files. + * Add libresolv to $(libc)-pic. + * Add readlink.c and texi2html to debian/scripts to eliminate tetex-bin dependency. + * nscd: Install nscd_nischeck. + Sync nscd.init with upstream. + * Implement /usr/doc symlinks. + * $(libc): strip libpthread with --strip-debug. + + -- Joel Klecker Sun, 24 Oct 1999 20:50:58 -0700 + +glibc (2.1.2-5) unstable; urgency=low + + * The "One more week to go" release. + * debian/patches/localedata-SUPPORTED: + Oops, this patch wasn't actually being applied. + eo_EO, zh_TW.Big5, and es_AR should be [back] in locales now. + Back out zh_CN, the definition is broken. + * Remove sparc from HAVE_LIBC{4,5}, we want to install our ldd. + * debian/patches/sparc-linux-ldd.dpatch: New file. + Restore missing patch (in ChangeLog, not in source). + * debian/sysdeps.mk: Tighten alpha shlib_depend to libc6.1 (>= 2.1.2-1). + + -- Joel Klecker Tue, 28 Sep 1999 04:55:35 -0700 + +glibc (2.1.2-4) unstable; urgency=low + + * The "Perl Sucks" release. + * debian/libc.postinst: Steal updatercd shell function from sysvinit postinst. + Use it for devpts.sh. (closes:Bug#45867,#45879,#45880,#45885,#45895) + Bitch-slap perl maintainers. :) + * debian/rules: nscd: run nscd.conf through sed 's/adm/log/'. + * debian/patches/sparc-llnux-chown.dpatch: Update from Ben Collins. + * debian/sysdeps.mk: Drop sparc-linux depends back to libc6 (>= 2.0.105). + + -- Joel Klecker Fri, 24 Sep 1999 12:39:26 -0700 + +glibc (2.1.2-3) unstable; urgency=low + + * The "Pot-smoking Pikachu" release. + * debian/rules: Don't install ldd man page on i386/m68k (closes:Bug#45421). + check: Don't depend on build. + Symlink db_dump185 manpage to db_dump manpage (closes:Bug#42322). + $(libc)-pic: Install map file for libm. + Install map files as $(libdir)/libfoo_pic.map. + * debian/patches/zh_TW.Big5-locale.dpatch: + Split into localedata-charmap-BIG5_1984 and localedata-zh_TW.Big5. + * debian/patches/eo_EO-locale.dpatch: Rename to... + localedata-eo_EO. + * debian/patches/localedata-SUPPORTED.dpatch: New file. + Add eo_EO, es_AR (closes:Bug#37162), zh_CN.GB2312 (closes:Bug#38553), + zh_TW.Big5. + * debian/patches/pthread_create-manpage.dpatch: New file. + Correct pthread_create manpage to match texinfo documentation + (closes:Bug#22119). + + -- Joel Klecker Wed, 22 Sep 1999 19:16:01 -0700 + +glibc (2.1.2-2) unstable; urgency=low + + * The "Bite Me" release. + * debian/rules: $(libc): strip pt_chown. + Don't install ldd on i386/m68k. + Query dpkg-architecture variables individually. + Use bunzip2 -c ... | tar xf - instead of tar yxf. + $(libc)-pic: Add libm_pic.a. + check: New target; run test suite. + Call make with SHELL=/bin/bash, as the test suite seems to rely on + bash behavior. + Use --strip-unneeded (closes:Bug#40467). + * debian/sysdeps.mk: reorganize. + * debian/patches/generic-getenv.dpatch: New file. + 1999-09-10 Andreas Schwab + + * sysdeps/generic/getenv.c (getenv): Fix lookup for single + character variable on bigendian platforms without unaligned memory + access. + + -- Joel Klecker Thu, 16 Sep 1999 14:41:28 -0700 + +glibc (2.1.2-1) unstable; urgency=low + + * The "Gone Evil" release. + * glibc 2.1.2 final. + - Properly free mmaps for archs without spinlocks in db2 (closes:Bug#43786). + + * debian/rules: configure: Fix hurd part (missing \). + Add frame.o hack for alpha. + Use CFLAGS instead of default_cflags. + Create srcdir for each arch. + Remove arch/indep patch split. + New directory layout (build/foo- -> build//foo). + Use bz2 tarballs. + + * debian/patches/sparc-linux-types.dpatch: Remove, applied upstream. + + * devpts.sh never used any bashisms (closes:Bug#43296). + + -- Joel Klecker Tue, 7 Sep 1999 05:00:58 -0700 + +glibc (2.1.2-0pre12) unstable; urgency=low + + * The "Espy's Birthday" release. + * debian/rules: (libc-pic) strip debugging symbols from *_pic.a. + interp.o is no longer needed. + + * debian/patches/sparc-linux-types.dpatch: New file. + 1999-07-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/bits/types.h: Define always + __qaddr_t. + __ino64_t should be 32bit unsigned type on sparc32. + Define __off64_t to __quad_t instead of __int64_t. + Make __pic_pid_t unsigned on sparc32. + + * Really change maintainer name to Debian GNU C Library Maintainers. + + * debian/control.in-libc: s/m@archs@/many/ (closes:Bug#43657). + + * debian/devpts.init: Check if devpts is already mounted before trying + to mount it. (closes:Bug#43658,#43659). + Remove exit 0 from end (closes:Bug#42541) + + * Fixed upstream: db_dump185 now linked with libdb1 (closes:Bug#42898). + + -- Joel Klecker Sun, 29 Aug 1999 07:51:16 -0700 + +glibc (2.1.2-0pre11) unstable; urgency=high + + * The "Lesbian Seagull" release. + * glibc 2.1.2pre3. + + -- Joel Klecker Wed, 25 Aug 1999 15:33:23 -0700 + +glibc (2.1.2-0pre10) unstable; urgency=low + + * The "Crack-smoking Squirrel" release. + * CVS as of 1999-08-21. + * Change maintainer name to Debian GNU C Library Maintainers. + + -- Joel Klecker Sat, 21 Aug 1999 10:57:42 -0700 + +glibc (2.1.2-0pre9) unstable; urgency=low + + * The "Son of Drunken Iceweasel" release. + * Compile with gcc 2.95.1. + * CVS as of 1999-08-18. + + -- Joel Klecker Wed, 18 Aug 1999 11:11:29 -0700 + +glibc (2.1.2-0pre8) unstable; urgency=low + + * The "Drunken Iceweasel" release. + * Compile with gcc 2.95.1-0pre1. + * Remove explicit -march=i386 on i386, it's no longer needed. + + -- Joel Klecker Sun, 15 Aug 1999 08:34:55 -0700 + +glibc (2.1.2-0pre7) unstable; urgency=low + + * The "Evil Mastermind" release. + * CVS as of 1999-08-09. + * debian/patches/arm-osabi.dpatch: "...and another patch bites the dust" + (functionality integrated upstream). + * Add -march=i386 on i386 to work around gcc lossage. + + -- Joel Klecker Tue, 10 Aug 1999 01:54:57 -0700 + +glibc (2.1.2-0pre6) unstable; urgency=low + + * The "Stoned Monkey" release. + * More adjustments for multi-arch build tree. + * Split patch rules into debian/patch-rules.mk. + * Divide patch system into indep and arch patches. + * Update sources to CVS as of 1999-08-08 (closes:Bug#42579,#42343). + - I think perhaps this will fix the StarOrifice problem too. + + -- Joel Klecker Sun, 8 Aug 1999 21:11:12 -0700 + +glibc (2.1.2-0pre5) unstable; urgency=low + + * The "Chainsaw Psycho" release. + * Install zdump in $(bindir). + * Fix 3l33t control frags system for "weird" architectures. ;) + * Avoid using DEB_*_ARCH variables, for they are evil. :) + + -- Joel Klecker Fri, 6 Aug 1999 05:34:55 -0700 + +glibc (2.1.2-0pre4) unstable; urgency=low + + * 2.1.2pre2. + * Run testsuite in build target. + * $(libc)-pic: Provides: glibc-pic. + * Logging is back. + * Update copyright file. + + -- Joel Klecker Sun, 1 Aug 1999 17:58:49 -0700 + +glibc (2.1.2-0pre3) unstable; urgency=low + + * CVS as of 19990730. + * Implement new debian/control-frags system. + * $(libc)-pic is back. + * {gconv-modules,$(libc)-{pic,dev,dbg,prof}}: + doc dirs are directories again. + + -- Joel Klecker Fri, 30 Jul 1999 10:52:06 -0700 + +glibc (2.1.2-0pre2) unstable; urgency=low + + * debian/rules: Fix typo that prevented all the linux-specific + patches from being applied. + + -- Joel Klecker Mon, 26 Jul 1999 14:44:46 -0700 + +glibc (2.1.2-0pre1) unstable; urgency=low + + * New upstream pre-release 2.1.2pre1. + * debian/depflags.mk. + - (libc_dev_control_flags): + Add conflicts to alpha/i386/m68k for libncurses4-dev (<< 4.2-3.1) and + libreadlineg2-dev (<< 2.1-13.1). + - (libc_control_flags): + Add conflicts to alpha/i386/m68k for libglib1.2 (<< 1.2.1-2). + * devpts.init: + - Cope with EXTRAVERSION in uname -r (closes:Bug#41064,#41389). + - Don't worry about /dev/ptmx anymore, glibc now checks for a mounted + devpts filesystem as well as an existing /dev/ptmx. + * debian/patches/{ieee754_y0,linux-mmap64,libio-oldiopopen}.dpatch: + Removed; applied upstream. + * debian/patches/arm-{dynamiclinker,tftp}.dpatch: + Removed; applied upstream. + * debian/patches/arm-string.dpatch: + Remove string/endian.h part (applied upstream) and rename to arm-ieee754. + * Disable building of $(libc)-pic, the boot-floppies library + reduction hack doesn't work anyway. + * Adjusted rules for dpkg-architecture and reworked source unpacking + to handle snapshot upstream versions better. + * Use suidmanager for pt_chown. + * More fully adopt dpkg-architecture system. + * Correct libc.preinst for sparc. + * Set sparc shlib_depend to $(libc) (>= 2.1) per request. + + -- Joel Klecker Sat, 24 Jul 1999 12:35:05 -0700 + +glibc (2.1.1-13) unstable; urgency=low + + * debian/devpts.init: Revise again. + * debian/rules: debian/shlibs: Add special case for libdb1. + * debian/sysdeps.mk: Add cflags variable and i386 hack + (hopefully this will allow the library to run on 386es again). + * Use 2.2.10 kernel headers by default on *-linux targets. + * Docs in /usr/share/doc. + * debian/control.in: Update Standards-Version to 3.0.0. + * debian/fhs.dpatch: Adjust for FHS 2.1pre2 /var/mail wording. + * debian/libc.postinst: Symlink /var/mail to /var/spool/mail. + * Integrate changes from Jim Pick's NMUs for arm (closes:#40927,#40479,#40691). + * debian/patches/ieee754_y0.dpatch: Upstream fix for yn() issue. + * debian/patches/linux-mmap64.dpatch: Fix for mmap64() on powerpc + (maybe others too). + * debian/patches/libio-oldiopopen.dpatch: Fix for glibc 2.0 compat popen(). + * debian/copyright: + - Update URLs + - Add libio license + - s%/usr/doc/copyright%/usr/share/common-licenses% + + -- Joel Klecker Wed, 7 Jul 1999 17:36:23 -0700 + +glibc (2.1.1-12.3) unstable; urgency=low + + * Non-maintainer upload. + * Oops, messed up tftp patch for ARM. + + -- Jim Pick Wed, 7 Jul 1999 00:15:48 -0700 + +glibc (2.1.1-12.2) unstable; urgency=low + + * Non-maintainer upload. + * Another patch for ARM to fix tftp struct alignment problem. + + -- Jim Pick Thu, 1 Jul 1999 09:38:02 -0700 + +glibc (2.1.1-12.1) unstable; urgency=low + + * Non-maintainer upload. + * Include patch for ARM to fix dynamic linker. + + -- Jim Pick Thu, 17 Jun 1999 21:11:59 -0700 + +glibc (2.1.1-12) unstable; urgency=low + + * debian/rules: Use /var/lib/misc here too. + * debian/tzconfig: Fix #! line. + * debian/libc.postinst: Minor adjustments. + + -- Joel Klecker Tue, 15 Jun 1999 09:24:49 -0700 + +glibc (2.1.1-11) unstable; urgency=low + + * debian/patches/glibcbug.dpatch: New file. + - Fixes glibcbug to use `sensible-editor' + * debian/patches/fhs.dpatch: Deal with _PATH_VARDB. + * debian/patches/m68k-chown.dpatch: Fix paths (closes:Bug#37933). + * $(libc): Add HTML version of glibc FAQ. + * tzselect is crap, restore old version of tzconfig. + * Use 2.2.9 kernel headers by default on *-linux targets. + + -- Joel Klecker Sun, 13 Jun 1999 09:34:41 -0700 + +glibc (2.1.1-10) unstable; urgency=low + + * debian/libc.postinst: Redirect stdout/stderr to /dev/null when + restarting services (closes:Bug#38413). + * debian/patches/fhs.dpatch: Alter slightly for FHS 2.1 draft. + + -- Joel Klecker Mon, 31 May 1999 01:45:27 -0700 + +glibc (2.1.1-9) unstable; urgency=low + + * 2.1.1 final (closes:Bug#38178). + * -7 was accidentally/intentionally compiled with gcc 2.95pre. + * -8 was a local build. + + -- Joel Klecker Mon, 24 May 1999 22:10:01 -0700 + +glibc (2.1.1-8) unstable; urgency=low + + * Rebuild with egcs 1.1.2. + (/me hides) + + -- Joel Klecker Sun, 23 May 1999 21:28:29 -0700 + +glibc (2.1.1-7) unstable; urgency=low + + * Make sure all patches get applied (closes:Bug#37951,Bug#37974). + * Fixes for m68k via Roman Hodek + - (debian/rules): Add new m68k-chown patch (closes:Bug#38048). + - (debian/depflags.mk): Fix m68k case (closes:Bug#37933). + * There were some localedata changes in format between -5 and -6 + (closes:Bug#37850,Bug#37822,Bug#37829). + * Add patch to fix install-locales target when localedata is not installed. + * Build locales in the `locales' target + (no sense building them in the arch-indep install target). + + -- Joel Klecker Thu, 20 May 1999 14:02:15 -0700 + +glibc (2.1.1-6) unstable; urgency=low + + * 2.1.1pre3. + * (debian/rules): Set BASH and KSH to /bin/bash in configparms. + * (debian/libc.preinst): sparc fix (closes:Bug#37415,Bug#37616). + * (debian/nscd.prerm): Stop nscd before removing it (closes:Bug#37416). + + -- Joel Klecker Mon, 17 May 1999 19:29:12 -0700 + +glibc (2.1.1-5) unstable; urgency=low + + * CVS as of 1999-05-08. + + -- Joel Klecker Sat, 8 May 1999 19:31:52 -0700 + +glibc (2.1.1-4) unstable; urgency=low + + * Fix logic errors in tzconfig. + + -- Joel Klecker Sat, 8 May 1999 00:07:44 -0700 + +glibc (2.1.1-3) unstable; urgency=low + + * 2.1.1pre2. + * glibc-compat 2.1.0. + * debian/copyright: Update URLs for upstream source locations. + * debian/devpts.init: Rewrite for more sensible handling of devfs. + * debian/libc.postinst: Be more paranoid about /etc/timezone, and + always remake /etc/localtime symlink. + * debian/sysdeps.mk: Add sparc to HAVE_LIBC4 to deal with lddlibc4. + * debian/rules: Don't apply sparc32-ldd patch. + * debian/patches/sparc32-ldd.dpatch: delete. + + -- Joel Klecker Fri, 7 May 1999 10:40:11 -0700 + +glibc (2.1.1-2) unstable; urgency=low + + * $(libc): replace locales << 2.1.1-1 + * debian/depflags.mk: clean up + * debian/control.in: locales: remove depend on @libc@ (closes:Bug#36654). + * debian/devpts.sh: Remove bashisms (closes:Bug#36552). + * debian/libc.postinst: + - Use ln -sf instead of zic -l (closes:Bug#36305). + - If upgrading from glibc 2.0, restart services potentially affected + by libnss_* upgrade. + * debian/libc.preinst: Add kernel version sanity check for sparc. + * debian/rules: + - Fix reverse-patches target (closes:Bug#36574). + - Fix libexecdir handling (closes:Bug#36673). + - locales is binary-all, so build it in binary-indep, not binary-arch. + * debian/sysdeps.mk: $(shlib_depend): >= 2.0.105 for sparc. + * locales: Add eo_EO (Esperanto) locale definition. + + -- Joel Klecker Sat, 1 May 1999 22:22:22 -0700 + +glibc (2.1.1-1) unstable; urgency=low + + * Using maintainer versions now; 2.1.1 is still in pre-release. + * CVS as of 1999-04-19. + * Upgrade glibc-compat addon. + * Add kernel version sanity check to nscd init script. + * Slight tweaks to devpts.sh init script. + * Remove hurd-fcntl patch, it is applied upstream. + * Fix libc.preinst libnss code. + * Symlink /var/db to /var/state/glibc for backward compatibility. + * Add zh_TW.Big5 locale and BIG5_1984 charmap. + * Revert to ln -sf instead of zic -l in tzconfig (closes:Bug#36305). + * Add latest version of sparc32-chown patch. + * Move architecture-dependant parts of locales to other packages + and make it Architecture: all. + * Move locale and localedef to $(libc); and split gconv-modules into its + own package. + + -- Joel Klecker Tue, 20 Apr 1999 15:09:18 -0700 + +glibc (2.1.1-0.2) unstable; urgency=low + + * Upgrade to latest CVS sources. + - Fixes ttyname problem which affected screen (closes:Bug#35695). + - libio backward compatibility fixes. + - Many other fixes. + * Put manpages in /usr/share/man, info in /usr/share/info. + * Add devpts.sh init script and /etc/default/devpts to configure it. + * Better FHS compliance. + - /var/db -> /var/state/glibc. + - --libexecdir=/usr/lib (my reading of the FHS seems to allow + executables directly in /usr/lib). + + -- Joel Klecker Wed, 7 Apr 1999 14:47:08 -0700 + +glibc (2.1.1-0.1) unstable; urgency=low + + * Now using NMU-style versions for prereleases. + * Don't start utmpd. + * Somehow the old nss modules (libnss_*.so.1) slipped out + of the last release, put them back. + * Let libc keep its x bit. + (executing it presents some interesting output) + + -- Joel Klecker Wed, 17 Mar 1999 00:44:44 -0800 + +glibc (2.1.1-0pre1.3) unstable; urgency=low + + * Fix source package. + * $(libc)-dbg: Install libpthread (closes:Bug#34461). + * $(libc): Add note about devpts and services to postinst. + - Recreate databases in /var/db if upgrading from glibc 2.0.x + (closes:Bug#34442) + - i386, alpha, m68k: Conflict with libtricks, apt (<< 0.1.10.1). + * Change default_cflags to -O2 -g. + * Allow make check to fail. + + -- Joel Klecker Sat, 13 Mar 1999 15:14:50 -0800 + +glibc (2.1.1-0pre1.2) unstable; urgency=low + + * strip shared libs with --strip-debug instead of --strip-unneeded. + * Loosened shlibs depend. + + -- Joel Klecker Fri, 12 Mar 1999 22:33:01 -0800 + +glibc (2.1.1-0pre1.1) unstable; urgency=low + + * Fix $(libc) replaces on i386. + + -- Joel Klecker Fri, 12 Mar 1999 14:47:28 -0800 + +glibc (2.1.1-0pre1) unstable; urgency=low + + * New upstream release. + * Really release this one to unstable. + + -- Joel Klecker Wed, 10 Mar 1999 09:14:29 -0800 + +glibc (2.1-4) unstable; urgency=low + + * First release for unstable. + * Add glibc-compat addon. + * $(libc): Conflict with libwcsmbs + - Start utmpd and touch /var/run/utmpx, /var/log/wtmpx. + * $(libc)-dbg: Install unstripped shared libs in /usr/lib/glibc_dbg. + * $(libc)-prof: Strip libraries. + * glibc-doc: Remove cruft from top-level of info dir. + * Split nscd into separate package. + * Fixed $KERNEL_SOURCE handling. + * Bugs fixed: 19264, 22788, 26148, 26306, 30609, 30773, 31415 + (will elaborate later :) + + -- Joel Klecker Fri, 5 Mar 1999 11:29:44 -0800 + +glibc (2.1-3) unstable; urgency=low + + * (debian/depflags.mk): + - Correct typo + - Add libc_dev_control_flags for Conflicts + + -- Joel Klecker Mon, 8 Feb 1999 03:22:27 -0800 + +glibc (2.1-2) unstable; urgency=low + + * Get shlibs file dependencies correct. + + -- Joel Klecker Sat, 6 Feb 1999 22:56:22 -0800 + +glibc (2.1-1) unstable; urgency=low + + * New upstream release. + * (debian/control.in): Update maintainer address. + * (debian/depflags.mk): + $(libc): conflict and replace timezone, timezones; replace libdb2 + * (debian/rules): + $(libc)-dev: copy subdirectories from $(KERNEL_HEADERS)/linux too. + timezones: remove + $(libc): Put timezone data, and the zic and zdump utils here + * Sync with HURD again. + * Removed hurd-utimes patch, it is integrated upstream. + + -- Joel Klecker Sat, 6 Feb 1999 12:26:10 -0800 + --- eglibc-2.13.orig/debian/libc6-amd64.symbols.i386 +++ eglibc-2.13/debian/libc6-amd64.symbols.i386 @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux-x86-64.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/rules +++ eglibc-2.13/debian/rules @@ -0,0 +1,222 @@ +#! /usr/bin/make -f +# -*- makefile -*- +# debian/rules file for GNU libc. +# Copyright 1998, 1999 by Joel Klecker +# Copyright 2000 Ben Collins +# Copyright 2003 Jeff Bailey +# This Makefile is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# What are the phases to building glibc? + +# Unpack main tarball +# Do any necessary overlays +# Apply patches +# Determine how many builds there are to do. For Each build: + +# Create build directory +# Configure +# Build +# Test as desired +# Install to package directories + +# Run debian magic to build packages. + +# Things you may need to customise: + +# These are done as absolute paths so that in the case of filesystem size +# limitations, they can be overridden and spread all over. +build-tree := build-tree +stamp := $(CURDIR)/stamp-dir/ +DUMMY := $(shell mkdir -p $(stamp)) + +# The minimum package version with which these packages are compatible. +include debian/shlibver +shlib_dep = $(libc) (>= $(shlib_dep_ver)) + +# The version of the C library that locales needs for its format. +include debian/locales-depver + +# Beyond here you shouldn't need to customise anything: + +export SHELL = /bin/bash -e + +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +DEB_HOST_GNU_CPU ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_HOST_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM) +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) +DEB_BUILD_GNU_CPU ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM) + +DEB_HOST_GNU_CPU_ALT ?= +DEB_HOST_GNU_TYPE_ALT ?= + +DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':')) + +DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') +EGLIBC_VERSION = $(shell echo $(DEB_VERSION) | sed -e 's/-.*//') + +DEB_SRCDIR ?= $(CURDIR) +DEB_BUILDDIR ?= $(build-tree)/$(DEB_HOST_ARCH)-$(curpass) + +EGLIBC_SOURCES = $(addprefix $(shell basename $(CURDIR))/, \ + $(filter-out debian $(shell basename $(stamp)) $(build-tree), $(wildcard *))) + +# The kernel uses different CPU appreviations (uname output) than the GNU +# tools do (config.sub). Map them. +KERNEL_HOST_CPU := $(subst powerpc,ppc,$(DEB_HOST_GNU_CPU)) + +# Support multiple makes at once based on number of processors +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +NJOBS := -j $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),hppa)) + ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + DEB_BUILD_OPTIONS += nocheck + export DEB_BUILD_OPTIONS + endif +endif + +# use the package settings, not the settings from the environment +define unsetenv + unexport $(1) + $(1) = +endef +$(foreach v, CPPFLAGS CFLAGS CXXFLAGS LDFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) + +# Default setup +EGLIBC_PASSES ?= libc + +prefix=/usr +bindir=$(prefix)/bin +datadir=$(prefix)/share +localedir=$(prefix)/lib/locale +sysconfdir=/etc +libexecdir=$(prefix)/lib +rootsbindir=/sbin +includedir=$(prefix)/include +docdir=$(prefix)/share/doc +mandir=$(prefix)/share/man +sbindir=$(prefix)/sbin +rtlddir=/lib +slibdir=/lib/$(DEB_HOST_MULTIARCH) +libdir=/usr/lib/$(DEB_HOST_MULTIARCH) + +BUILD_CC = gcc-4.6 -fno-stack-protector -U_FORTIFY_SOURCE +BUILD_CXX = g++-4.6 -fno-stack-protector -U_FORTIFY_SOURCE + +RUN_TESTSUITE = yes + +# Set CC and CXX for cross-compiling +ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) +CC = $(DEB_HOST_GNU_TYPE)-gcc +CXX = $(DEB_HOST_GNU_TYPE)-g++ +else +CC = $(BUILD_CC) +CXX = $(BUILD_CXX) +endif + +BUILD_CFLAGS = -O2 -g +HOST_CFLAGS = -pipe -O2 -fstrict-aliasing -g $(call xx,extra_cflags) + +configure_target := $(DEB_HOST_GNU_TYPE) + +# Normally we'll just use this for --build. If the architecture requires +# that build daemons be able to run a particular optimized library, then +# they can set the --build to match --host for that optimized build. +# Among other things this lets tests run. +configure_build := $(DEB_BUILD_GNU_TYPE) + +log_build = $(build-tree)/log-build-$(call xx,configure_target)-$(curpass) +log_test = $(build-tree)/log-test-$(call xx,configure_target)-$(curpass) +log_results = $(build-tree)/test-results-$(call xx,configure_target)-$(curpass) +log_expected = debian/testsuite-checking/expected-results-$(call xx,configure_target)-$(curpass) + +# Which build pass are we on? +curpass = $(filter-out %_,$(subst _,_ ,$@)) + +ifeq ($(DEB_STAGE),stage1) + DEB_ARCH_REGULAR_PACKAGES = $(libc)-dev + DEB_INDEP_REGULAR_PACKAGES = + DEB_UDEB_PACKAGES = +else + DEB_ARCH_REGULAR_PACKAGES = $(libc) $(libc)-dev $(libc)-dbg $(libc)-prof $(libc)-pic libc-bin libc-dev-bin multiarch-support + DEB_INDEP_REGULAR_PACKAGES = glibc-doc eglibc-source + DEB_UDEB_PACKAGES = $(libc)-udeb libnss-dns-udeb libnss-files-udeb +endif + +# Generic kernel version check +define kernel_check +(if [ $(CURRENT_KERNEL_VERSION) -lt $(1) ]; then \ + false; \ +fi) +endef + +# Include libidn for both NPTL and LinuxThreads targets. +standard-add-ons = libidn, + +# Pull in all the per-arch magic! + +-include debian/sysdeps/$(DEB_HOST_ARCH_OS).mk +-include debian/sysdeps/$(DEB_HOST_ARCH).mk + +# Don't run dh_strip on this package +NOSTRIP_$(libc)-dbg = 1 + +ifneq ($(DEB_STAGE),stage1) + ifeq ($(threads),yes) + DEB_ARCH_REGULAR_PACKAGES += nscd + endif +endif + +# And now the rules... +include debian/rules.d/*.mk + +clean:: unpatch + make -C $(CURDIR)/linuxthreads/man clean + make -C $(CURDIR)/debian/local/memcpy-wrapper clean + -make -C $(CURDIR)/manual realclean + rm -f $(CURDIR)/po/*.mo + rm -rf $(patsubst %,debian/tmp-%,$(EGLIBC_PASSES)) + rm -rf $(build-tree) + rm -rf $(stamp) + rm -rf debian/include + rm -f manual/stamp-* manual/*.html manual/libm-err.texi manual/pkgvers.texi + rm -f po/*.mo + +# Required Debian targets +build-arch: $(stamp)info \ + $(patsubst %,$(stamp)build_%,$(EGLIBC_PASSES)) \ + $(patsubst %,$(stamp)check_%,$(EGLIBC_PASSES)) + +build-indep: $(stamp)source $(stamp)doc + +build: pre-build build-arch build-indep + + +binary-indep: build-indep testroot debian/control $(build-tree) \ + $(patsubst %,$(stamp)binaryinst_%,$(DEB_INDEP_REGULAR_PACKAGES)) + +binary-arch: build-arch testroot debian/control $(build-tree) \ + $(patsubst %,$(stamp)binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES)) \ + $(patsubst %,$(stamp)binaryinst_%,$(DEB_UDEB_PACKAGES)) + +binary: binary-indep binary-arch + +pre-build: +#ifneq (,$(filter $(DEB_HOST_ARCH), armel i386)) +# @echo Build it ... +#else +# @echo Explicitely fail the build for architecture $(DEB_HOST_ARCH) +# false +#endif + +testroot: + dh_testroot --- eglibc-2.13.orig/debian/libc6-ppc64.symbols.powerpc +++ eglibc-2.13/debian/libc6-ppc64.symbols.powerpc @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld64.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc0.1.symbols.common +++ eglibc-2.13/debian/libc0.1.symbols.common @@ -0,0 +1,56 @@ +libc.so.0.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libBrokenLocale.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 +#include "symbols.wildcards" +libcidn.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# #MINVER# + __invoke_dynamic_linker__@Base 2.3.6 + calloc@Base 2.3.6 + free@Base 2.3.6 + malloc@Base 2.3.6 + mmap64@Base 2.3.6 + mmap@Base 2.3.6 + munmap@Base 2.3.6 + realloc@Base 2.3.6 +#include "symbols.wildcards" +libnsl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nisplus.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpcprofile.so #PACKAGE# #MINVER# + __cyg_profile_func_enter@Base 2.3.6 + __cyg_profile_func_exit@Base 2.3.6 + __invoke_dynamic_linker__@Base 2.3.6 +#include "symbols.wildcards" +libresolv.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +librt.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libutil.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libanl.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpthread.so.0 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libthread_db.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.amd64 +++ eglibc-2.13/debian/libc6.symbols.amd64 @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux-x86-64.so.2 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/debver2localesdep.pl +++ eglibc-2.13/debian/debver2localesdep.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +for my $i (0..$#ARGV) { + $_ = $ARGV[$i]; + /(.*)-(.*)/m; + + $debver = $1; + $devrev = $2; + + @revs = split('\.', $devrev); + + $devrev = $revs[0]; + $devrev = "$devrev.$revs[1]" if defined($revs[1]) and $revs[1] ne "0"; + + print ", " if $i > 0; + print "glibc-$debver-$devrev"; +} +print "\n"; --- eglibc-2.13.orig/debian/libc6.symbols.armel +++ eglibc-2.13/debian/libc6.symbols.armel @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld-linux.so.3 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc0.1-i386.symbols.kfreebsd-amd64 +++ eglibc-2.13/debian/libc0.1-i386.symbols.kfreebsd-amd64 @@ -0,0 +1,5 @@ +#include "libc0.1.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.0.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6.symbols.sparc +++ eglibc-2.13/debian/libc6.symbols.sparc @@ -0,0 +1,50 @@ +#include "libc6.symbols.common" +ld-linux.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +### +### Override headers already defined in libc6.symbols.common +### +# Minimal dependency set to 2.6 due to SPARCV8 -> SPARCV8PLUS ABI transition +libBrokenLocale.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libSegFault.so #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcidn.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libcrypt.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libdl.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libm.so.6 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libmemusage.so #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +libnsl.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_compat.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_dns.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_files.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_hesiod.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nis.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libnss_nisplus.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpcprofile.so #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libresolv.so.2 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +librt.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libutil.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libanl.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libpthread.so.0 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" +libthread_db.so.1 #PACKAGE# (>= 2.6), #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6-mipsn32.symbols.mips +++ eglibc-2.13/debian/libc6-mipsn32.symbols.mips @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/libc6-mips64.symbols.mips +++ eglibc-2.13/debian/libc6-mips64.symbols.mips @@ -0,0 +1,5 @@ +#include "libc6.symbols.common" +ld.so.1 #PACKAGE# #MINVER# +#include "symbols.wildcards" +libc.so.6 #PACKAGE# #MINVER# +#include "symbols.wildcards" --- eglibc-2.13.orig/debian/eglibc-source.filelist +++ eglibc-2.13/debian/eglibc-source.filelist @@ -0,0 +1,59 @@ +debian/eglibc-source.filelist +debian/libc0.1-i386.symbols.kfreebsd-amd64 +debian/libc0.1.symbols.common +debian/libc0.1.symbols.kfreebsd-amd64 +debian/libc0.1.symbols.kfreebsd-i386 +debian/libc6-amd64.symbols.i386 +debian/libc6-i386.symbols.amd64 +debian/libc6-mips64.symbols.mips +debian/libc6-mips64.symbols.mipsel +debian/libc6-mipsn32.symbols.mips +debian/libc6-mipsn32.symbols.mipsel +debian/libc6-ppc64.symbols.powerpc +debian/libc6-s390x.symbols.s390 +debian/libc6-sparc64.symbols.sparc +debian/libc6.1.symbols.alpha +debian/libc6.1.symbols.ia64 +debian/libc6.symbols.amd64 +debian/libc6.symbols.arm +debian/libc6.symbols.armel +debian/libc6.symbols.armhf +debian/libc6.symbols.common +debian/libc6.symbols.hppa +debian/libc6.symbols.i386 +debian/libc6.symbols.m68k +debian/libc6.symbols.mips +debian/libc6.symbols.mipsel +debian/libc6.symbols.powerpc +debian/libc6.symbols.s390 +debian/libc6.symbols.sparc +debian/libc6.symbols.sparc64 +debian/README +debian/README.source +debian/TODO +debian/bug +debian/changelog +debian/changelog.upstream +debian/compat +debian/control +debian/control.in +debian/copyright +debian/debhelper.in +debian/debver2localesdep.pl +debian/generate-supported.mk +debian/local +debian/locales-depver +debian/patches +debian/po +debian/quiltrc +debian/rules +debian/rules.d +debian/script.in +debian/shlibs-add-udebs +debian/shlibver +debian/source +debian/symbols.wildcards +debian/sysdeps +debian/testsuite-checking +debian/watch +debian/wrapper --- eglibc-2.13.orig/debian/patches/svn-updates.diff +++ eglibc-2.13/debian/patches/svn-updates.diff @@ -0,0 +1,1081 @@ +SVN update of svn://svn.eglibc.org/branches/eglibc-2_13 from revision 12879 + +--- a/ChangeLog (revision 12879) ++++ b/ChangeLog (revision 15264) +@@ -1,3 +1,46 @@ ++2011-05-30 Ulrich Drepper ++ ++ [BZ #12454] ++ * elf/dl-deps.c (_dl_map_object_deps): Run initializer sorting only ++ when there are multiple maps. ++ * elf/dl-fini.c (_dl_sort_fini): Check for list of one. ++ (_dl_fini): Remove test here. ++ ++ * elf/rtld.c (dl_main): Don't allow the loader to load itself. ++ ++2011-02-06 Mike Frysinger ++ ++ [BZ #12653] ++ * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Only protect ++ MEMCPY_CHK with USE_AS_BCOPY ifdef check. ++ * sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise. ++ * sysdeps/x86_64/multiarch/memcpy-ssse3.S: Likewise. ++ * sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: Likewise. ++ ++2010-09-28 Andreas Schwab ++ Ulrich Drepper ++ ++ [BZ #12489] ++ * elf/rtld.c (dl_main): Move setting of GLRO(dl_init_all_dirs) ++ before performing relro protection. At old place add assertion ++ to make sure nothing changed. ++ ++2011-02-16 Ryan S. Arnold ++ ++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: ++ (INTERNAL_VSYSCALL_NCS INTERNAL_SYSCALL_NCS): Remove erroneous (int) ++ cast from r3. ++ * sysdeps/wordsize-64/Makefile: New file. Add tst-writev to ++ 'tests' variable. ++ * sysdeps/wordsize-64/tst-writev.c: New file. ++ ++2011-02-15 Ryan S. Arnold ++ ++ * sysdeps/powerpc/powerpc64/power7/Makefile: New file which adds ++ -mno-vsx to the CFLAGS-rtld.c variable to avoid using VSX registers and ++ insns in _dl_start to prevent a TOC reference before relocs are ++ resolved. ++ + 2011-02-02 Ulrich Drepper + + * elf/dl-runtime.c (_dl_call_pltexit): Pass correct address of the +--- a/sysdeps/powerpc/powerpc32/dl-trampoline.S (revision 12879) ++++ b/sysdeps/powerpc/powerpc32/dl-trampoline.S (revision 15264) +@@ -137,6 +137,7 @@ + stw r9,40(r1) + stw r10,44(r1) + stw r0,8(r1) ++#ifndef __NO_FPRS__ + # Save the floating point registers + stfd fp1,48(r1) + stfd fp2,56(r1) +@@ -146,6 +147,7 @@ + stfd fp6,88(r1) + stfd fp7,96(r1) + stfd fp8,104(r1) ++#endif + # XXX TODO: store vmx registers + # Load the extra parameters. + addi r6,r1,16 +@@ -169,6 +171,7 @@ + lwz r4,20(r1) + lwz r3,16(r1) + lwz r0,12(r1) ++#ifndef __NO_FPRS__ + # Load the floating point registers. + lfd fp1,48(r1) + lfd fp2,56(r1) +@@ -178,6 +181,7 @@ + lfd fp6,88(r1) + lfd fp7,96(r1) + lfd fp8,104(r1) ++#endif + # ...unwind the stack frame, and jump to the PLT entry we updated. + addi r1,r1,320 + bctr +--- a/sysdeps/powerpc/powerpc64/power7/Makefile (revision 0) ++++ b/sysdeps/powerpc/powerpc64/power7/Makefile (revision 15264) +@@ -0,0 +1,5 @@ ++ifeq ($(subdir),elf) ++# Prevent the use of VSX registers and insns in _dl_start, which under -O3 ++# optimization may require a TOC reference before relocations are resolved. ++CFLAGS-rtld.c += -mno-vsx ++endif +--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (revision 12879) ++++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (revision 15264) +@@ -172,7 +172,7 @@ + : "r9", "r10", "r11", "r12", \ + "cr0", "ctr", "lr", "memory"); \ + err = (long int) r0; \ +- (int) r3; \ ++ r3; \ + }) + + #undef INLINE_SYSCALL +@@ -219,7 +219,7 @@ + : "r9", "r10", "r11", "r12", \ + "cr0", "ctr", "memory"); \ + err = r0; \ +- (int) r3; \ ++ r3; \ + }) + #define INTERNAL_SYSCALL(name, err, nr, args...) \ + INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, args) +--- a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S (revision 12879) ++++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S (revision 15264) +@@ -110,7 +110,7 @@ + #endif + + .section .text.ssse3,"ax",@progbits +-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY ++#if !defined USE_AS_BCOPY + ENTRY (MEMCPY_CHK) + movl 12(%esp), %eax + cmpl %eax, 16(%esp) +--- a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S (revision 12879) ++++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S (revision 15264) +@@ -110,7 +110,7 @@ + #endif + + .section .text.ssse3,"ax",@progbits +-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BCOPY ++#if !defined USE_AS_BCOPY + ENTRY (MEMCPY_CHK) + movl 12(%esp), %eax + cmpl %eax, 16(%esp) +--- a/sysdeps/wordsize-64/tst-writev.c (revision 0) ++++ b/sysdeps/wordsize-64/tst-writev.c (revision 15264) +@@ -0,0 +1,107 @@ ++/* Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ryan S. Arnold , 2011. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* The purpose of this test is to verify that the INTERNAL_[V]SYSCALL_NCS ++ macros on 64-bit platforms don't cast the return type to (int) which would ++ erroneously sign extend the return value should the high bit of the bottom ++ half of the word be '1'. */ ++ ++#if 0 ++/* Used to test the non power-of-2 code path. */ ++#undef IOV_MAX ++#define IOV_MAX 1000 ++#endif ++ ++/* writev() should report that it has written EXPECTED number of bytes. */ ++#define EXPECTED ((size_t) INT32_MAX + 1) ++ ++static int ++do_test (void) ++{ ++ struct iovec iv[IOV_MAX]; ++ /* POSIX doesn't guarantee that IOV_MAX is pow of 2 but we're optimistic. */ ++ size_t bufsz = EXPECTED / IOV_MAX; ++ size_t bufrem = EXPECTED % IOV_MAX; ++ ++ /* If there's a remainder then IOV_MAX probably isn't a power of 2 and we ++ need to make bufsz bigger so that the last iovec, iv[IOV_MAX-1], is free ++ for the remainder. */ ++ if (bufrem) ++ { ++ bufsz = bufsz + 1; ++ bufrem = EXPECTED - (bufsz * (IOV_MAX - 1)); ++ } ++ ++ /* We writev to /dev/null since we're just testing writev's return value. */ ++ int fd = open (_PATH_DEVNULL, O_WRONLY); ++ if (fd == -1) ++ { ++ printf ("Unable to open /dev/null for writing.\n"); ++ return -1; ++ } ++ ++ iv[0].iov_base = malloc (bufsz); ++ if (iv[0].iov_base == NULL) ++ { ++ printf ("malloc (%zu) failed.\n", bufsz); ++ close (fd); ++ return -1; ++ } ++ iv[0].iov_len = bufsz; ++ ++ /* We optimistically presume that there isn't a remainder and set all iovec ++ instances to the same base and len as the first instance. */ ++ for (int i = 1; i < IOV_MAX; i++) ++ { ++ /* We don't care what the data is so reuse the allocation from iv[0]; */ ++ iv[i].iov_base = iv[0].iov_base; ++ iv[i].iov_len = iv[0].iov_len; ++ } ++ ++ /* If there is a remainder then we correct the last iov_len. */ ++ if (bufrem) ++ iv[IOV_MAX - 1].iov_len = bufrem; ++ ++ /* Write junk to /dev/null with the writev syscall in order to get a return ++ of INT32_MAX+1 bytes to verify that the INTERNAL_SYSCALL wrappers aren't ++ mangling the result if the signbit of a 32-bit number is set. */ ++ ssize_t ret = writev (fd, iv, IOV_MAX); ++ ++ free (iv[0].iov_base); ++ close (fd); ++ ++ if (ret != (ssize_t) EXPECTED) ++ { ++ printf ("writev() return value: %zd != EXPECTED: %zd\n", ret, EXPECTED); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +--- a/sysdeps/wordsize-64/Makefile (revision 0) ++++ b/sysdeps/wordsize-64/Makefile (revision 15264) +@@ -0,0 +1,6 @@ ++ifeq ($(subdir),misc) ++tests += tst-writev ++ ++# Time enough for a large writev syscall to complete. ++tst-writev-ENV = TIMEOUTFACTOR="10" ++endif +--- a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S (revision 12879) ++++ b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S (revision 15264) +@@ -49,7 +49,7 @@ + ud2 + + .section .text.ssse3,"ax",@progbits +-#if defined SHARED && !defined NOT_IN_libc ++#if !defined USE_AS_BCOPY + ENTRY (MEMCPY_CHK) + cmpq %rdx, %rcx + jb HIDDEN_JUMPTARGET (__chk_fail) +--- a/sysdeps/x86_64/multiarch/memcpy-ssse3.S (revision 12879) ++++ b/sysdeps/x86_64/multiarch/memcpy-ssse3.S (revision 15264) +@@ -49,7 +49,7 @@ + ud2 + + .section .text.ssse3,"ax",@progbits +-#if defined SHARED && !defined NOT_IN_libc ++#if !defined USE_AS_BCOPY + ENTRY (MEMCPY_CHK) + cmpq %rdx, %rcx + jb HIDDEN_JUMPTARGET (__chk_fail) +--- a/NEWS (revision 12879) ++++ b/NEWS (revision 15264) +@@ -1,4 +1,4 @@ +-GNU C Library NEWS -- history of user-visible changes. 2011-1-19 ++GNU C Library NEWS -- history of user-visible changes. 2011-5-30 + Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc. + See the end for copying conditions. + +@@ -13,7 +13,7 @@ + 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005, + 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140, + 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378, +- 12394, 12397 ++ 12394, 12397, 12489, 12653, 12454 + + * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark + +--- a/resolv/res_libc.c (revision 12879) ++++ b/resolv/res_libc.c (revision 15264) +@@ -28,6 +28,7 @@ + out) since res_init() should go into libc.so but the rest of that + file should not. */ + ++__libc_lock_define_initialized (static, lock); + extern unsigned long long int __res_initstamp attribute_hidden; + /* We have atomic increment operations on 64-bit platforms. */ + #if __WORDSIZE == 64 +@@ -35,7 +36,6 @@ + # define atomicincunlock(lock) (void) 0 + # define atomicinc(var) catomic_increment (&(var)) + #else +-__libc_lock_define_initialized (static, lock); + # define atomicinclock(lock) __libc_lock_lock (lock) + # define atomicincunlock(lock) __libc_lock_unlock (lock) + # define atomicinc(var) ++var +@@ -100,12 +100,12 @@ + + if (resp->options & RES_INIT) { + ret = stat (_PATH_RESCONF, &statbuf); ++ __libc_lock_lock (lock); + if ((ret == 0) && (last_mtime != statbuf.st_mtime)) { + last_mtime = statbuf.st_mtime; +- atomicinclock (lock); + atomicinc (__res_initstamp); +- atomicincunlock (lock); + } ++ __libc_lock_unlock (lock); + if (__res_initstamp != resp->_u._ext.initstamp) { + if (resp->nscount > 0) + __res_iclose (resp, true); +--- a/ChangeLog.eglibc (revision 12879) ++++ b/ChangeLog.eglibc (revision 15264) +@@ -1,3 +1,29 @@ ++2011-09-06 Dr. David Alan Gilbert ++ ++ * elf/Makefile: Push tst-initorder through cross-test-wrapper. ++ ++2011-07-22 Denis Zaitceff ++ ++ * elf/dl-support.c, elf/rtld.c: Include . ++ ++2011-07-06 Sebastan Andrzej Siewior ++ ++ * sysdeps/powerpc/powerpc32/dl-trampoline.S: Put __NO_FPRS__ ++ around floating point opcodes. ++ ++2011-06-23 Maxim Kuvyrkov ++ ++ Backport from trunk: ++ 2011-06-23 Paul Pluzhnikov ++ * resolv/res_libc.c (__res_initstamp): Declare unconditionally. ++ (__res_maybe_init): Avoid double-checked locking. ++ ++2011-06-10 Maxim Kuvyrkov ++ ++ Backport from trunk: ++ 2011-02-28 Denis Zaitceff ++ * elf/dl-lookup.c (GLRO_dl_debug_mask): Apply the forgotten one. ++ + 2010-12-19 Gordon Schumacher + + * locale/xlocale.x (DEFINE_CATEGORY): Fix merge issue. +--- a/elf/dl-support.c (revision 12879) ++++ b/elf/dl-support.c (revision 15264) +@@ -20,6 +20,7 @@ + /* This file defines some things that for the dynamic linker are defined in + rtld.c and dl-sysdep.c in ways appropriate to bootstrap dynamic linking. */ + ++#include + #include + #include + #include +--- a/elf/Makefile (revision 12879) ++++ b/elf/Makefile (revision 15264) +@@ -1191,6 +1191,7 @@ + $(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so + + $(objpfx)tst-initorder.out: $(objpfx)tst-initorder ++ $(cross-test-wrapper) \ + $(elf-objpfx)${rtld-installed-name} \ + --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ + $< > $@ +--- a/elf/rtld.c (revision 12879) ++++ b/elf/rtld.c (revision 15264) +@@ -1,5 +1,5 @@ + /* Run time dynamic linker. +- Copyright (C) 1995-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ++ Copyright (C) 1995-2010, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -17,6 +17,7 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include + #include + #include + #include +@@ -2179,6 +2180,10 @@ + we need it in the memory handling later. */ + GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist; + ++ /* Remember the last search directory added at startup, now that ++ malloc will no longer be the one from dl-minimal.c. */ ++ GLRO(dl_init_all_dirs) = GL(dl_all_dirs); ++ + if (prelinked) + { + if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) +@@ -2298,9 +2303,8 @@ + lossage); + } + +- /* Remember the last search directory added at startup, now that +- malloc will no longer be the one from dl-minimal.c. */ +- GLRO(dl_init_all_dirs) = GL(dl_all_dirs); ++ /* Make sure no new search directories have been added. */ ++ assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); + + if (! prelinked && rtld_multiple_ref) + { +--- a/elf/dl-fini.c (revision 12879) ++++ b/elf/dl-fini.c (revision 15264) +@@ -33,9 +33,12 @@ + _dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps, + char *used, Lmid_t ns) + { ++ /* A list of one element need not be sorted. */ ++ if (nmaps == 1) ++ return; ++ + /* We can skip looking for the binary itself which is at the front + of the search list for the main namespace. */ +- assert (nmaps > 1); + unsigned int i = ns == LM_ID_BASE; + bool seen[nmaps]; + memset (seen, false, nmaps * sizeof (seen[0])); +@@ -195,9 +198,8 @@ + assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1); + nmaps = i; + +- if (nmaps > 1) +- /* Now we have to do the sorting. */ +- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); ++ /* Now we have to do the sorting. */ ++ _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); + + /* We do not rely on the linked list of loaded object anymore from + this point on. We have our own list here (maps). The various +--- a/elf/dl-deps.c (revision 12879) ++++ b/elf/dl-deps.c (revision 15264) +@@ -613,61 +613,64 @@ + map->l_searchlist.r_list[i]->l_reserved = 0; + } + +- /* Now determine the order in which the initialization has to happen. */ ++ /* Sort the initializer list to take dependencies into account. The binary ++ itself will always be initialize last. */ + memcpy (l_initfini, map->l_searchlist.r_list, + nlist * sizeof (struct link_map *)); +- +- /* We can skip looking for the binary itself which is at the front +- of the search list. */ +- assert (nlist > 1); +- i = 1; +- bool seen[nlist]; +- memset (seen, false, nlist * sizeof (seen[0])); +- while (1) ++ if (__builtin_expect (nlist > 1, 1)) + { +- /* Keep track of which object we looked at this round. */ +- seen[i] = true; +- struct link_map *thisp = l_initfini[i]; +- +- /* Find the last object in the list for which the current one is +- a dependency and move the current object behind the object +- with the dependency. */ +- unsigned int k = nlist - 1; +- while (k > i) ++ /* We can skip looking for the binary itself which is at the front ++ of the search list. */ ++ i = 1; ++ bool seen[nlist]; ++ memset (seen, false, nlist * sizeof (seen[0])); ++ while (1) + { +- struct link_map **runp = l_initfini[k]->l_initfini; +- if (runp != NULL) +- /* Look through the dependencies of the object. */ +- while (*runp != NULL) +- if (__builtin_expect (*runp++ == thisp, 0)) +- { +- /* Move the current object to the back past the last +- object with it as the dependency. */ +- memmove (&l_initfini[i], &l_initfini[i + 1], +- (k - i) * sizeof (l_initfini[0])); +- l_initfini[k] = thisp; ++ /* Keep track of which object we looked at this round. */ ++ seen[i] = true; ++ struct link_map *thisp = l_initfini[i]; + +- if (seen[i + 1]) ++ /* Find the last object in the list for which the current one is ++ a dependency and move the current object behind the object ++ with the dependency. */ ++ unsigned int k = nlist - 1; ++ while (k > i) ++ { ++ struct link_map **runp = l_initfini[k]->l_initfini; ++ if (runp != NULL) ++ /* Look through the dependencies of the object. */ ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == thisp, 0)) + { +- ++i; +- goto next_clear; ++ /* Move the current object to the back past the last ++ object with it as the dependency. */ ++ memmove (&l_initfini[i], &l_initfini[i + 1], ++ (k - i) * sizeof (l_initfini[0])); ++ l_initfini[k] = thisp; ++ ++ if (seen[i + 1]) ++ { ++ ++i; ++ goto next_clear; ++ } ++ ++ memmove (&seen[i], &seen[i + 1], ++ (k - i) * sizeof (seen[0])); ++ seen[k] = true; ++ ++ goto next; + } + +- memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); +- seen[k] = true; ++ --k; ++ } + +- goto next; +- } ++ if (++i == nlist) ++ break; ++ next_clear: ++ memset (&seen[i], false, (nlist - i) * sizeof (seen[0])); + +- --k; ++ next:; + } +- +- if (++i == nlist) +- break; +- next_clear: +- memset (&seen[i], false, (nlist - i) * sizeof (seen[0])); +- +- next:; + } + + /* Terminate the list of dependencies. */ +--- a/elf/dl-lookup.c (revision 12879) ++++ b/elf/dl-lookup.c (revision 15264) +@@ -423,7 +423,7 @@ + hash table. */ + if (__builtin_expect (tab->size, 0)) + { +- assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK); ++ assert (GLRO_dl_debug_mask & DL_DEBUG_PRELINK); + __rtld_lock_unlock_recursive (tab->lock); + goto success; + } +--- a/ports/sysdeps/arm/sysdep.h (revision 12879) ++++ b/ports/sysdeps/arm/sysdep.h (revision 15264) +@@ -18,6 +18,7 @@ + 02111-1307 USA. */ + + #include ++#include + + #if (!defined (__ARM_ARCH_2__) && !defined (__ARM_ARCH_3__) \ + && !defined (__ARM_ARCH_3M__) && !defined (__ARM_ARCH_4__)) +@@ -92,14 +93,25 @@ + + /* If compiled for profiling, call `mcount' at the start of each function. */ + #ifdef PROF ++/* Call __gnu_mcount_nc if GCC >= 4.4 and abi = EABI. */ ++#if __GNUC_PREREQ(4,4) && defined(__ARM_EABI__) + #define CALL_MCOUNT \ + str lr,[sp, #-4]!; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (lr, 0); \ + bl PLTJMP(mcount); \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (lr) ++#else /* else call _mcount */ ++#define CALL_MCOUNT \ ++ str lr,[sp, #-4]!; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (lr, 0); \ ++ bl PLTJMP(mcount); \ + ldr lr, [sp], #4; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (lr) ++#endif + #else + #define CALL_MCOUNT /* Do nothing. */ + #endif +@@ -109,8 +121,12 @@ + on this system, the asm identifier `syscall_error' intrudes on the + C name space. Make sure we use an innocuous name. */ + #define syscall_error __syscall_error ++#if __GNUC_PREREQ(4,4) && defined(__ARM_EABI__) ++#define mcount __gnu_mcount_nc ++#else + #define mcount _mcount + #endif ++#endif + + #if defined(__ARM_EABI__) + /* Tag_ABI_align8_preserved: This code preserves 8-byte +--- a/ports/sysdeps/arm/eabi/fsetexcptflg.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fsetexcptflg.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fegetround.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fegetround.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fegetenv.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fegetenv.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fesetround.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fesetround.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fesetenv.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fesetenv.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/setjmp.S (revision 12879) ++++ b/ports/sysdeps/arm/eabi/setjmp.S (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #define _SETJMP_H +--- a/ports/sysdeps/arm/eabi/ftestexcept.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/ftestexcept.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fpu_control.h (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fpu_control.h (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #ifndef _FPU_CONTROL_H + #define _FPU_CONTROL_H +--- a/ports/sysdeps/arm/eabi/fegetexcept.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fegetexcept.c (revision 15264) +@@ -13,10 +13,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/feholdexcpt.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/feholdexcpt.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fedisblxcpt.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fedisblxcpt.c (revision 15264) +@@ -13,10 +13,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/fraiseexcpt.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fraiseexcpt.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/bits/fenv.h (revision 12879) ++++ b/ports/sysdeps/arm/eabi/bits/fenv.h (revision 15264) +@@ -11,10 +11,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #ifndef _FENV_H + # error "Never use directly; include instead." +--- a/ports/sysdeps/arm/eabi/bits/predefs.h (revision 12879) ++++ b/ports/sysdeps/arm/eabi/bits/predefs.h (revision 15264) +@@ -11,10 +11,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #ifndef _FEATURES_H + # error "Never use directly; include instead." +--- a/ports/sysdeps/arm/eabi/__longjmp.S (revision 12879) ++++ b/ports/sysdeps/arm/eabi/__longjmp.S (revision 15264) +@@ -13,10 +13,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #define _SETJMP_H +--- a/ports/sysdeps/arm/eabi/fclrexcpt.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/fclrexcpt.c (revision 15264) +@@ -12,10 +12,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/eabi/feenablxcpt.c (revision 12879) ++++ b/ports/sysdeps/arm/eabi/feenablxcpt.c (revision 15264) +@@ -13,10 +13,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + #include +--- a/ports/sysdeps/arm/elf/start.S (revision 12879) ++++ b/ports/sysdeps/arm/elf/start.S (revision 15264) +@@ -134,6 +134,7 @@ + bl abort + + #ifdef SHARED ++ .align 2 + .L_GOT: + .word _GLOBAL_OFFSET_TABLE_ - .L_GOT + .word __libc_csu_fini(GOT) +--- a/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fma.c (revision 0) ++++ b/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fma.c (revision 15264) +@@ -0,0 +1 @@ ++#include +--- a/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaf.c (revision 0) ++++ b/ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaf.c (revision 15264) +@@ -0,0 +1 @@ ++#include +--- a/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (revision 12879) ++++ b/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (revision 15264) +@@ -11,10 +11,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S (revision 12879) ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S (revision 15264) +@@ -11,10 +11,10 @@ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +- 02110-1301, USA. */ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ + + #include + +@@ -52,13 +52,15 @@ + cfi_remember_state; \ + cmp sp, reg; \ + bls .Lok; \ ++ str r7, [sp, #-4]!; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (r7, 0); \ + mov r5, r0; \ + cfi_undefined (r5); \ + mov r7, #SYS_ify(sigaltstack); \ +- cfi_undefined (r7); \ + mov r0, #0; \ +- sub sp, sp, #16; /* >= sizeof (stack_t) */ \ +- cfi_adjust_cfa_offset (16); \ ++ sub sp, sp, #12; /* == sizeof (stack_t) */ \ ++ cfi_adjust_cfa_offset (12); \ + cfi_remember_state; \ + mov r1, sp; \ + swi #0; \ +@@ -74,6 +76,11 @@ + cmp r2, r3; \ + bhi .Lok2; \ + .Lfail: \ ++ add sp, sp, #12; \ ++ cfi_adjust_cfa_offset (-12); \ ++ ldr r7, [sp], #4; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (r7); \ + CALL_FAIL \ + cfi_restore_state; \ + .Lok2: \ +--- a/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c (revision 0) ++++ b/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c (revision 15264) +@@ -0,0 +1 @@ ++/* Empty. */ +--- a/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c (revision 0) ++++ b/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c (revision 15264) +@@ -0,0 +1 @@ ++/* Empty. */ +--- a/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (revision 12879) ++++ b/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (revision 15264) +@@ -1,5 +1,10 @@ + # File name Caller Syscall name # args Strong name Weak names + ++sync_file_range - sync_file_range i:iiii sync_file_range ++ + prlimit EXTRA prlimit64 i:iipp prlimit prlimit64 + + fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark ++ ++fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64 ++statfs - statfs i:sp __statfs statfs statfs64 __statfs64 +--- a/ports/ChangeLog.mips (revision 12879) ++++ b/ports/ChangeLog.mips (revision 15264) +@@ -1,3 +1,16 @@ ++2011-09-06 Joseph Myers ++ ++ [BZ #13109] ++ * sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list (fstatfs) ++ (statfs): New. ++ * sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c, ++ sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c: New. ++ ++2011-04-01 Joseph Myers ++ ++ * sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list: Add ++ sync_file_range. ++ + 2011-01-25 Joseph Myers + + * sysdeps/unix/sysv/linux/mips/bits/mman.h (MADV_HUGEPAGE, +--- a/ports/ChangeLog.arm (revision 12879) ++++ b/ports/ChangeLog.arm (revision 15264) +@@ -1,3 +1,33 @@ ++2011-06-30 Richard Sandiford ++ ++ * sysdeps/arm/elf/start.S (_start): Align the constant pool to 4 bytes. ++ ++2011-04-01 Ryosei Takagi ++ ++ * sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S: ++ Save and restore r7, and also adjust sp. ++ ++2011-03-21 Joseph Myers ++ ++ * sysdeps/arm/eabi/__longjmp.S, sysdeps/arm/eabi/bits/fenv.h, ++ sysdeps/arm/eabi/fclrexcpt.c, sysdeps/arm/eabi/fedisblxcpt.c, ++ sysdeps/arm/eabi/feenablxcpt.c, sysdeps/arm/eabi/fegetenv.c, ++ sysdeps/arm/eabi/fegetexcept.c, sysdeps/arm/eabi/fegetround.c, ++ sysdeps/arm/eabi/feholdexcpt.c, sysdeps/arm/eabi/fesetenv.c, ++ sysdeps/arm/eabi/fesetround.c, sysdeps/arm/eabi/fpu_control.h, ++ sysdeps/arm/eabi/fraiseexcpt.c, sysdeps/arm/eabi/fsetexcptflg.c, ++ sysdeps/arm/eabi/ftestexcept.c, sysdeps/arm/eabi/setjmp.S, ++ sysdeps/unix/sysv/linux/arm/____longjmp_chk.S, ++ sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S: Correct ++ license reference in last paragraph of license notice. ++ ++2011-02-16 Manjunath Matti ++ ++ * sysdeps/arm/sysdep.h (CALL_MCOUNT): Use __gnu_mcount_nc ++ interface for EABI with GCC 4.4 or later. ++ (mcount): Define to __gnu_mcount_nc for EABI with GCC 4.4 or ++ later. ++ + 2011-01-25 Joseph Myers + + * sysdeps/unix/sysv/linux/arm/bits/mman.h (MADV_HUGEPAGE, +--- a/ports/ChangeLog.eglibc (revision 12879) ++++ b/ports/ChangeLog.eglibc (revision 15264) +@@ -1,3 +1,13 @@ ++2011-07-06 David Kuehling ++ ++ * ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fma.c, ++ ports/sysdeps/powerpc/powerpc32/e500/fpu/s_fmaf.c: New files. ++ ++2011-03-21 Joseph Myers ++ ++ * sysdeps/arm/eabi/bits/predefs.h: Correct license reference in ++ last paragraph of license notice. ++ + 2010-10-12 Joseph Myers + + * sysdeps/powerpc/powerpc32/e500/fpu/feupdateenv.c (feupdateenv): --- eglibc-2.13.orig/debian/patches/series.powerpc +++ eglibc-2.13/debian/patches/series.powerpc @@ -0,0 +1,2 @@ +# Revert (powerpc buildds still run 2.6.15 kernels): +any/revert-cvs-futimens.diff --- eglibc-2.13.orig/debian/patches/README +++ eglibc-2.13/debian/patches/README @@ -0,0 +1,20 @@ +For the patch directory we follow this naming scheme: + + {ARCH|all|any}/{local|branch|cvs|submitted|unsubmitted}-"Description" + +Branch means commited in the upstream branch. +CVS means committed in the upstream trunk. +Submitted means we're hopeful that it will go in. +Unsubmitted means we have not submitted upstream yet because patch is not ready +for upstream yet, but we want to eventually +Local means that it's not going upstream. + +The goal is to get all patches to "Branch". Patches should be split by +arch so that it's easy to send just the relevant bits to various +arch maintainers if needed. + +The difference between 'all' and 'any' is that the latter touches several +architecture dependent files (usually in the sysdeps directory), whereas +the former only modifies architecture independent files. Porters are +supposed to have an eye on their arch patches and on 'any'. + --- eglibc-2.13.orig/debian/patches/series.kfreebsd-amd64 +++ eglibc-2.13/debian/patches/series.kfreebsd-amd64 @@ -0,0 +1,11 @@ +kfreebsd/local-config_h_in.patch +kfreebsd/local-grantpt.diff +kfreebsd/local-linuxthreads29.diff +kfreebsd/local-nosavesse.diff +kfreebsd/local-memusage_no_mremap.diff +kfreebsd/local-pthread_at_fork.diff +kfreebsd/local-readdir_r.diff +kfreebsd/local-scripts.diff +kfreebsd/local-sys_queue_h.diff +kfreebsd/local-sysdeps.diff +kfreebsd/local-undef-glibc.diff --- eglibc-2.13.orig/debian/patches/series.hurd-i386 +++ eglibc-2.13/debian/patches/series.hurd-i386 @@ -0,0 +1,8 @@ +hurd-i386/submitted-net.diff +hurd-i386/unsubmitted-gscope.diff +hurd-i386/unsubmitted-atomic-no-multiple_threads.diff +hurd-i386/local-pthread_stubs.diff +hurd-i386/unsubmitted-pthread-unsupported-stubs.diff +hurd-i386/unsubmitted-unlockpt-chroot.diff +hurd-i386/local-msg-nosignal.diff +hurd-i386/unsubmitted-pthread.diff --- eglibc-2.13.orig/debian/patches/series +++ eglibc-2.13/debian/patches/series @@ -0,0 +1,202 @@ +svn-updates.diff + +locale/check-unknown-symbols.diff +locale/fix-LC_COLLATE-rules.diff +locale/preprocessor-collate-uli-sucks.diff +locale/preprocessor-collate.diff # should not be needed anymore, but keep it anyways. +locale/locale-print-LANGUAGE.diff +locale/LC_IDENTIFICATION-optional-fields.diff +locale/LC_COLLATE-keywords-ordering.diff +localedata/local-all-no-archive.diff +localedata/sort-UTF8-first.diff +localedata/supported.diff +localedata/locale-eo_EO.diff +localedata/locale-eu_FR.diff +localedata/new-valencian-locale.diff +localedata/locale-ku_TR.diff +localedata/tl_PH-yesexpr.diff +localedata/fo_FO-date_fmt.diff +localedata/locales_CH.diff +localedata/locales-fr.diff +localedata/locales_GB.diff +localedata/locale-en_DK.diff +localedata/locale-csb_PL.diff +localedata/submitted-bz9732-dz_BT-collation.diff +localedata/locale-ia.diff +localedata/locale-zh_TW.diff +localedata/locale-se_NO.diff +localedata/tailor-iso14651_t1.diff +localedata/locale-hsb_DE.diff +localedata/tailor-iso14651_t1-common.diff +localedata/fix-lang.diff +localedata/fr_CA-first_weekday.diff +localedata/fr_CH-first_weekday.diff +localedata/fr_LU-first_weekday.diff +localedata/cy_GB-first_weekday.diff +localedata/locale-de_LI.diff +localedata/submitted-bz9725-locale-sv_SE.diff +localedata/first_weekday.diff +localedata/submitted-bz9912-locale-ru_UA.diff +localedata/submitted-translit-colon.diff +localedata/locale-C.diff +localedata/locale-bem-en_ZA.diff +localedata/locale-ff_SN.diff +localedata/locale-sw.diff +localedata/locale-sv_FI.diff +localedata/locale-os_RU.diff +localedata/cvs-rupee.diff + +amd64/local-biarch.diff +amd64/local-clone.diff +amd64/local-linuxthreads-gscope.diff +amd64/submitted-tst-audit6-avx.diff +amd64/submitted-rwlock-stack-imbalance.diff +amd64/cvs-getcontext.diff +amd64/cvs-memset.diff +amd64/cvs-powl.diff +amd64/cvs-pthread-stack-alignment.diff + +arm/local-atomic.diff +arm/local-eabi-wchar.diff +arm/local-ioperm.diff +arm/local-lowlevellock.diff +arm/local-syscall-mcount.diff +arm/local-sigaction.diff +arm/submitted-armhf-triplet.diff +arm/cvs-clone-cantunwind.diff + +ia64/local-dlfptr.diff +ia64/submitted-sysconf.diff +ia64/submitted-libm.diff + +i386/local-biarch.diff +i386/local-clone.diff +i386/local-cmov.diff +i386/local-cpuid-level2.diff +i386/local-linuxthreads-gscope.diff +#i386/local-pthread_cond_wait.diff # FIXME: Debian #551903 +i386/submitted-i686-timing.diff +i386/cvs-cacheinfo.diff + +powerpc/local-libgcc_eh-ld.so.diff + +sparc/local-fork.diff +sparc/local-sparcv9-target.diff +sparc/submitted-timing.diff +sparc/submitted-bzero.diff +sparc/cvs-ifunc.diff +sparc/cvs-rlimits.diff + +all/fedora-nss_dns-gethostbyname4-disable.diff + +all/local-alias-UTF-8.diff +all/local-pthread-manpages.diff +all/local-ldd.diff +all/local-nis-shadow.diff + +any/local-asserth-decls.diff +any/local-bindresvport_blacklist.diff +any/local-allocalim-header.diff +any/local-fhs-linux-paths.diff +any/local-fhs-nscd.diff +any/local-ipv6-lookup.diff -p0 # has issues, see changelog +any/local-ld-multiarch.diff +any/local-ldso-disable-hwcap.diff +any/local-ldconfig.diff +any/local-ldconfig-fsync.diff +#any/local-libgcc-compat-main.diff # FIXME, ftbfs, disabled +#any/local-libgcc-compat-ports.diff # FIXME, ftbfs, disabled +any/local-linuxthreads-defines.diff +any/local-linuxthreads-fd.diff +any/local-linuxthreads-gscope.diff +#any/local-linuxthreads-kill_other.diff +any/local-linuxthreads-lowlevellock.diff +any/local-linuxthreads-fatalprepare.diff +any/local-linuxthreads-ptw.diff +any/local-linuxthreads-semaphore_h.diff +any/local-linuxthreads-signals.diff +any/local-linuxthreads-stacksize.diff +any/local-linuxthreads-tst-sighandler.diff +any/local-linuxthreads-unwind.diff +any/local-linuxthreads-weak.diff +any/local-localedef-fix-trampoline.diff +any/local-mktemp.diff +any/local-no-pagesize.diff +any/local-nss-upgrade.diff +any/local-o_cloexec.diff +any/local-rtld.diff +any/local-stubs_h.diff +any/local-stdio-lock.diff +any/local-tcsetaddr.diff +any/local-disable-test-tgmath2.diff +any/local-tst-mktime2.diff +any/submitted-nis-netgrp.diff +any/submitted-clock-settime.diff +any/submitted-longdouble.diff +any/cvs-sched_h.diff +any/local-disable-nscd-host-caching.diff +#any/submitted-fileops-and-signals.diff # has issues +any/local-missing-linux_types.h.diff +any/local-nss-overflow.diff +any/submitted-popen.diff +any/local-linuxthreads-thread_self.diff +#any/local-disable-gethostbyname4.diff +any/submitted-getaddrinfo-lo.diff +any/local-getaddrinfo-interface.diff +any/submitted-autotools.diff +any/submitted-accept4-hidden.diff +any/submitted-localedef-mmap.diff +any/submitted-missing-etc-hosts.diff +any/submitted-bits-fcntl_h-at.diff +any/local-no-SOCK_NONBLOCK.diff +any/submitted-stack-guard-quick-randomization.diff +any/submitted-leading-zero-stack-guard.diff +any/submitted-nptl-invalid-td.patch +any/cvs-gai-rfc3484.diff +any/local-dlfptr.diff +any/submitted-string2-strcmp.diff +any/submitted-ldsodefs_rtld_debug.diff +any/local-relro-mprotect.diff +any/local-linuxthreads-deps.diff +any/local-ldconfig-multiarch.diff +any/cvs-fopen.diff +any/submitted-fwrite-wur.diff +any/cvs-resolv-tld.diff +any/cvs-sys-param-ARG_MAX.diff +any/submitted-at-pagesize.diff +any/cvs-setlocale.diff +any/submitted-rlimit-rttime.diff +any/local-tst-writev.diff +any/cvs-regex-oom.diff +any/cvs-getaddrinfo-single-lookup.diff +any/cvs-unique_sym_table-corruptions.diff +any/submitted-mqueue-throw.diff +any/cvs-addmntent.diff +any/cvs-resolv-different-nameserver.diff +any/submitted-resolv-assert.diff +any/cvs-fnmatch.diff +any/cvs-ifunc.diff +any/submitted-resolv-init.diff +powerpc/submitted-ifunc.diff +any/cvs-dlopen-tls.diff +any/cvs-dl_close-scope-handling.diff +any/submitted-glob_h-ifdef.diff +any/submitted-sys-uio-vector.diff +any/arm-unwind-records.diff +any/cvs-fork-race.diff + +arm/local-linaro-cortex-strings.diff +any/local-amd64-memset.diff +arm/unsubmitted-ldconfig-cache-abi.diff +arm/unsubmitted-ldso-abi-check.diff + +# Ubuntu-specific patches. These are things that we don't expect to wind up +# in Debian. +ubuntu/local-altlocaledir.diff -p1 +ubuntu/no-sprintf-pre-truncate.diff +ubuntu/ia64-include.diff +ubuntu/machine-sparcv2.diff +ubuntu/no-asm-mtune-i686.diff +ubuntu/disable-ld_audit.diff +ubuntu/delete-header-pot.diff +ubuntu/core-i357-avx.diff --- eglibc-2.13.orig/debian/patches/series.kfreebsd-i386 +++ eglibc-2.13/debian/patches/series.kfreebsd-i386 @@ -0,0 +1,11 @@ +kfreebsd/local-config_h_in.patch +kfreebsd/local-grantpt.diff +kfreebsd/local-linuxthreads29.diff +kfreebsd/local-nosavesse.diff +kfreebsd/local-memusage_no_mremap.diff +kfreebsd/local-pthread_at_fork.diff +kfreebsd/local-readdir_r.diff +kfreebsd/local-scripts.diff +kfreebsd/local-sys_queue_h.diff +kfreebsd/local-sysdeps.diff +kfreebsd/local-undef-glibc.diff --- eglibc-2.13.orig/debian/patches/hppa/local-lowlevellock.diff +++ eglibc-2.13/debian/patches/hppa/local-lowlevellock.diff @@ -0,0 +1,34 @@ +2010-02-11 Aurelien Jarno + + * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: remove + useless include. Move include to... + * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: here. + +--- + ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c | 1 + + ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h | 2 -- + 2 files changed, 1 insertion(+), 2 deletions(-) + +--- a/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c ++++ b/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include /* Need THREAD_*, and header.*. */ + + void + __lll_lock_wait (lll_lock_t *futex, int private) +--- a/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h ++++ b/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h +@@ -22,10 +22,8 @@ + #include + #include + #include +-#include + #include + #include /* Need __ASSUME_PRIVATE_FUTEX. */ +-#include /* Need THREAD_*, and header.*. */ + + /* HPPA only has one atomic read and modify memory operation, + load and clear, so hppa uses a kernel helper routine to implement --- eglibc-2.13.orig/debian/patches/hppa/submitted-libm-hidden.diff +++ eglibc-2.13/debian/patches/hppa/submitted-libm-hidden.diff @@ -0,0 +1,27 @@ +2011-03-11 Aurelien Jarno + + * sysdeps/hppa/fpu/fegetenv.c (fegetenv): Add libm_hidden_def. + * sysdeps/hppa/fpu/feupdateenv.c (feupdateenv): Likewise. + * sysdeps/hppa/fpu/ftestexcept.c (fetestexcept): Likewise. + +--- a/ports/sysdeps/hppa/fpu/fegetenv.c ++++ b/ports/sysdeps/hppa/fpu/fegetenv.c +@@ -33,3 +33,4 @@ fegetenv (fenv_t *envp) + memcpy(envp, buf, sizeof (*envp)); + return 0; + } ++libm_hidden_def (fegetenv) +--- a/ports/sysdeps/hppa/fpu/feupdateenv.c ++++ b/ports/sysdeps/hppa/fpu/feupdateenv.c +@@ -38,3 +38,4 @@ feupdateenv (const fenv_t *envp) + /* Success. */ + return 0; + } ++libm_hidden_def (feupdateenv) +--- a/ports/sysdeps/hppa/fpu/ftestexcept.c ++++ b/ports/sysdeps/hppa/fpu/ftestexcept.c +@@ -32,3 +32,4 @@ fetestexcept (int excepts) + + return (s.sw[0] >> 27) & excepts & FE_ALL_EXCEPT; + } ++libm_hidden_def (fetestexcept) --- eglibc-2.13.orig/debian/patches/hppa/local-linuxthreads-gscope.diff +++ eglibc-2.13/debian/patches/hppa/local-linuxthreads-gscope.diff @@ -0,0 +1,36 @@ +--- + ports/sysdeps/hppa/linuxthreads/tls.h | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +--- a/ports/sysdeps/hppa/linuxthreads/tls.h ++++ b/ports/sysdeps/hppa/linuxthreads/tls.h +@@ -100,6 +100,29 @@ + #define THREAD_SETMEM_NC(descr, member, value) \ + ((void) sizeof (descr), THREAD_SELF->member = (value)) + ++/* Get and set the global scope generation counter in struct pthread. */ ++#define THREAD_GSCOPE_FLAG_UNUSED 0 ++#define THREAD_GSCOPE_FLAG_USED 1 ++#define THREAD_GSCOPE_FLAG_WAIT 2 ++#define THREAD_GSCOPE_RESET_FLAG() \ ++ do \ ++ { int __res \ ++ = atomic_exchange_rel (&THREAD_SELF->p_gscope_flag, \ ++ THREAD_GSCOPE_FLAG_UNUSED); \ ++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \ ++ lll_futex_wake (&THREAD_SELF->p_gscope_flag, 1); \ ++ } \ ++ while (0) ++#define THREAD_GSCOPE_SET_FLAG() \ ++ do \ ++ { \ ++ THREAD_SELF->p_gscope_flag = THREAD_GSCOPE_FLAG_USED; \ ++ atomic_write_barrier (); \ ++ } \ ++ while (0) ++#define THREAD_GSCOPE_WAIT() \ ++ do { /* GL(dl_wait_lookup_done) () */ } while (0) ++ + /* Install the dtv pointer. The pointer passed is to the element with + index -1 which contain the length. */ + # define INSTALL_DTV(tcbp, dtvp) \ --- eglibc-2.13.orig/debian/patches/hppa/local-dlfptr.diff +++ eglibc-2.13/debian/patches/hppa/local-dlfptr.diff @@ -0,0 +1,16 @@ +--- + ports/sysdeps/hppa/dl-machine.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/ports/sysdeps/hppa/dl-machine.h ++++ b/ports/sysdeps/hppa/dl-machine.h +@@ -64,7 +64,8 @@ + } + + #define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \ +- __hppa_init_bootstrap_fdesc_table (&bootstrap_map); ++ __hppa_init_bootstrap_fdesc_table (&bootstrap_map); \ ++ _dl_fptr_init(); + + /* Return nonzero iff ELF header is compatible with the running host. */ + static inline int --- eglibc-2.13.orig/debian/patches/hppa/local-linuxthreads.diff +++ eglibc-2.13/debian/patches/hppa/local-linuxthreads.diff @@ -0,0 +1,319 @@ +--- + ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/lowlevellock.h | 298 ++++++++++ + ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h | 7 + 2 files changed, 305 insertions(+) + +--- /dev/null ++++ b/ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/lowlevellock.h +@@ -0,0 +1,298 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _LOWLEVELLOCK_H ++#define _LOWLEVELLOCK_H 1 ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* The hppa only has one atomic read and modify memory operation, ++ load and clear, so hppa uses a kernel helper routine to implement ++ compare_and_exchange. See atomic.h for the userspace calling ++ sequence. */ ++ ++#define FUTEX_WAIT 0 ++#define FUTEX_WAKE 1 ++#define FUTEX_REQUEUE 3 ++#define FUTEX_CMP_REQUEUE 4 ++#define FUTEX_WAKE_OP 5 ++#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) ++#define FUTEX_LOCK_PI 6 ++#define FUTEX_UNLOCK_PI 7 ++#define FUTEX_TRYLOCK_PI 8 ++ ++/* Initialize locks to zero. */ ++#define LLL_MUTEX_LOCK_INITIALIZER (0) ++ ++ ++/* Type for lock object. */ ++typedef int lll_lock_t; ++ ++ ++#define lll_futex_wait(futexp, val) \ ++ ({ \ ++ INTERNAL_SYSCALL_DECL (__err); \ ++ long int __ret; \ ++ __ret = INTERNAL_SYSCALL (futex, __err, 4, \ ++ (futexp), FUTEX_WAIT, (val), 0); \ ++ __ret; \ ++ }) ++ ++#define lll_futex_timed_wait(futexp, val, timespec) \ ++ ({ \ ++ INTERNAL_SYSCALL_DECL (__err); \ ++ long int __ret; \ ++ __ret = INTERNAL_SYSCALL (futex, __err, 4, \ ++ (futexp), FUTEX_WAIT, (val), (timespec)); \ ++ __ret; \ ++ }) ++ ++#define lll_futex_wake(futexp, nr) \ ++ ({ \ ++ INTERNAL_SYSCALL_DECL (__err); \ ++ long int __ret; \ ++ __ret = INTERNAL_SYSCALL (futex, __err, 4, \ ++ (futexp), FUTEX_WAKE, (nr), 0); \ ++ __ret; \ ++ }) ++ ++#define lll_robust_mutex_dead(futexv) \ ++ do \ ++ { \ ++ int *__futexp = &(futexv); \ ++ atomic_or (__futexp, FUTEX_OWNER_DIED); \ ++ lll_futex_wake (__futexp, 1); \ ++ } \ ++ while (0) ++ ++/* Returns non-zero if error happened, zero if success. */ ++#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val) \ ++ ({ \ ++ INTERNAL_SYSCALL_DECL (__err); \ ++ long int __ret; \ ++ __ret = INTERNAL_SYSCALL (futex, __err, 6, \ ++ (futexp), FUTEX_CMP_REQUEUE, (nr_wake), \ ++ (nr_move), (mutex), (val)); \ ++ __ret; \ ++ }) ++ ++/* Returns non-zero if error happened, zero if success. */ ++#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2) \ ++ ({ \ ++ INTERNAL_SYSCALL_DECL (__err); \ ++ long int __ret; \ ++ __ret = INTERNAL_SYSCALL (futex, __err, 6, \ ++ (futexp), FUTEX_WAKE_OP, (nr_wake), \ ++ (nr_wake2), (futexp2), \ ++ FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \ ++ __ret; \ ++ }) ++ ++static inline int __attribute__((always_inline)) ++__lll_mutex_trylock(lll_lock_t *futex) ++{ ++ return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0; ++} ++#define lll_mutex_trylock(lock) __lll_mutex_trylock (&(lock)) ++ ++static inline int __attribute__((always_inline)) ++__lll_robust_mutex_trylock(int *futex, int id) ++{ ++ return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; ++} ++#define lll_robust_mutex_trylock(lock, id) \ ++ __lll_robust_mutex_trylock (&(lock), id) ++ ++ ++static inline int __attribute__((always_inline)) ++__lll_mutex_cond_trylock(lll_lock_t *futex) ++{ ++ return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0; ++} ++#define lll_mutex_cond_trylock(lock) __lll_mutex_cond_trylock (&(lock)) ++ ++ ++extern void __lll_lock_wait (lll_lock_t *futex) attribute_hidden; ++ ++static inline void __attribute__((always_inline)) ++__lll_mutex_lock(lll_lock_t *futex) ++{ ++ if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) ++ __lll_lock_wait (futex); ++} ++#define lll_mutex_lock(futex) __lll_mutex_lock (&(futex)) ++ ++extern int __lll_robust_lock_wait (int *futex) attribute_hidden; ++ ++static inline int __attribute__ ((always_inline)) ++__lll_robust_mutex_lock (int *futex, int id) ++{ ++ int result = 0; ++ if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) ++ result = __lll_robust_lock_wait (futex); ++ return result; ++} ++#define lll_robust_mutex_lock(futex, id) \ ++ __lll_robust_mutex_lock (&(futex), id) ++ ++static inline void __attribute__ ((always_inline)) ++__lll_mutex_cond_lock (lll_lock_t *futex) ++{ ++ if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0) ++ __lll_lock_wait (futex); ++} ++#define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex)) ++ ++ ++#define lll_robust_mutex_cond_lock(futex, id) \ ++ __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS) ++ ++ ++extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *) ++ attribute_hidden; ++extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *) ++ attribute_hidden; ++ ++static inline int __attribute__ ((always_inline)) ++__lll_mutex_timedlock (lll_lock_t *futex, const struct timespec *abstime) ++{ ++ int result = 0; ++ if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0) ++ result = __lll_timedlock_wait (futex, abstime); ++ return result; ++} ++#define lll_mutex_timedlock(futex, abstime) \ ++ __lll_mutex_timedlock (&(futex), abstime) ++ ++static inline int __attribute__ ((always_inline)) ++__lll_robust_mutex_timedlock (int *futex, const struct timespec *abstime, ++ int id) ++{ ++ int result = 0; ++ if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) ++ result = __lll_robust_timedlock_wait (futex, abstime); ++ return result; ++} ++#define lll_robust_mutex_timedlock(futex, abstime, id) \ ++ __lll_robust_mutex_timedlock (&(futex), abstime, id) ++ ++ ++static inline void __attribute__ ((always_inline)) ++__lll_mutex_unlock (lll_lock_t *futex) ++{ ++ int val = atomic_exchange_rel (futex, 0); ++ if (__builtin_expect (val > 1, 0)) ++ lll_futex_wake (futex, 1); ++} ++#define lll_mutex_unlock(futex) __lll_mutex_unlock(&(futex)) ++ ++ ++static inline void __attribute__ ((always_inline)) ++__lll_robust_mutex_unlock (int *futex, int mask) ++{ ++ int val = atomic_exchange_rel (futex, 0); ++ if (__builtin_expect (val & mask, 0)) ++ lll_futex_wake (futex, 1); ++} ++#define lll_robust_mutex_unlock(futex) \ ++ __lll_robust_mutex_unlock(&(futex), FUTEX_WAITERS) ++ ++ ++static inline void __attribute__ ((always_inline)) ++__lll_mutex_unlock_force (lll_lock_t *futex) ++{ ++ (void) atomic_exchange_rel (futex, 0); ++ lll_futex_wake (futex, 1); ++} ++#define lll_mutex_unlock_force(futex) __lll_mutex_unlock_force(&(futex)) ++ ++#define lll_mutex_islocked(futex) \ ++ (futex != 0) ++ ++/* Our internal lock implementation is identical to the binary-compatible ++ mutex implementation. */ ++ ++#define LLL_LOCK_INITIALIZER (0) ++#define LLL_LOCK_INITIALIZER_CONST (0) ++#define LLL_LOCK_INITIALIZER_LOCKED (1) ++ ++ ++#define THREAD_INIT_LOCK(PD, LOCK) \ ++ (PD)->LOCK = LLL_LOCK_INITIALIZER ++ ++extern int lll_unlock_wake_cb (lll_lock_t *__futex) attribute_hidden; ++ ++/* The states of a lock are: ++ 0 - untaken ++ 1 - taken by one user ++ >1 - taken by more users */ ++ ++#define lll_trylock(lock) lll_mutex_trylock (lock) ++#define lll_lock(lock) lll_mutex_lock (lock) ++#define lll_unlock(lock) lll_mutex_unlock (lock) ++#define lll_islocked(lock) lll_mutex_islocked (lock) ++ ++/* The kernel notifies a process which uses CLONE_CLEARTID via futex ++ wakeup when the clone terminates. The memory location contains the ++ thread ID while the clone is running and is reset to zero ++ afterwards. */ ++#define lll_wait_tid(tid) \ ++ do { \ ++ __typeof (tid) __tid; \ ++ while ((__tid = (tid)) != 0) \ ++ lll_futex_wait (&(tid), __tid); \ ++ } while (0) ++ ++extern int __lll_timedwait_tid (int *, const struct timespec *) ++ attribute_hidden; ++ ++#define lll_timedwait_tid(tid, abstime) \ ++ ({ \ ++ int __res = 0; \ ++ if ((tid) != 0) \ ++ __res = __lll_timedwait_tid (&(tid), (abstime)); \ ++ __res; \ ++ }) ++ ++ ++/* Conditional variable handling. */ ++ ++extern void __lll_cond_wait (pthread_cond_t *cond) ++ attribute_hidden; ++extern int __lll_cond_timedwait (pthread_cond_t *cond, ++ const struct timespec *abstime) ++ attribute_hidden; ++extern void __lll_cond_wake (pthread_cond_t *cond) ++ attribute_hidden; ++extern void __lll_cond_broadcast (pthread_cond_t *cond) ++ attribute_hidden; ++ ++#define lll_cond_wait(cond) \ ++ __lll_cond_wait (cond) ++#define lll_cond_timedwait(cond, abstime) \ ++ __lll_cond_timedwait (cond, abstime) ++#define lll_cond_wake(cond) \ ++ __lll_cond_wake (cond) ++#define lll_cond_broadcast(cond) \ ++ __lll_cond_broadcast (cond) ++ ++#endif /* lowlevellock.h */ +--- a/ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h ++++ b/ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h +@@ -240,3 +240,10 @@ + + #endif + /* !defined NOT_IN_libc || defined IS_IN_libpthread */ ++ ++#ifndef __ASSEMBLER__ ++# define RTLD_SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_multiple_threads) == 0, 1) ++#endif ++ --- eglibc-2.13.orig/debian/patches/hppa/submitted-fadvise64_64.diff +++ eglibc-2.13/debian/patches/hppa/submitted-fadvise64_64.diff @@ -0,0 +1,26 @@ +--- + sysdeps/unix/sysv/linux/posix_fadvise.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/sysdeps/unix/sysv/linux/posix_fadvise.c ++++ b/sysdeps/unix/sysv/linux/posix_fadvise.c +@@ -35,6 +35,19 @@ + return INTERNAL_SYSCALL_ERRNO (ret, err); + return 0; + #else ++# ifdef __NR_fadvise64_64 ++ INTERNAL_SYSCALL_DECL (err); ++ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, ++ __LONG_LONG_PAIR ((long) (offset >> 31), ++ (long) offset), ++ __LONG_LONG_PAIR ((long) (len >> 31), ++ (long) len), ++ advise); ++ if (INTERNAL_SYSCALL_ERROR_P (ret, err)) ++ return INTERNAL_SYSCALL_ERRNO (ret, err); ++ return 0; ++# else + return ENOSYS; ++# endif + #endif + } --- eglibc-2.13.orig/debian/patches/hppa/submitted-fcntl_h.diff +++ eglibc-2.13/debian/patches/hppa/submitted-fcntl_h.diff @@ -0,0 +1,49 @@ +2011-03-11 Aurelien Jarno + + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (F_SETPIPE_SZ, + F_GETPIPE_SZ): Define. + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Define O_DIRECTORY, + O_NOFOLLOW, O_CLOEXEC, F_DUPFD_CLOEXEC, F_SETOWN, and F_GETOWN for + XPG7. + +--- a/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h +@@ -46,13 +46,15 @@ + #define O_ASYNC 020000 + #define O_BLKSEEK 00000100 /* HPUX only */ + +-#ifdef __USE_GNU +-# define O_DIRECT 000040000 /* Direct disk access. */ ++#ifdef __USE_XOPEN2K8 + # define O_DIRECTORY 000010000 /* Must be a directory. */ + # define O_NOFOLLOW 000000200 /* Do not follow links. */ +-# define O_NOATIME 004000000 /* Do not set atime. */ + # define O_CLOEXEC 010000000 /* Set close_on_exec. */ + #endif ++#ifdef __USE_GNU ++# define O_DIRECT 000040000 /* Direct disk access. */ ++# define O_NOATIME 004000000 /* Do not set atime. */ ++#endif + + /* For now Linux has synchronisity options for data and read operations. + We define the symbols here but let them do the same as O_SYNC since +@@ -85,7 +87,7 @@ + #define F_SETLK64 9 /* Set record locking info (non-blocking). */ + #define F_SETLKW64 10 /* Set record locking info (blocking). */ + +-#if defined __USE_BSD || defined __USE_UNIX98 ++#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8 + # define F_GETOWN 11 /* Get owner of socket (receiver of SIGIO). */ + # define F_SETOWN 12 /* Set owner of socket (receiver of SIGIO). */ + #endif +@@ -101,6 +103,10 @@ + # define F_SETLEASE 1024 /* Set a lease. */ + # define F_GETLEASE 1025 /* Enquire what lease is active. */ + # define F_NOTIFY 1026 /* Request notfications on a directory. */ ++# define F_SETPIPE_SZ 1031 /* Set pipe page size array. */ ++# define F_GETPIPE_SZ 1032 /* Set pipe page size array. */ ++#endif ++#ifdef __USE_XOPEN2K8 + # define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with + close-on-exit set. */ + #endif --- eglibc-2.13.orig/debian/patches/hppa/submitted-stackinfo.diff +++ eglibc-2.13/debian/patches/hppa/submitted-stackinfo.diff @@ -0,0 +1,15 @@ +2011-03-11 Aurelien Jarno + + * sysdeps/hppa/stackinfo.h: Define DEFAULT_STACK_PERMS with PF_X. + +--- a/ports/sysdeps/hppa/stackinfo.h ++++ b/ports/sysdeps/hppa/stackinfo.h +@@ -25,4 +25,8 @@ + /* On PA the stack grows up. */ + #define _STACK_GROWS_UP 1 + ++/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is ++ * present, but it is presumed absent. */ ++#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X) ++ + #endif /* stackinfo.h */ --- eglibc-2.13.orig/debian/patches/hppa/submitted-nptl-carlos.diff +++ eglibc-2.13/debian/patches/hppa/submitted-nptl-carlos.diff @@ -0,0 +1,247 @@ +--- + elf/rtld.c | 10 +++++----- + include/atomic.h | 26 +++++++++++++------------- + nptl/Makefile | 35 ++++++++++++++++++++++++++++++++--- + nptl/pthread_barrier_wait.c | 2 +- + nptl/sysdeps/pthread/Makefile | 2 ++ + stdio-common/Makefile | 2 +- + sunrpc/clnt_udp.c | 2 +- + 7 files changed, 55 insertions(+), 24 deletions(-) + +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -392,14 +392,14 @@ + know it is available. We do not have to clear the memory if we + do not have to use the temporary bootstrap_map. Global variables + are initialized to zero by default. */ +-#ifndef DONT_USE_BOOTSTRAP_MAP ++#if !defined DONT_USE_BOOTSTRAP_MAP + # ifdef HAVE_BUILTIN_MEMSET + __builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info)); + # else +- for (size_t cnt = 0; +- cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]); +- ++cnt) +- bootstrap_map.l_info[cnt] = 0; ++ /* Clear the whole bootstrap_map structure */ ++ for (char *cnt = (char *)&(bootstrap_map); ++ cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map)); ++ *cnt++ = '\0'); + # endif + # if USE___THREAD + bootstrap_map.l_tls_modid = 0; +--- a/include/atomic.h ++++ b/include/atomic.h +@@ -185,7 +185,7 @@ + __typeof (*(mem)) __atg5_value = (newvalue); \ + \ + do \ +- __atg5_oldval = *__atg5_memp; \ ++ __atg5_oldval = *(volatile __typeof (mem))__atg5_memp; \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg5_memp, __atg5_value, \ + __atg5_oldval), 0)); \ +@@ -206,7 +206,7 @@ + __typeof (*(mem)) __atg6_value = (value); \ + \ + do \ +- __atg6_oldval = *__atg6_memp; \ ++ __atg6_oldval = *(volatile __typeof (mem))__atg6_memp; \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg6_memp, \ + __atg6_oldval \ +@@ -224,7 +224,7 @@ + __typeof (*(mem)) __atg7_value = (value); \ + \ + do \ +- __atg7_oldv = *__atg7_memp; \ ++ __atg7_oldv = *(volatile __typeof (mem))__atg7_memp; \ + while (__builtin_expect \ + (catomic_compare_and_exchange_bool_acq (__atg7_memp, \ + __atg7_oldv \ +@@ -242,7 +242,7 @@ + __typeof (mem) __atg8_memp = (mem); \ + __typeof (*(mem)) __atg8_value = (value); \ + do { \ +- __atg8_oldval = *__atg8_memp; \ ++ __atg8_oldval = *(volatile __typeof (mem))__atg8_memp; \ + if (__atg8_oldval >= __atg8_value) \ + break; \ + } while (__builtin_expect \ +@@ -259,7 +259,7 @@ + __typeof (mem) __atg9_memp = (mem); \ + __typeof (*(mem)) __atg9_value = (value); \ + do { \ +- __atg9_oldv = *__atg9_memp; \ ++ __atg9_oldv = *(volatile __typeof (mem))__atg9_memp; \ + if (__atg9_oldv >= __atg9_value) \ + break; \ + } while (__builtin_expect \ +@@ -277,7 +277,7 @@ + __typeof (mem) __atg10_memp = (mem); \ + __typeof (*(mem)) __atg10_value = (value); \ + do { \ +- __atg10_oldval = *__atg10_memp; \ ++ __atg10_oldval = *(volatile __typeof (mem))__atg10_memp; \ + if (__atg10_oldval <= __atg10_value) \ + break; \ + } while (__builtin_expect \ +@@ -361,7 +361,7 @@ + \ + do \ + { \ +- __atg11_oldval = *__atg11_memp; \ ++ __atg11_oldval = *(volatile __typeof (mem))__atg11_memp; \ + if (__builtin_expect (__atg11_oldval <= 0, 0)) \ + break; \ + } \ +@@ -400,7 +400,7 @@ + __typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit)); \ + \ + do \ +- __atg14_old = (*__atg14_memp); \ ++ __atg14_old = (*(volatile __typeof (mem))__atg14_memp); \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg14_memp, \ + __atg14_old | __atg14_mask,\ +@@ -418,7 +418,7 @@ + __typeof (*(mem)) __atg15_mask = (mask); \ + \ + do \ +- __atg15_old = (*__atg15_memp); \ ++ __atg15_old = (*(volatile __typeof (mem))__atg15_memp); \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg15_memp, \ + __atg15_old & __atg15_mask, \ +@@ -450,7 +450,7 @@ + __typeof (*(mem)) __atg16_mask = (mask); \ + \ + do \ +- __atg16_old = (*__atg16_memp); \ ++ __atg16_old = (*(volatile __typeof (mem))__atg16_memp); \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg16_memp, \ + __atg16_old & __atg16_mask,\ +@@ -468,7 +468,7 @@ + __typeof (*(mem)) __atg17_mask = (mask); \ + \ + do \ +- __atg17_old = (*__atg17_memp); \ ++ __atg17_old = (*(volatile __typeof (mem))__atg17_memp); \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg17_memp, \ + __atg17_old | __atg17_mask, \ +@@ -484,7 +484,7 @@ + __typeof (*(mem)) __atg18_mask = (mask); \ + \ + do \ +- __atg18_old = (*__atg18_memp); \ ++ __atg18_old = (*(volatile __typeof (mem))__atg18_memp); \ + while (__builtin_expect \ + (catomic_compare_and_exchange_bool_acq (__atg18_memp, \ + __atg18_old | __atg18_mask,\ +@@ -500,7 +500,7 @@ + __typeof (*(mem)) __atg19_mask = (mask); \ + \ + do \ +- __atg19_old = (*__atg19_memp); \ ++ __atg19_old = (*(volatile __typeof (mem))__atg19_memp); \ + while (__builtin_expect \ + (atomic_compare_and_exchange_bool_acq (__atg19_memp, \ + __atg19_old | __atg19_mask,\ +--- a/nptl/Makefile ++++ b/nptl/Makefile +@@ -279,9 +279,9 @@ + # Files which must not be linked with libpthread. + tests-nolibpthread = tst-unload + +-# This sets the stack resource limit to 1023kb, which is not a multiple +-# of the page size since every architecture's page size is > 1k. +-tst-oddstacklimit-ENV = ; ulimit -s 1023; ++# This sets the stack resource limit to 8193kb, which is not a multiple ++# of the page size since every architecture's page size is 4096 bytes. ++tst-oddstacklimit-ENV = ; ulimit -s 8193; + + distribute = eintr.c tst-cleanup4aux.c + +@@ -445,6 +445,35 @@ + CFLAGS-tst-cleanupx4.c += -fexceptions + CFLAGS-tst-oncex3.c += -fexceptions + CFLAGS-tst-oncex4.c += -fexceptions ++ ++ldflags-libgcc_s = -Wl,--as-needed -lgcc_s -Wl,--no-as-needed ++LDFLAGS-tst-cancelx2 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx3 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx4 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx5 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx6 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx7 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx8 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx9 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx10 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx11 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx12 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx13 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx14 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx15 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx16 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx17 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx18 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx20 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cancelx21 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cleanupx0 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cleanupx1 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cleanupx2 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cleanupx3 += $(ldflags-libgcc_s) ++LDFLAGS-tst-cleanupx4 += $(ldflags-libgcc_s) ++LDFLAGS-tst-oncex3 += $(ldflags-libgcc_s) ++LDFLAGS-tst-oncex4 += $(ldflags-libgcc_s) ++ + CFLAGS-tst-align.c += $(stack-align-test-flags) + CFLAGS-tst-align3.c += $(stack-align-test-flags) + CFLAGS-tst-initializers1.c = -W -Wall -Werror +--- a/nptl/pthread_barrier_wait.c ++++ b/nptl/pthread_barrier_wait.c +@@ -64,7 +64,7 @@ + do + lll_futex_wait (&ibarrier->curr_event, event, + ibarrier->private ^ FUTEX_PRIVATE_FLAG); +- while (event == ibarrier->curr_event); ++ while (event == *(volatile unsigned int *)&ibarrier->curr_event); + } + + /* Make sure the init_count is stored locally or in a register. */ +--- a/nptl/sysdeps/pthread/Makefile ++++ b/nptl/sysdeps/pthread/Makefile +@@ -36,7 +36,9 @@ + + ifeq ($(have-forced-unwind),yes) + tests += tst-mqueue8x ++ldflags-libgcc_s = -Wl,--as-needed -lgcc_s -Wl,--no-as-needed + CFLAGS-tst-mqueue8x.c += -fexceptions ++LDFLAGS-tst-mqueue8x += $(ldflags-libgcc_s) + endif + endif + +--- a/stdio-common/Makefile ++++ b/stdio-common/Makefile +@@ -96,7 +96,7 @@ + $(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)' + # eglibc: endif + +-CFLAGS-vfprintf.c = -Wno-uninitialized ++CFLAGS-vfprintf.c = -Wno-uninitialized -fno-delayed-branch + CFLAGS-vfwprintf.c = -Wno-uninitialized + CFLAGS-tst-printf.c = -Wno-format + CFLAGS-tstdiomisc.c = -Wno-format +--- a/sunrpc/clnt_udp.c ++++ b/sunrpc/clnt_udp.c +@@ -456,7 +456,7 @@ + while (inlen < 0 && errno == EINTR); + if (inlen < 0) + { +- if (errno == EWOULDBLOCK) ++ if (errno == EWOULDBLOCK || errno == EAGAIN) + continue; + cu->cu_error.re_errno = errno; + return (cu->cu_error.re_status = RPC_CANTRECV); --- eglibc-2.13.orig/debian/patches/hppa/local-stack-grows-up.diff +++ eglibc-2.13/debian/patches/hppa/local-stack-grows-up.diff @@ -0,0 +1,198 @@ +--- + nptl/allocatestack.c | 22 +++++++++++++++------- + nptl/pthread_attr_getstack.c | 6 +++++- + nptl/pthread_attr_setstack.c | 10 +++++++++- + nptl/pthread_create.c | 12 +++++++++--- + nptl/pthread_getattr_np.c | 15 ++++++++++++++- + 5 files changed, 52 insertions(+), 13 deletions(-) + +--- a/nptl/allocatestack.c ++++ b/nptl/allocatestack.c +@@ -356,6 +356,15 @@ + if (__builtin_expect (attr->flags & ATTR_FLAG_STACKADDR, 0)) + { + uintptr_t adj; ++#if _STACK_GROWS_DOWN ++ char * stackaddr = (char *) attr->stackaddr; ++#else ++ /* Assume the same layout as the _STACK_GROWS_DOWN case, ++ with struct pthread at the top of the stack block. ++ Later we adjust the guard location and stack address ++ to match the _STACK_GROWS_UP case. */ ++ char * stackaddr = (char *) attr->stackaddr + attr->stacksize; ++#endif + + /* If the user also specified the size of the stack make sure it + is large enough. */ +@@ -365,11 +374,11 @@ + + /* Adjust stack size for alignment of the TLS block. */ + #if TLS_TCB_AT_TP +- adj = ((uintptr_t) attr->stackaddr - TLS_TCB_SIZE) ++ adj = ((uintptr_t) stackaddr - TLS_TCB_SIZE) + & __static_tls_align_m1; + assert (size > adj + TLS_TCB_SIZE); + #elif TLS_DTV_AT_TP +- adj = ((uintptr_t) attr->stackaddr - __static_tls_size) ++ adj = ((uintptr_t) stackaddr - __static_tls_size) + & __static_tls_align_m1; + assert (size > adj); + #endif +@@ -379,10 +388,10 @@ + the stack. It is the user's responsibility to do this if it + is wanted. */ + #if TLS_TCB_AT_TP +- pd = (struct pthread *) ((uintptr_t) attr->stackaddr ++ pd = (struct pthread *) ((uintptr_t) stackaddr + - TLS_TCB_SIZE - adj); + #elif TLS_DTV_AT_TP +- pd = (struct pthread *) (((uintptr_t) attr->stackaddr ++ pd = (struct pthread *) (((uintptr_t) stackaddr + - __static_tls_size - adj) + - TLS_PRE_TCB_SIZE); + #endif +@@ -394,7 +403,7 @@ + pd->specific[0] = pd->specific_1stblock; + + /* Remember the stack-related values. */ +- pd->stackblock = (char *) attr->stackaddr - size; ++ pd->stackblock = (char *) stackaddr - size; + pd->stackblock_size = size; + + /* This is a user-provided stack. It will not be queued in the +@@ -625,7 +634,7 @@ + char *guard = mem + (((size - guardsize) / 2) & ~pagesize_m1); + #elif _STACK_GROWS_DOWN + char *guard = mem; +-# elif _STACK_GROWS_UP ++#elif _STACK_GROWS_UP + char *guard = (char *) (((uintptr_t) pd - guardsize) & ~pagesize_m1); + #endif + if (mprotect (guard, guardsize, PROT_NONE) != 0) +@@ -724,7 +733,6 @@ + *stack = stacktop; + #elif _STACK_GROWS_UP + *stack = pd->stackblock; +- assert (*stack > 0); + #endif + + return 0; +--- a/nptl/pthread_attr_getstack.c ++++ b/nptl/pthread_attr_getstack.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2002 Free Software Foundation, Inc. ++/* Copyright (C) 2002, 2010 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2002. + +@@ -33,7 +33,11 @@ + iattr = (struct pthread_attr *) attr; + + /* Store the result. */ ++#ifdef _STACK_GROWS_DOWN + *stackaddr = (char *) iattr->stackaddr - iattr->stacksize; ++#else ++ *stackaddr = (char *) iattr->stackaddr; ++#endif + *stacksize = iattr->stacksize; + + return 0; +--- a/nptl/pthread_attr_setstack.c ++++ b/nptl/pthread_attr_setstack.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc. ++/* Copyright (C) 2002, 2003, 2006, 2010 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2002. + +@@ -48,7 +48,11 @@ + #endif + + iattr->stacksize = stacksize; ++#if _STACK_GROWS_DOWN + iattr->stackaddr = (char *) stackaddr + stacksize; ++#else ++ iattr->stackaddr = (char *) stackaddr; ++#endif + iattr->flags |= ATTR_FLAG_STACKADDR; + + return 0; +@@ -81,7 +85,11 @@ + # endif + + iattr->stacksize = stacksize; ++#if _STACK_GROWS_DOWN + iattr->stackaddr = (char *) stackaddr + stacksize; ++#else ++ iattr->stackaddr = (char *) stackaddr; ++#endif + iattr->flags |= ATTR_FLAG_STACKADDR; + + return 0; +--- a/nptl/pthread_create.c ++++ b/nptl/pthread_create.c +@@ -392,12 +392,18 @@ + #ifdef _STACK_GROWS_DOWN + char *sp = CURRENT_STACK_FRAME; + size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1; +-#else +-# error "to do" +-#endif + assert (freesize < pd->stackblock_size); + if (freesize > PTHREAD_STACK_MIN) + madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED); ++#else ++ char *sp = CURRENT_STACK_FRAME; ++ size_t freesize = ((char *) pd->stackblock + pd->stackblock_size - sp) ++ & ~pagesize_m1; ++ void *freeblock = (void *) (sp + PTHREAD_STACK_MIN); ++ assert (freesize < pd->stackblock_size); ++ if (freesize > PTHREAD_STACK_MIN) ++ madvise (freeblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED); ++#endif + + /* If the thread is detached free the TCB. */ + if (IS_DETACHED (pd)) +--- a/nptl/pthread_getattr_np.c ++++ b/nptl/pthread_getattr_np.c +@@ -1,4 +1,5 @@ +-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. ++/* Copyright (C) 2002, 2003, 2004, 2006, 2007, ++ 2010 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2002. + +@@ -61,7 +62,11 @@ + if (__builtin_expect (thread->stackblock != NULL, 1)) + { + iattr->stacksize = thread->stackblock_size; ++#ifdef _STACK_GROWS_DOWN + iattr->stackaddr = (char *) thread->stackblock + iattr->stacksize; ++#else ++ iattr->stackaddr = (char *) thread->stackblock; ++#endif + } + else + { +@@ -110,13 +115,21 @@ + { + /* Found the entry. Now we have the info we need. */ + iattr->stacksize = rl.rlim_cur; ++#ifdef _STACK_GROWS_DOWN + iattr->stackaddr = (void *) to; + + /* The limit might be too high. */ + if ((size_t) iattr->stacksize + > (size_t) iattr->stackaddr - last_to) + iattr->stacksize = (size_t) iattr->stackaddr - last_to; ++#else ++ iattr->stackaddr = (void *) from; + ++ /* The limit might be too high. */ ++ if ((size_t) iattr->stacksize ++ > to - (size_t) iattr->stackaddr) ++ iattr->stacksize = to - (size_t) iattr->stackaddr; ++#endif + /* We succeed and no need to look further. */ + ret = 0; + break; --- eglibc-2.13.orig/debian/patches/hppa/local-inlining.diff +++ eglibc-2.13/debian/patches/hppa/local-inlining.diff @@ -0,0 +1,18 @@ +Increase the maximal overall growth of the compilation unit caused +by inlining for dl-reloc.c on hppa. This remove some warnings and +strangely it reduces the size of the final binary. + +--- + ports/sysdeps/hppa/Makefile | 1 + + 1 file changed, 1 insertion(+) + +--- a/ports/sysdeps/hppa/Makefile ++++ b/ports/sysdeps/hppa/Makefile +@@ -24,6 +24,7 @@ + + ifeq ($(subdir),elf) + CFLAGS-rtld.c += -mdisable-fpregs ++CFLAGS-dl-reloc.c += --param inline-unit-growth=100 + sysdep-dl-routines += dl-symaddr dl-fptr + sysdep_routines += $(sysdep-dl-routines) + sysdep-rtld-routines += $(sysdep-dl-routines) --- eglibc-2.13.orig/debian/patches/hppa/local-longjmp-chk.diff +++ eglibc-2.13/debian/patches/hppa/local-longjmp-chk.diff @@ -0,0 +1,14 @@ +--- + ports/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.S | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- /dev/null ++++ b/ports/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.S +@@ -0,0 +1,7 @@ ++/* Jump to the position specified by ENV, causing the ++ setjmp call there to return VAL, or 1 if VAL is 0. ++ void __longjmp (__jmp_buf env, int val). */ ++ ++#warning longjmp_chk unimplemented ++#define __longjmp ____longjmp_chk ++#include<__longjmp.S> --- eglibc-2.13.orig/debian/patches/hppa/submitted-lt.diff +++ eglibc-2.13/debian/patches/hppa/submitted-lt.diff @@ -0,0 +1,337 @@ +# DP: Description: Make glibc-2.3.5 compile to enable hppa linuxthreads +# correctly again. +# DP: Related bugs: +# DP: Dpatch author: Jeff Bailey +# DP: Patch author: Carlos O'Donell +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2005-07-17 + +--- + linuxthreads/descr.h | 2 - + linuxthreads/oldsemaphore.c | 2 - + linuxthreads/pt-machine.c | 4 ++- + linuxthreads/pthread.c | 10 ++++---- + linuxthreads/spinlock.c | 22 +++++++++---------- + linuxthreads/spinlock.h | 26 +++++++++++++++++------ + linuxthreads/sysdeps/pthread/bits/initspin.h | 3 +- + linuxthreads/sysdeps/pthread/bits/libc-lock.h | 6 ++--- + linuxthreads/sysdeps/pthread/bits/pthreadtypes.h | 8 ++++--- + linuxthreads/sysdeps/pthread/pthread.h | 14 ++++++------ + 10 files changed, 58 insertions(+), 39 deletions(-) + +--- a/linuxthreads/descr.h ++++ b/linuxthreads/descr.h +@@ -71,7 +71,7 @@ + /* Atomic counter made possible by compare_and_swap */ + struct pthread_atomic { + long p_count; +- int p_spinlock; ++ __atomic_lock_t p_spinlock; + }; + + +--- a/linuxthreads/oldsemaphore.c ++++ b/linuxthreads/oldsemaphore.c +@@ -31,7 +31,7 @@ + + typedef struct { + long int sem_status; +- int sem_spinlock; ++ __atomic_lock_t sem_spinlock; + } old_sem_t; + + extern int __old_sem_init (old_sem_t *__sem, int __pshared, unsigned int __value); +--- a/linuxthreads/pt-machine.c ++++ b/linuxthreads/pt-machine.c +@@ -19,7 +19,9 @@ + + #define PT_EI + +-extern long int testandset (int *spinlock); ++#include ++ ++extern long int testandset (__atomic_lock_t *spinlock); + extern int __compare_and_swap (long int *p, long int oldval, long int newval); + + #include +--- a/linuxthreads/pthread.c ++++ b/linuxthreads/pthread.c +@@ -309,7 +309,7 @@ + pthread_descr self; + + /* First of all init __pthread_handles[0] and [1] if needed. */ +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + __pthread_handles[0].h_lock = __LOCK_INITIALIZER; + __pthread_handles[1].h_lock = __LOCK_INITIALIZER; + # endif +@@ -379,7 +379,7 @@ + # endif + /* self->p_start_args need not be initialized, it's all zero. */ + self->p_userstack = 1; +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; + # endif + self->p_alloca_cutoff = __MAX_ALLOCA_CUTOFF; +@@ -393,7 +393,7 @@ + #else /* USE_TLS */ + + /* First of all init __pthread_handles[0] and [1]. */ +-# if __LT_SPINLOCK_INIT != 0 ++# ifdef __LT_INITIALIZER_NOT_ZERO + __pthread_handles[0].h_lock = __LOCK_INITIALIZER; + __pthread_handles[1].h_lock = __LOCK_INITIALIZER; + # endif +@@ -696,8 +696,8 @@ + # endif + mgr->p_start_args = (struct pthread_start_args) PTHREAD_START_ARGS_INITIALIZER(__pthread_manager); + mgr->p_nr = 1; +-# if __LT_SPINLOCK_INIT != 0 +- self->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; ++# ifdef __LT_INITIALIZER_NOT_ZERO ++ mgr->p_resume_count = (struct pthread_atomic) __ATOMIC_INITIALIZER; + # endif + mgr->p_alloca_cutoff = PTHREAD_STACK_MIN / 4; + #else +--- a/linuxthreads/spinlock.c ++++ b/linuxthreads/spinlock.c +@@ -24,9 +24,9 @@ + #include "spinlock.h" + #include "restart.h" + +-static void __pthread_acquire(int * spinlock); ++static void __pthread_acquire(__atomic_lock_t * spinlock); + +-static inline void __pthread_release(int * spinlock) ++static inline void __pthread_release(__atomic_lock_t * spinlock) + { + WRITE_MEMORY_BARRIER(); + *spinlock = __LT_SPINLOCK_INIT; +@@ -269,11 +269,11 @@ + struct wait_node { + struct wait_node *next; /* Next node in null terminated linked list */ + pthread_descr thr; /* The thread waiting with this node */ +- int abandoned; /* Atomic flag */ ++ __atomic_lock_t abandoned; /* Atomic flag */ + }; + + static long wait_node_free_list; +-static int wait_node_free_list_spinlock; ++__pthread_lock_define_initialized(static, wait_node_free_list_spinlock); + + /* Allocate a new node from the head of the free list using an atomic + operation, or else using malloc if that list is empty. A fundamental +@@ -376,7 +376,7 @@ + if (self == NULL) + self = thread_self(); + +- wait_node.abandoned = 0; ++ wait_node.abandoned = __LT_SPINLOCK_INIT; + wait_node.next = (struct wait_node *) lock->__status; + wait_node.thr = self; + lock->__status = (long) &wait_node; +@@ -402,7 +402,7 @@ + wait_node.thr = self; + newstatus = (long) &wait_node; + } +- wait_node.abandoned = 0; ++ wait_node.abandoned = __LT_SPINLOCK_INIT; + wait_node.next = (struct wait_node *) oldstatus; + /* Make sure the store in wait_node.next completes before performing + the compare-and-swap */ +@@ -451,7 +451,7 @@ + if (self == NULL) + self = thread_self(); + +- p_wait_node->abandoned = 0; ++ p_wait_node->abandoned = __LT_SPINLOCK_INIT; + p_wait_node->next = (struct wait_node *) lock->__status; + p_wait_node->thr = self; + lock->__status = (long) p_wait_node; +@@ -474,7 +474,7 @@ + p_wait_node->thr = self; + newstatus = (long) p_wait_node; + } +- p_wait_node->abandoned = 0; ++ p_wait_node->abandoned = __LT_SPINLOCK_INIT; + p_wait_node->next = (struct wait_node *) oldstatus; + /* Make sure the store in wait_node.next completes before performing + the compare-and-swap */ +@@ -574,7 +574,7 @@ + while (p_node != (struct wait_node *) 1) { + int prio; + +- if (p_node->abandoned) { ++ if (lock_held(&p_node->abandoned)) { + /* Remove abandoned node. */ + #if defined TEST_FOR_COMPARE_AND_SWAP + if (!__pthread_has_cas) +@@ -674,7 +674,7 @@ + #if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP + + int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + int res; + +@@ -711,7 +711,7 @@ + - When nanosleep() returns, we try again, doing MAX_SPIN_COUNT + sched_yield(), then sleeping again if needed. */ + +-static void __pthread_acquire(int * spinlock) ++static void __pthread_acquire(__atomic_lock_t * spinlock) + { + int cnt = 0; + struct timespec tm; +--- a/linuxthreads/spinlock.h ++++ b/linuxthreads/spinlock.h +@@ -33,14 +33,28 @@ + #endif + #endif + ++/* Define lock_held for all arches that don't need a modified copy. */ ++#ifndef __LT_INITIALIZER_NOT_ZERO ++# define lock_held(p) *(p) ++#endif ++ ++/* Initliazers for possibly complex structures */ ++#ifdef __LT_INITIALIZER_NOT_ZERO ++# define __pthread_lock_define_initialized(CLASS,NAME) \ ++ CLASS __atomic_lock_t NAME = __LT_SPINLOCK_ALT_INIT ++#else ++# define __pthread_lock_define_initialized(CLASS,NAME) \ ++ CLASS __atomic_lock_t NAME ++#endif ++ + #if defined(TEST_FOR_COMPARE_AND_SWAP) + + extern int __pthread_has_cas; + extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock); ++ __atomic_lock_t * spinlock); + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + if (__builtin_expect (__pthread_has_cas, 1)) + return __compare_and_swap(ptr, oldval, newval); +@@ -58,7 +72,7 @@ + + static inline int + compare_and_swap_with_release_semantics (long * ptr, long oldval, +- long newval, int * spinlock) ++ long newval, __atomic_lock_t * spinlock) + { + return __compare_and_swap_with_release_semantics (ptr, oldval, + newval); +@@ -67,7 +81,7 @@ + #endif + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + return __compare_and_swap(ptr, oldval, newval); + } +@@ -75,10 +89,10 @@ + #else + + extern int __pthread_compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock); ++ __atomic_lock_t * spinlock); + + static inline int compare_and_swap(long * ptr, long oldval, long newval, +- int * spinlock) ++ __atomic_lock_t * spinlock) + { + return __pthread_compare_and_swap(ptr, oldval, newval, spinlock); + } +--- a/linuxthreads/sysdeps/pthread/bits/initspin.h ++++ b/linuxthreads/sysdeps/pthread/bits/initspin.h +@@ -23,6 +23,7 @@ + #define __LT_SPINLOCK_INIT 0 + + /* Macros for lock initializers, using the above definition. */ +-#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } ++#define __LOCK_INITIALIZER ((struct _pthread_fastlock){ 0, __LT_SPINLOCK_INIT }) ++#define __LOCK_ALT_INITIALIZER { 0, __LT_SPINLOCK_INIT } + #define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } + #define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT } +--- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h ++++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h +@@ -71,12 +71,12 @@ + initialized locks must be set to one due to the lack of normal + atomic operations.) */ + +-#if __LT_SPINLOCK_INIT == 0 ++#ifdef __LT_INITIALIZER_NOT_ZERO + # define __libc_lock_define_initialized(CLASS,NAME) \ +- CLASS __libc_lock_t NAME; ++ CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; + #else + # define __libc_lock_define_initialized(CLASS,NAME) \ +- CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; ++ CLASS __libc_lock_t NAME; + #endif + + #define __libc_rwlock_define_initialized(CLASS,NAME) \ +--- a/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h ++++ b/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h +@@ -22,12 +22,14 @@ + #define __need_schedparam + #include + ++typedef int __atomic_lock_t; ++ + /* Fast locks (not abstract because mutexes and conditions aren't abstract). */ + struct _pthread_fastlock + { +- long int __status; /* "Free" or "taken" or head of waiting list */ +- int __spinlock; /* Used by compare_and_swap emulation. Also, +- adaptive SMP lock stores spin count here. */ ++ long int __status; /* "Free" or "taken" or head of waiting list */ ++ __atomic_lock_t __spinlock; /* Used by compare_and_swap emulation. Also, ++ adaptive SMP lock stores spin count here. */ + }; + + #ifndef _PTHREAD_DESCR_DEFINED +--- a/linuxthreads/sysdeps/pthread/pthread.h ++++ b/linuxthreads/sysdeps/pthread/pthread.h +@@ -31,26 +31,26 @@ + /* Initializers. */ + + #define PTHREAD_MUTEX_INITIALIZER \ +- {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_ALT_INITIALIZER} + #ifdef __USE_GNU + # define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ +- {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_ALT_INITIALIZER} + # define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ +- {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_ALT_INITIALIZER} + # define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ +- {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_INITIALIZER} ++ {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_ALT_INITIALIZER} + #endif + +-#define PTHREAD_COND_INITIALIZER {__LOCK_INITIALIZER, 0, "", 0} ++#define PTHREAD_COND_INITIALIZER {__LOCK_ALT_INITIALIZER, 0, "", 0} + + #if defined __USE_UNIX98 || defined __USE_XOPEN2K + # define PTHREAD_RWLOCK_INITIALIZER \ +- { __LOCK_INITIALIZER, 0, NULL, NULL, NULL, \ ++ { __LOCK_ALT_INITIALIZER, 0, NULL, NULL, NULL, \ + PTHREAD_RWLOCK_DEFAULT_NP, PTHREAD_PROCESS_PRIVATE } + #endif + #ifdef __USE_GNU + # define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ +- { __LOCK_INITIALIZER, 0, NULL, NULL, NULL, \ ++ { __LOCK_ALT_INITIALIZER, 0, NULL, NULL, NULL, \ + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, PTHREAD_PROCESS_PRIVATE } + #endif + --- eglibc-2.13.orig/debian/patches/powerpc/local-libgcc_eh-ld.so.diff +++ eglibc-2.13/debian/patches/powerpc/local-libgcc_eh-ld.so.diff @@ -0,0 +1,21 @@ +On PowerPC, unwind-dw2 needs __libc_stack_end to find the AUX +Vector AT_HWCAP. The HWCAP is required to check for the presence of FPU +or Altivec registers. But `__libc_stack_end' is only exported by ld.so +and ld.so is not included in this link. + +This seems to be a gcc-4.4 bug, not reproducible with gcc-4.5. It should +probably be removed at some point. + +diff a/dlfcn/Makefile b/dlfcn/Makefile +--- a/dlfcn/Makefile ++++ b/dlfcn/Makefile +@@ -124,7 +124,8 @@ $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so + $(objpfx)bug-atexit2: $(libdl) + $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so + +-LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(common-objpfx)libc_nonshared.a ++LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(common-objpfx)libc_nonshared.a \ ++ $(elfobjdir)/ld.so + $(objpfx)bug-atexit3: $(libdl) + $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so + --- eglibc-2.13.orig/debian/patches/powerpc/submitted-ifunc.diff +++ eglibc-2.13/debian/patches/powerpc/submitted-ifunc.diff @@ -0,0 +1,50 @@ +2011-07-04 Aurelien Jarno + + * sysdeps/powerpc/dl-tls.h: Add _PPC_DL_TLS_H inclusion + protection macro. + * sysdeps/powerpc/powerpc64/dl-irel.h(Elf64_FuncDesc): include + and . + * sysdeps/powerpc/powerpc64/dl-irel.h(Elf64_FuncDesc): remove. + +diff --git a/sysdeps/powerpc/dl-tls.h b/sysdeps/powerpc/dl-tls.h +index 9ab81f9..5fd1b23 100644 +--- a/sysdeps/powerpc/dl-tls.h ++++ b/sysdeps/powerpc/dl-tls.h +@@ -17,6 +17,8 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifndef _PPC_DL_TLS_H ++# define _PPC_DL_TLS_H 1 + + /* Type used for the representation of TLS information in the TOC. */ + typedef struct +@@ -47,3 +49,5 @@ + # define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET) + # define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET) + #endif ++ ++#endif /* dl-tls.h */ +diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h +index 3c2668f..56e1cc5 100644 +--- a/sysdeps/powerpc/powerpc64/dl-irel.h ++++ b/sysdeps/powerpc/powerpc64/dl-irel.h +@@ -23,16 +23,11 @@ + + #include + #include ++#include ++#include + + #define ELF_MACHINE_IRELA 1 + +-typedef struct +-{ +- Elf64_Addr fd_func; +- Elf64_Addr fd_toc; +- Elf64_Addr fd_aux; +-} Elf64_FuncDesc; +- + static inline Elf64_Addr + __attribute ((always_inline)) + elf_ifunc_invoke (Elf64_Addr addr) --- eglibc-2.13.orig/debian/patches/amd64/cvs-memset.diff +++ eglibc-2.13/debian/patches/amd64/cvs-memset.diff @@ -0,0 +1,198 @@ +2011-03-02 Harsha Jagasia + Ulrich Drepper + + * sysdeps/x86_64/memset.S: After aligning destination, code + branches to different locations depending on the value of + misalignment, when multiarch is enabled. Fix this. + +diff --git a/sysdeps/x86_64/memset.S b/sysdeps/x86_64/memset.S +index f6eb71f..d43c7f6 100644 +--- a/sysdeps/x86_64/memset.S ++++ b/sysdeps/x86_64/memset.S +@@ -23,7 +23,7 @@ + #define __STOS_LOWER_BOUNDARY $8192 + #define __STOS_UPPER_BOUNDARY $65536 + +- .text ++ .text + #if !defined NOT_IN_libc && !defined USE_MULTIARCH + ENTRY(__bzero) + mov %rsi,%rdx /* Adjust parameter. */ +@@ -417,7 +417,7 @@ L(P4Q0): mov %edx,-0x4(%rdi) + retq + + .balign 16 +-#if defined(USE_EXTRA_TABLE) ++#ifdef USE_EXTRA_TABLE + L(P5QI): mov %rdx,-0x95(%rdi) + #endif + L(P5QH): mov %rdx,-0x8d(%rdi) +@@ -596,6 +596,8 @@ L(A6Q0): mov %dx,-0x6(%rdi) + jmp L(aligned_now) + + L(SSE_pre): ++#else ++L(aligned_now): + #endif + #if !defined USE_MULTIARCH || defined USE_SSE2 + # fill RegXMM0 with the pattern +@@ -606,16 +608,16 @@ L(SSE_pre): + jge L(byte32sse2_pre) + + add %r8,%rdi +-#ifndef PIC ++# ifndef PIC + lea L(SSExDx)(%rip),%r9 + jmpq *(%r9,%r8,8) +-#else ++# else + lea L(SSE0Q0)(%rip),%r9 + lea L(SSExDx)(%rip),%rcx + movswq (%rcx,%r8,2),%rcx + lea (%rcx,%r9,1),%r9 + jmpq *%r9 +-#endif ++# endif + + L(SSE0QB): movdqa %xmm0,-0xb0(%rdi) + L(SSE0QA): movdqa %xmm0,-0xa0(%rdi) +@@ -881,16 +883,16 @@ L(byte32sse2): + lea 0x80(%rdi),%rdi + jge L(byte32sse2) + add %r8,%rdi +-#ifndef PIC ++# ifndef PIC + lea L(SSExDx)(%rip),%r11 + jmpq *(%r11,%r8,8) +-#else ++# else + lea L(SSE0Q0)(%rip),%r11 + lea L(SSExDx)(%rip),%rcx + movswq (%rcx,%r8,2),%rcx + lea (%rcx,%r11,1),%r11 + jmpq *%r11 +-#endif ++# endif + + .balign 16 + L(sse2_nt_move_pre): +@@ -916,20 +918,20 @@ L(sse2_nt_move): + jge L(sse2_nt_move) + sfence + add %r8,%rdi +-#ifndef PIC ++# ifndef PIC + lea L(SSExDx)(%rip),%r11 + jmpq *(%r11,%r8,8) +-#else ++# else + lea L(SSE0Q0)(%rip),%r11 + lea L(SSExDx)(%rip),%rcx + movswq (%rcx,%r8,2),%rcx + lea (%rcx,%r11,1),%r11 + jmpq *%r11 +-#endif ++# endif + + .pushsection .rodata + .balign 16 +-#ifndef PIC ++# ifndef PIC + L(SSExDx): + .quad L(SSE0Q0), L(SSE1Q0), L(SSE2Q0), L(SSE3Q0) + .quad L(SSE4Q0), L(SSE5Q0), L(SSE6Q0), L(SSE7Q0) +@@ -979,7 +981,7 @@ L(SSExDx): + .quad L(SSE4QB), L(SSE5QB), L(SSE6QB), L(SSE7QB) + .quad L(SSE8QB), L(SSE9QB), L(SSE10QB), L(SSE11QB) + .quad L(SSE12QB), L(SSE13QB), L(SSE14QB), L(SSE15QB) +-#else ++# else + L(SSExDx): + .short L(SSE0Q0) -L(SSE0Q0) + .short L(SSE1Q0) -L(SSE0Q0) +@@ -1196,14 +1198,14 @@ L(SSExDx): + .short L(SSE13QB)-L(SSE0Q0) + .short L(SSE14QB)-L(SSE0Q0) + .short L(SSE15QB)-L(SSE0Q0) +-#endif ++# endif + .popsection + #endif /* !defined USE_MULTIARCH || defined USE_SSE2 */ + + .balign 16 ++#ifndef USE_MULTIARCH + L(aligned_now): + +-#ifndef USE_MULTIARCH + cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) + jg L(SSE_pre) + #endif /* USE_MULTIARCH */ +@@ -1246,17 +1248,17 @@ L(8byte_move_loop): + + L(8byte_move_skip): + andl $127,%r8d +- lea (%rdi,%r8,1),%rdi ++ lea (%rdi,%r8,1),%rdi + + #ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC + #else +- lea L(Got0)(%rip),%r11 ++ lea L(Got0)(%rip),%r11 + lea L(setPxQx)(%rip),%rcx + movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 + #endif + + .balign 16 +@@ -1290,16 +1292,16 @@ L(8byte_stos_skip): + ja L(8byte_nt_move) + + andl $7,%r8d +- lea (%rdi,%r8,1),%rdi ++ lea (%rdi,%r8,1),%rdi + #ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC + #else +- lea L(Got0)(%rip),%r11 ++ lea L(Got0)(%rip),%r11 + lea L(setPxQx)(%rip),%rcx + movswq (%rcx,%r8,2),%rcx + lea (%rcx,%r11,1),%r11 +- jmpq *%r11 ++ jmpq *%r11 + #endif + + .balign 16 +@@ -1338,16 +1340,16 @@ L(8byte_nt_move_loop): + L(8byte_nt_move_skip): + andl $127,%r8d + +- lea (%rdi,%r8,1),%rdi ++ lea (%rdi,%r8,1),%rdi + #ifndef PIC +- lea L(setPxQx)(%rip),%r11 +- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC ++ lea L(setPxQx)(%rip),%r11 ++ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC + #else +- lea L(Got0)(%rip),%r11 ++ lea L(Got0)(%rip),%r11 + lea L(setPxQx)(%rip),%rcx + movswq (%rcx,%r8,2),%rcx +- lea (%rcx,%r11,1),%r11 +- jmpq *%r11 ++ lea (%rcx,%r11,1),%r11 ++ jmpq *%r11 + #endif + + END (memset) --- eglibc-2.13.orig/debian/patches/amd64/local-linuxthreads-gscope.diff +++ eglibc-2.13/debian/patches/amd64/local-linuxthreads-gscope.diff @@ -0,0 +1,62 @@ +--- + linuxthreads/sysdeps/x86_64/tls.h | 42 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 42 insertions(+) + +--- a/linuxthreads/sysdeps/x86_64/tls.h ++++ b/linuxthreads/sysdeps/x86_64/tls.h +@@ -49,6 +49,11 @@ + uintptr_t sysinfo; + uintptr_t stack_guard; + uintptr_t pointer_guard; ++# ifdef __FreeBSD_kernel__ ++ long gscope_flag; ++# else ++ int gscope_flag; ++# endif + } tcbhead_t; + + #else /* __ASSEMBLER__ */ +@@ -147,6 +152,43 @@ + ((descr)->p_header.data.pointer_guard \ + = THREAD_GETMEM (THREAD_SELF, p_header.data.pointer_guard)) + ++/* Get and set the global scope generation counter in the TCB head. */ ++#define THREAD_GSCOPE_FLAG_UNUSED 0 ++#define THREAD_GSCOPE_FLAG_USED 1 ++#define THREAD_GSCOPE_FLAG_WAIT 2 ++#ifdef __FreeBSD_kernel__ ++# define THREAD_GSCOPE_RESET_FLAG() \ ++ do \ ++ { int __res; \ ++ asm volatile ("xchgl %0, %%fs:%P1" \ ++ : "=r" (__res) \ ++ : "i" (offsetof (struct _pthread_descr_struct, p_gscope_flag)), \ ++ "0" (THREAD_GSCOPE_FLAG_UNUSED)); \ ++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \ ++ lll_futex_wake (&THREAD_SELF->p_gscope_flag, 1); \ ++ } \ ++ while (0) ++#else ++/* As the FreeBSD kernel defines futex as long (compared to int with ++ a Linux kernel), we need to use xchgq instead of xchgl to handle ++ the gscope_flag variable. */ ++# define THREAD_GSCOPE_RESET_FLAG() \ ++ do \ ++ { long __res; \ ++ asm volatile ("xchgq %0, %%fs:%P1" \ ++ : "=r" (__res) \ ++ : "i" (offsetof (struct _pthread_descr_struct, p_gscope_flag)), \ ++ "0" (THREAD_GSCOPE_FLAG_UNUSED)); \ ++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \ ++ lll_futex_wake (&THREAD_SELF->p_gscope_flag, 1); \ ++ } \ ++ while (0) ++#endif /* __FreeBSD_kernel__ */ ++#define THREAD_GSCOPE_SET_FLAG() \ ++ THREAD_SETMEM (THREAD_SELF, p_gscope_flag, THREAD_GSCOPE_FLAG_USED) ++#define THREAD_GSCOPE_WAIT() \ ++ do { /* GL(dl_wait_lookup_done) () */ } while (0) ++ + # endif /* HAVE_TLS_SUPPORT */ + #endif /* __ASSEMBLER__ */ + --- eglibc-2.13.orig/debian/patches/amd64/cvs-powl.diff +++ eglibc-2.13/debian/patches/amd64/cvs-powl.diff @@ -0,0 +1,17 @@ +2011-05-17 H.J. Lu + + [BZ #12775] + * sysdeps/x86_64/fpu/e_powl.S: Fix a typo. + +diff a/sysdeps/x86_64/fpu/e_powl.S b/sysdeps/x86_64/fpu/e_powl.S +--- a/sysdeps/x86_64/fpu/e_powl.S ++++ b/sysdeps/x86_64/fpu/e_powl.S +@@ -154,7 +154,7 @@ ENTRY(__ieee754_powl) + fucompp // 1.0 : x : y + fnstsw + fxch // x : 1.0 : y +- test $4500,%eax ++ test $0x4500,%eax + jz 7f + fsub %st(1) // x-1 : 1.0 : y + fyl2xp1 // log2(x) : y --- eglibc-2.13.orig/debian/patches/amd64/submitted-tst-audit6-avx.diff +++ eglibc-2.13/debian/patches/amd64/submitted-tst-audit6-avx.diff @@ -0,0 +1,28 @@ +2010-05-25 Aurelien Jarno + + * elf/tst-audit6.c: always succeed if not AVX support. + +--- + elf/tst-audit6.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/elf/tst-audit6.c ++++ b/elf/tst-audit6.c +@@ -1,5 +1,6 @@ + /* Test case for x86-64 preserved registers in dynamic linker. */ + ++#ifdef __AVX__ + #include + #include + #include +@@ -26,3 +27,10 @@ + } + return 0; + } ++#else ++int ++main (void) ++{ ++ return 0; ++} ++#endif --- eglibc-2.13.orig/debian/patches/amd64/local-clone.diff +++ eglibc-2.13/debian/patches/amd64/local-clone.diff @@ -0,0 +1,29 @@ +2006-11-30 Jan Kratochvil + + * sysdeps/unix/sysv/linux/x86_64/clone.S: Provide CFI for the outermost + `clone' function to ensure proper unwinding stop of gdb. + +--- + sysdeps/unix/sysv/linux/x86_64/clone.S | 4 ---- + 1 file changed, 4 deletions(-) + +--- a/sysdeps/unix/sysv/linux/x86_64/clone.S ++++ b/sysdeps/unix/sysv/linux/x86_64/clone.S +@@ -89,9 +89,6 @@ + ret + + L(thread_start): +- cfi_startproc; +- /* Clearing frame pointer is insufficient, use CFI. */ +- cfi_undefined (rip); + /* Clear the frame pointer. The ABI suggests this be done, to mark + the outermost frame obviously. */ + xorl %ebp, %ebp +@@ -116,7 +113,6 @@ + /* Call exit with return value from function call. */ + movq %rax, %rdi + call HIDDEN_JUMPTARGET (_exit) +- cfi_endproc; + + cfi_startproc; + PSEUDO_END (BP_SYM (__clone)) --- eglibc-2.13.orig/debian/patches/amd64/local-biarch.diff +++ eglibc-2.13/debian/patches/amd64/local-biarch.diff @@ -0,0 +1,34 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Allow ldconfig to work on x86-64/i386 biarch systems + +--- + sysdeps/unix/sysv/linux/x86_64/dl-cache.h | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +--- a/sysdeps/unix/sysv/linux/x86_64/dl-cache.h ++++ b/sysdeps/unix/sysv/linux/x86_64/dl-cache.h +@@ -22,4 +22,23 @@ + #define _dl_cache_check_flags(flags) \ + ((flags) == _DL_CACHE_DEFAULT_ID) + +-#include ++#define add_system_dir(dir) \ ++ do \ ++ { \ ++ size_t len = strlen (dir); \ ++ char path[len + 3]; \ ++ memcpy (path, dir, len + 1); \ ++ if (len >= 6 && ! memcmp (path + len - 6, "/lib32", 6)) \ ++ { \ ++ len -= 2; \ ++ path[len] = '\0'; \ ++ } \ ++ add_dir (path); \ ++ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \ ++ { \ ++ memcpy (path + len, "32", 3); \ ++ add_dir (path); \ ++ } \ ++ } while (0) ++ ++#include --- eglibc-2.13.orig/debian/patches/amd64/cvs-getcontext.diff +++ eglibc-2.13/debian/patches/amd64/cvs-getcontext.diff @@ -0,0 +1,18 @@ +2011-04-17 Ulrich Drepper + + [BZ #12420] + * sysdeps/unix/sysv/linux/x86_64/getcontext.S: Reload context after + storing it. + +diff --git a/sysdeps/unix/sysv/linux/x86_64/getcontext.S b/sysdeps/unix/sysv/linux/x86_64/getcontext.S +index 4bbc7a4..1a31d72 100644 +--- a/sysdeps/unix/sysv/linux/x86_64/getcontext.S ++++ b/sysdeps/unix/sysv/linux/x86_64/getcontext.S +@@ -62,6 +62,7 @@ ENTRY(__getcontext) + movq %rcx, oFPREGS(%rdi) + /* Save the floating-point environment. */ + fnstenv (%rcx) ++ fldenv (%rcx) + stmxcsr oMXCSR(%rdi) + + /* Save the current signal mask with --- eglibc-2.13.orig/debian/patches/amd64/cvs-pthread-stack-alignment.diff +++ eglibc-2.13/debian/patches/amd64/cvs-pthread-stack-alignment.diff @@ -0,0 +1,51 @@ +2011-08-08 Andreas Schwab + + * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned + stack. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. + * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. + +diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S b/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +index 6806962..a06cd9b 100644 +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S ++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S +@@ -71,7 +71,9 @@ ENTRY(__pthread_enable_asynccancel) + + 1: ret + +-3: movq $TCB_PTHREAD_CANCELED, %fs:RESULT ++3: subq $8, %rsp ++ cfi_adjust_cfa_offset(8) ++ movq $TCB_PTHREAD_CANCELED, %fs:RESULT + lock + orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING + movq %fs:CLEANUP_JMP_BUF, %rdi +diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +index e6535fb..48ea8b9 100644 +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +@@ -63,9 +63,9 @@ __pthread_cond_timedwait: + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r15, 0) + #ifdef __ASSUME_FUTEX_CLOCK_REALTIME +-# define FRAME_SIZE 32 ++# define FRAME_SIZE (32+8) + #else +-# define FRAME_SIZE 48 ++# define FRAME_SIZE (48+8) + #endif + subq $FRAME_SIZE, %rsp + cfi_adjust_cfa_offset(FRAME_SIZE) +diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +index f5b929e..7535baa 100644 +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S ++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +@@ -45,7 +45,7 @@ __pthread_cond_wait: + cfi_lsda(DW_EH_PE_udata4, .LexceptSTART) + #endif + +-#define FRAME_SIZE 32 ++#define FRAME_SIZE (32+8) + leaq -FRAME_SIZE(%rsp), %rsp + cfi_adjust_cfa_offset(FRAME_SIZE) + --- eglibc-2.13.orig/debian/patches/amd64/submitted-rwlock-stack-imbalance.diff +++ eglibc-2.13/debian/patches/amd64/submitted-rwlock-stack-imbalance.diff @@ -0,0 +1,38 @@ +http://sourceware.org/bugzilla/show_bug.cgi?id=12403 + +--- + nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S | 2 +- + nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S ++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +@@ -210,7 +210,7 @@ + cfi_restore(%r12) + retq + +-#ifdef __ASSUME_PRIVATE_FUTEX ++#ifdef __ASSUME_FUTEX_CLOCK_REALTIME + cfi_adjust_cfa_offset(16) + cfi_rel_offset(%r12, 8) + cfi_rel_offset(%r13, 0) +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S ++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S +@@ -192,7 +192,7 @@ + + 7: movq %rdx, %rax + +-#ifndef __ASSUME_PRIVATE_FUTEX ++#ifndef __ASSUME_FUTEX_CLOCK_REALTIME + addq $16, %rsp + cfi_adjust_cfa_offset(-16) + popq %r14 +@@ -207,7 +207,7 @@ + cfi_restore(%r12) + retq + +-#ifdef __ASSUME_PRIVATE_FUTEX ++#ifdef __ASSUME_FUTEX_CLOCK_REALTIME + cfi_adjust_cfa_offset(16) + cfi_rel_offset(%r12, 8) + cfi_rel_offset(%r13, 0) --- eglibc-2.13.orig/debian/patches/any/local-ldso-disable-hwcap.diff +++ eglibc-2.13/debian/patches/any/local-ldso-disable-hwcap.diff @@ -0,0 +1,80 @@ +# DP: Allow hwcap's to be disabled with the existence of a file. This +# DP: makes it easier to do upgrades with optimized (hwcap) library +# DP: packages. +# DP: Author: Rewritten by Daniel Jacobowitz +# DP: Upstream status: Debian-Specific +# DP: Status Details: This isn't going to be acceptable upstream, we +# DP: only need it because we support in-place upgrades. +# DP: Date: 2003-10-28, (Updated 2005-01-02 gotom, 2007-05-20 aurel32) + +--- + elf/dl-cache.c | 6 ++++++ + elf/dl-sysdep.c | 21 +++++++++++++++++++-- + 2 files changed, 25 insertions(+), 2 deletions(-) + +--- a/elf/dl-sysdep.c ++++ b/elf/dl-sysdep.c +@@ -417,6 +417,20 @@ + /* For TLS enabled builds always add 'tls'. */ + ++cnt; + ++ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0) ++ { ++ /* If hwcap is disabled, we only have the base directory to search. */ ++ result = (struct r_strlenpair *) malloc (sizeof (*result)); ++ if (result == NULL) ++ goto no_memory; ++ ++ result[0].str = (char *) result; /* Does not really matter. */ ++ result[0].len = 0; ++ ++ *sz = 1; ++ return result; ++ } ++ + /* Create temporary data structure to generate result table. */ + temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp)); + m = 0; +@@ -496,8 +510,11 @@ + *sz = 1 << cnt; + result = (struct r_strlenpair *) malloc (*sz * sizeof (*result) + total); + if (result == NULL) +- _dl_signal_error (ENOMEM, NULL, NULL, +- N_("cannot create capability list")); ++ { ++ no_memory: ++ _dl_signal_error (ENOMEM, NULL, NULL, ++ N_("cannot create capability list")); ++ } + + if (cnt == 1) + { +--- a/elf/dl-cache.c ++++ b/elf/dl-cache.c +@@ -245,6 +245,7 @@ + if (cache_new != (void *) -1) + { + uint64_t platform; ++ int disable_hwcap = 0; + + /* This is where the strings start. */ + cache_data = (const char *) cache_new; +@@ -256,6 +257,9 @@ + if (platform != (uint64_t) -1) + platform = 1ULL << platform; + ++ if (__access ("/etc/ld.so.nohwcap", F_OK) == 0) ++ disable_hwcap = 1; ++ + #define _DL_HWCAP_TLS_MASK (1LL << 63) + uint64_t hwcap_exclude = ~((GLRO(dl_hwcap) & GLRO(dl_hwcap_mask)) + | _DL_HWCAP_PLATFORM | _DL_HWCAP_TLS_MASK); +@@ -266,6 +270,8 @@ + continue; \ + if (GLRO(dl_osversion) && lib->osversion > GLRO(dl_osversion)) \ + continue; \ ++ if (disable_hwcap && lib->hwcap != 0) \ ++ continue; \ + if (_DL_PLATFORMS_COUNT \ + && (lib->hwcap & _DL_HWCAP_PLATFORM) != 0 \ + && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform) \ --- eglibc-2.13.orig/debian/patches/any/cvs-dl_close-scope-handling.diff +++ eglibc-2.13/debian/patches/any/cvs-dl_close-scope-handling.diff @@ -0,0 +1,23 @@ +2011-08-24 Andreas Schwab + + * elf/dl-close.c (_dl_close_worker): Reset private search list if + it wasn't used. + +diff --git a/elf/dl-close.c b/elf/dl-close.c +index 4cf98c3..8fb55d0 100644 +--- a/elf/dl-close.c ++++ b/elf/dl-close.c +@@ -430,6 +430,13 @@ _dl_close_worker (struct link_map *map) + + imap->l_scope_max = new_size; + } ++ else if (new_list != NULL) ++ { ++ /* We didn't change the scope array, so reset the search ++ list. */ ++ imap->l_searchlist.r_list = NULL; ++ imap->l_searchlist.r_nlist = 0; ++ } + + /* The loader is gone, so mark the object as not having one. + Note: l_idx != IDX_STILL_USED -> object will be removed. */ --- eglibc-2.13.orig/debian/patches/any/submitted-resolv-assert.diff +++ eglibc-2.13/debian/patches/any/submitted-resolv-assert.diff @@ -0,0 +1,59 @@ +2011-07-21 Aurelien Jarno + + * resolv/res_query.c(__libc_res_nquery): Assign hp and hp2 + depending n and resplen2 to catch cases where answer + equals answerp2. + +diff --git a/resolv/res_query.c b/resolv/res_query.c +index 2f7cfaa..405fa68 100644 +--- a/resolv/res_query.c ++++ b/resolv/res_query.c +@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp, + int *resplen2) + { + HEADER *hp = (HEADER *) answer; ++ HEADER *hp2; + int n, use_malloc = 0; + u_int oflags = statp->_flags; + +@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp, + /* __libc_res_nsend might have reallocated the buffer. */ + hp = (HEADER *) *answerp; + +- /* We simplify the following tests by assigning HP to HP2. It +- is easy to verify that this is the same as ignoring all +- tests of HP2. */ +- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp; +- +- if (n < (int) sizeof (HEADER) && answerp2 != NULL +- && *resplen2 > (int) sizeof (HEADER)) ++ /* We simplify the following tests by assigning HP to HP2 or ++ vice versa. It is easy to verify that this is the same as ++ ignoring all tests of HP or HP2. */ ++ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER)) + { +- /* Special case of partial answer. */ +- assert (hp != hp2); +- hp = hp2; ++ hp2 = hp; + } +- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) +- && n > (int) sizeof (HEADER)) ++ else + { +- /* Special case of partial answer. */ +- assert (hp != hp2); +- hp2 = hp; ++ hp2 = (HEADER *) *answerp2; ++ if (n < (int) sizeof (HEADER)) ++ { ++ hp = hp2; ++ } + } + ++ /* Make sure both hp and hp2 are defined */ ++ assert((hp != NULL) && (hp2 != NULL)); ++ + if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0) + && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) { + #ifdef DEBUG --- eglibc-2.13.orig/debian/patches/any/local-disable-gethostbyname4.diff +++ eglibc-2.13/debian/patches/any/local-disable-gethostbyname4.diff @@ -0,0 +1,13 @@ +https://bugzilla.redhat.com/show_bug.cgi?id=459756 + +--- a/resolv/Versions ++++ b/resolv/Versions +@@ -102,7 +102,7 @@ + _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r; + _nss_dns_getnetbyname_r; _nss_dns_getcanonname_r; + _nss_dns_gethostbyaddr2_r; +- _nss_dns_gethostbyname4_r; ++# _nss_dns_gethostbyname4_r; + } + } + --- eglibc-2.13.orig/debian/patches/any/cvs-ifunc.diff +++ eglibc-2.13/debian/patches/any/cvs-ifunc.diff @@ -0,0 +1,329 @@ +2011-06-30 Aurelien Jarno + + * sysdeps/generic/dl-irel.h: fix protection against multiple + inclusions. + * sysdeps/generic/dl-irel.h (elf_ifunc_invoke): New. + +2011-06-20 David S. Miller + + * sysdeps/sparc/sparc32/dl-plt.h: Protect against multiple + inclusions. + * sysdeps/sparc/sparc64/dl-plt.h: Likewise. + + * sysdeps/i386/dl-irel.h (elf_ifunc_invoke): New. + (elf_irel): Use it. + * sysdeps/powerpc/powerpc32/dl-irel.h: Likewise. + * sysdeps/powerpc/powerpc64/dl-irel.h: Likewise. + * sysdeps/sparc/sparc32/dl-irel.h: Likewise. + * sysdeps/sparc/sparc64/dl-irel.h: Likewise. + * sysdeps/x86_64/dl-irel.h: Likewise. + + * elf/dl-runtime.c: Use elf_ifunc_invoke. + * elf/dl-sym.c: Likewise. + +diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c +index b27cfbf..8778e67 100644 +--- a/elf/dl-runtime.c ++++ b/elf/dl-runtime.c +@@ -27,6 +27,7 @@ + #include + #include "dynamic-link.h" + #include ++#include + + + #if (!defined ELF_MACHINE_NO_RELA && !defined ELF_MACHINE_PLT_REL) \ +@@ -146,7 +147,7 @@ _dl_fixup ( + + if (sym != NULL + && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)) +- value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) (); ++ value = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (value)); + + /* Finally, fix up the plt itself. */ + if (__builtin_expect (GLRO(dl_bind_not), 0)) +@@ -235,8 +236,7 @@ _dl_profile_fixup ( + if (defsym != NULL + && __builtin_expect (ELFW(ST_TYPE) (defsym->st_info) + == STT_GNU_IFUNC, 0)) +- value = ((DL_FIXUP_VALUE_TYPE (*) (void)) +- DL_FIXUP_VALUE_ADDR (value)) (); ++ value = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (value)); + } + else + { +@@ -246,8 +246,7 @@ _dl_profile_fixup ( + + if (__builtin_expect (ELFW(ST_TYPE) (refsym->st_info) + == STT_GNU_IFUNC, 0)) +- value = ((DL_FIXUP_VALUE_TYPE (*) (void)) +- DL_FIXUP_VALUE_ADDR (value)) (); ++ value = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (value)); + + result = l; + } +diff --git a/elf/dl-sym.c b/elf/dl-sym.c +index 4faf05c..0af3e48 100644 +--- a/elf/dl-sym.c ++++ b/elf/dl-sym.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + + #ifdef SHARED +@@ -196,8 +197,7 @@ RTLD_NEXT used in code not dynamically loaded")); + { + DL_FIXUP_VALUE_TYPE fixup + = DL_FIXUP_MAKE_VALUE (result, (ElfW(Addr)) value); +- fixup = +- ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (fixup)) (); ++ fixup = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (fixup)); + value = (void *) DL_FIXUP_VALUE_CODE_ADDR (fixup); + } + +diff --git a/sysdeps/i386/dl-irel.h b/sysdeps/i386/dl-irel.h +index 30385a1..70cd6b0 100644 +--- a/sysdeps/i386/dl-irel.h ++++ b/sysdeps/i386/dl-irel.h +@@ -26,6 +26,13 @@ + + #define ELF_MACHINE_IREL 1 + ++static inline Elf32_Addr ++__attribute ((always_inline)) ++elf_ifunc_invoke (Elf32_Addr addr) ++{ ++ return ((Elf32_Addr (*) (void)) (addr)) (); ++} ++ + static inline void + __attribute ((always_inline)) + elf_irel (const Elf32_Rel *reloc) +@@ -35,7 +42,7 @@ elf_irel (const Elf32_Rel *reloc) + + if (__builtin_expect (r_type == R_386_IRELATIVE, 1)) + { +- Elf32_Addr value = ((Elf32_Addr (*) (void)) (*reloc_addr)) (); ++ Elf32_Addr value = elf_ifunc_invoke(*reloc_addr); + *reloc_addr = value; + } + else +diff --git a/sysdeps/powerpc/powerpc32/dl-irel.h b/sysdeps/powerpc/powerpc32/dl-irel.h +index 3f204cd..a31e1ed 100644 +--- a/sysdeps/powerpc/powerpc32/dl-irel.h ++++ b/sysdeps/powerpc/powerpc32/dl-irel.h +@@ -26,6 +26,13 @@ + + #define ELF_MACHINE_IRELA 1 + ++static inline Elf32_Addr ++__attribute ((always_inline)) ++elf_ifunc_invoke (Elf32_Addr addr) ++{ ++ return ((Elf32_Addr (*) (void)) (addr)) (); ++} ++ + static inline void + __attribute ((always_inline)) + elf_irela (const Elf32_Rela *reloc) +@@ -35,7 +42,7 @@ elf_irela (const Elf32_Rela *reloc) + if (__builtin_expect (r_type == R_PPC_IRELATIVE, 1)) + { + Elf32_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) (); ++ Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend); + *reloc_addr = value; + } + else +diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h +index 6cded50..3c2668f 100644 +--- a/sysdeps/powerpc/powerpc64/dl-irel.h ++++ b/sysdeps/powerpc/powerpc64/dl-irel.h +@@ -33,6 +33,13 @@ typedef struct + Elf64_Addr fd_aux; + } Elf64_FuncDesc; + ++static inline Elf64_Addr ++__attribute ((always_inline)) ++elf_ifunc_invoke (Elf64_Addr addr) ++{ ++ return ((Elf64_Addr (*) (void)) (addr)) (); ++} ++ + static inline void + __attribute ((always_inline)) + elf_irela (const Elf64_Rela *reloc) +@@ -42,13 +49,13 @@ elf_irela (const Elf64_Rela *reloc) + if (__builtin_expect (r_type == R_PPC64_IRELATIVE, 1)) + { + Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) (); ++ Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend); + *reloc_addr = value; + } + else if (__builtin_expect (r_type == R_PPC64_JMP_IREL, 1)) + { + Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) (); ++ Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend); + *(Elf64_FuncDesc *) reloc_addr = *(Elf64_FuncDesc *) value; + } + else +diff --git a/sysdeps/sparc/sparc32/dl-irel.h b/sysdeps/sparc/sparc32/dl-irel.h +index 2753fb4..4eaaa37 100644 +--- a/sysdeps/sparc/sparc32/dl-irel.h ++++ b/sysdeps/sparc/sparc32/dl-irel.h +@@ -28,6 +28,13 @@ + + #define ELF_MACHINE_IRELA 1 + ++static inline Elf32_Addr ++__attribute ((always_inline)) ++elf_ifunc_invoke (Elf32_Addr addr) ++{ ++ return ((Elf32_Addr (*) (int)) (addr)) (GLRO(dl_hwcap)); ++} ++ + static inline void + __attribute ((always_inline)) + elf_irela (const Elf32_Rela *reloc) +@@ -37,13 +44,13 @@ elf_irela (const Elf32_Rela *reloc) + if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1)) + { + Elf32_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); ++ Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend); + *reloc_addr = value; + } + else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1)) + { + Elf32_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); ++ Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend); + + sparc_fixup_plt (reloc, reloc_addr, value, 0, 1); + } +diff --git a/sysdeps/sparc/sparc32/dl-plt.h b/sysdeps/sparc/sparc32/dl-plt.h +index bfb891f..0fbd950 100644 +--- a/sysdeps/sparc/sparc32/dl-plt.h ++++ b/sysdeps/sparc/sparc32/dl-plt.h +@@ -18,6 +18,9 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifndef _DL_PLT_H ++#define _DL_PLT_H ++ + /* Some SPARC opcodes we need to use for self-modifying code. */ + #define OPCODE_NOP 0x01000000 /* nop */ + #define OPCODE_CALL 0x40000000 /* call ?; add PC-rel word address */ +@@ -95,3 +98,5 @@ sparc_fixup_plt (const Elf32_Rela *reloc, Elf32_Addr *reloc_addr, + + return value; + } ++ ++#endif /* dl-plt.h */ +diff --git a/sysdeps/sparc/sparc64/dl-irel.h b/sysdeps/sparc/sparc64/dl-irel.h +index 0d70e2a..e356ac6 100644 +--- a/sysdeps/sparc/sparc64/dl-irel.h ++++ b/sysdeps/sparc/sparc64/dl-irel.h +@@ -28,6 +28,13 @@ + + #define ELF_MACHINE_IRELA 1 + ++static inline Elf64_Addr ++__attribute ((always_inline)) ++elf_ifunc_invoke (Elf64_Addr addr) ++{ ++ return ((Elf64_Addr (*) (int)) (addr)) (GLRO(dl_hwcap)); ++} ++ + static inline void + __attribute ((always_inline)) + elf_irela (const Elf64_Rela *reloc) +@@ -37,13 +44,13 @@ elf_irela (const Elf64_Rela *reloc) + if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1)) + { + Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); ++ Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend); + *reloc_addr = value; + } + else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1)) + { + Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); ++ Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend); + struct link_map map = { .l_addr = 0 }; + + /* 'high' is always zero, for large PLT entries the linker +diff --git a/sysdeps/sparc/sparc64/dl-plt.h b/sysdeps/sparc/sparc64/dl-plt.h +index ca2fe3b..ed8abfa 100644 +--- a/sysdeps/sparc/sparc64/dl-plt.h ++++ b/sysdeps/sparc/sparc64/dl-plt.h +@@ -17,6 +17,9 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifndef _DL_PLT_H ++#define _DL_PLT_H ++ + /* We have 4 cases to handle. And we code different code sequences + for each one. I love V9 code models... */ + static inline void __attribute__ ((always_inline)) +@@ -161,3 +164,5 @@ sparc64_fixup_plt (struct link_map *map, const Elf64_Rela *reloc, + __asm __volatile ("flush %0" : : "r" (insns)); + } + } ++ ++#endif /* dl-plt.h */ +diff --git a/sysdeps/x86_64/dl-irel.h b/sysdeps/x86_64/dl-irel.h +index d2d5c06..19f9457 100644 +--- a/sysdeps/x86_64/dl-irel.h ++++ b/sysdeps/x86_64/dl-irel.h +@@ -26,6 +26,13 @@ + + #define ELF_MACHINE_IRELA 1 + ++static inline Elf64_Addr ++__attribute ((always_inline)) ++elf_ifunc_invoke (Elf64_Addr addr) ++{ ++ return ((Elf64_Addr (*) (void)) (addr)) (); ++} ++ + static inline void + __attribute ((always_inline)) + elf_irela (const Elf64_Rela *reloc) +@@ -35,7 +42,7 @@ elf_irela (const Elf64_Rela *reloc) + + if (__builtin_expect (r_type == R_X86_64_IRELATIVE, 1)) + { +- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) (); ++ Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend); + *reloc_addr = value; + } + else +diff --git a/sysdeps/generic/dl-irel.h b/sysdeps/generic/dl-irel.h +index 4d7b481..62fa1ce 100644 +--- a/sysdeps/generic/dl-irel.h ++++ b/sysdeps/generic/dl-irel.h +@@ -17,7 +17,14 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +-#ifndef _DL_IREL_h ++#ifndef _DL_IREL_H + #define _DL_IREL_H + ++static inline DL_FIXUP_VALUE_TYPE ++__attribute ((always_inline)) ++elf_ifunc_invoke (ElfW(Addr) addr) ++{ ++ return ((DL_FIXUP_VALUE_TYPE (*) (void)) (addr)) (); ++} ++ + #endif /* dl-irel.h */ --- eglibc-2.13.orig/debian/patches/any/submitted-string2-strcmp.diff +++ eglibc-2.13/debian/patches/any/submitted-string2-strcmp.diff @@ -0,0 +1,32 @@ +2010-06-07 Aurelien Jarno + + * string/bits/string2.h (strcmp): Use __builtin_strlen instead of + strlen for values known at compile-time. + +--- + string/bits/string2.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/string/bits/string2.h ++++ b/string/bits/string2.h +@@ -801,17 +801,17 @@ + __extension__ \ + ({ size_t __s1_len, __s2_len; \ + (__builtin_constant_p (s1) && __builtin_constant_p (s2) \ +- && (__s1_len = strlen (s1), __s2_len = strlen (s2), \ ++ && (__s1_len = __builtin_strlen (s1), __s2_len = __builtin_strlen (s2), \ + (!__string2_1bptr_p (s1) || __s1_len >= 4) \ + && (!__string2_1bptr_p (s2) || __s2_len >= 4)) \ + ? __builtin_strcmp (s1, s2) \ + : (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \ +- && (__s1_len = strlen (s1), __s1_len < 4) \ ++ && (__s1_len = __builtin_strlen (s1), __s1_len < 4) \ + ? (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \ + ? __builtin_strcmp (s1, s2) \ + : __strcmp_cg (s1, s2, __s1_len)) \ + : (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \ +- && (__s2_len = strlen (s2), __s2_len < 4) \ ++ && (__s2_len = __builtin_strlen (s2), __s2_len < 4) \ + ? (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \ + ? __builtin_strcmp (s1, s2) \ + : __strcmp_gc (s1, s2, __s2_len)) \ --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-defines.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-defines.diff @@ -0,0 +1,22 @@ + + linuxthreads still uses these defines + apply only for glibc 2.6 and above + +--- + config.make.in | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/config.make.in ++++ b/config.make.in +@@ -44,6 +44,11 @@ + all-warnings = @all_warnings@ + + elf = @elf@ ++have-protected = yes ++have-z-nodelete = yes ++have-z-nodlopen = yes ++have-z-initfirst = yes ++have-z-relro = yes + have-z-combreloc = @libc_cv_z_combreloc@ + have-z-execstack = @libc_cv_z_execstack@ + have-initfini = @libc_cv_have_initfini@ --- eglibc-2.13.orig/debian/patches/any/cvs-regex-oom.diff +++ eglibc-2.13/debian/patches/any/cvs-regex-oom.diff @@ -0,0 +1,102 @@ +2011-05-28 Ulrich Drepper + + [BZ #12811] + * posix/regex_internal.c (build_wcs_buffer): Don't signal we have to + grow the buffers more if it already has to be sufficient. + (build_wcs_upper_buffer): Likewise. + * posix/regexec.c (check_matching): Likewise. + (clean_state_log_if_needed): Likewise. + (extend_buffers): Don't enlarge buffers beyond size of the input + buffer. + Patches mostly by Emil Wojak . + +diff --git a/posix/regex_internal.c b/posix/regex_internal.c +index 8183a29..285ae3b 100644 +--- a/posix/regex_internal.c ++++ b/posix/regex_internal.c +@@ -237,13 +237,8 @@ build_wcs_buffer (re_string_t *pstr) + else + p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx; + mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state); +- if (BE (mbclen == (size_t) -2, 0)) +- { +- /* The buffer doesn't have enough space, finish to build. */ +- pstr->cur_state = prev_st; +- break; +- } +- else if (BE (mbclen == (size_t) -1 || mbclen == 0, 0)) ++ if (BE (mbclen == (size_t) -1 || mbclen == 0 ++ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len), 0)) + { + /* We treat these cases as a singlebyte character. */ + mbclen = 1; +@@ -252,6 +247,12 @@ build_wcs_buffer (re_string_t *pstr) + wc = pstr->trans[wc]; + pstr->cur_state = prev_st; + } ++ else if (BE (mbclen == (size_t) -2, 0)) ++ { ++ /* The buffer doesn't have enough space, finish to build. */ ++ pstr->cur_state = prev_st; ++ break; ++ } + + /* Write wide character and padding. */ + pstr->wcs[byte_idx++] = wc; +@@ -334,9 +335,11 @@ build_wcs_upper_buffer (re_string_t *pstr) + for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;) + pstr->wcs[byte_idx++] = WEOF; + } +- else if (mbclen == (size_t) -1 || mbclen == 0) ++ else if (mbclen == (size_t) -1 || mbclen == 0 ++ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len)) + { +- /* It is an invalid character or '\0'. Just use the byte. */ ++ /* It is an invalid character, an incomplete character ++ at the end of the string, or '\0'. Just use the byte. */ + int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]; + pstr->mbs[byte_idx] = ch; + /* And also cast it to wide char. */ +@@ -449,7 +452,8 @@ build_wcs_upper_buffer (re_string_t *pstr) + for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;) + pstr->wcs[byte_idx++] = WEOF; + } +- else if (mbclen == (size_t) -1 || mbclen == 0) ++ else if (mbclen == (size_t) -1 || mbclen == 0 ++ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len)) + { + /* It is an invalid character or '\0'. Just use the byte. */ + int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx]; +diff --git a/posix/regexec.c b/posix/regexec.c +index 8d4475c..9e0c565 100644 +--- a/posix/regexec.c ++++ b/posix/regexec.c +@@ -1156,7 +1156,8 @@ check_matching (re_match_context_t *mctx, int fl_longest_match, + re_dfastate_t *old_state = cur_state; + int next_char_idx = re_string_cur_idx (&mctx->input) + 1; + +- if (BE (next_char_idx >= mctx->input.bufs_len, 0) ++ if ((BE (next_char_idx >= mctx->input.bufs_len, 0) ++ && mctx->input.bufs_len < mctx->input.len) + || (BE (next_char_idx >= mctx->input.valid_len, 0) + && mctx->input.valid_len < mctx->input.len)) + { +@@ -1732,7 +1733,8 @@ clean_state_log_if_needed (re_match_context_t *mctx, int next_state_log_idx) + { + int top = mctx->state_log_top; + +- if (next_state_log_idx >= mctx->input.bufs_len ++ if ((next_state_log_idx >= mctx->input.bufs_len ++ && mctx->input.bufs_len < mctx->input.len) + || (next_state_log_idx >= mctx->input.valid_len + && mctx->input.valid_len < mctx->input.len)) + { +@@ -4111,7 +4113,7 @@ extend_buffers (re_match_context_t *mctx) + return REG_ESPACE; + + /* Double the lengthes of the buffers. */ +- ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2); ++ ret = re_string_realloc_buffers (pstr, MIN (pstr->len, pstr->bufs_len * 2)); + if (BE (ret != REG_NOERROR, 0)) + return ret; + --- eglibc-2.13.orig/debian/patches/any/local-tst-writev.diff +++ eglibc-2.13/debian/patches/any/local-tst-writev.diff @@ -0,0 +1,15 @@ +2010-05-24 Aurelien Jarno + + * sysdeps/wordsize-64/tst-writev.c: include . + +diff a/sysdeps/wordsize-64/tst-writev.c b/sysdeps/wordsize-64/tst-writev.c +--- a/sysdeps/wordsize-64/tst-writev.c ++++ b/sysdeps/wordsize-64/tst-writev.c +@@ -18,6 +18,7 @@ + 02111-1307 USA. */ + + #include ++#include + #include + #include + #include --- eglibc-2.13.orig/debian/patches/any/local-allocalim-header.diff +++ eglibc-2.13/debian/patches/any/local-allocalim-header.diff @@ -0,0 +1,15 @@ +--- + sysdeps/unix/sysv/linux/check_pf.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sysdeps/unix/sysv/linux/check_pf.c ++++ b/sysdeps/unix/sysv/linux/check_pf.c +@@ -25,6 +25,8 @@ + #include + #include + #include ++#include ++#include + #include + + #include --- eglibc-2.13.orig/debian/patches/any/local-ld-multiarch.diff +++ eglibc-2.13/debian/patches/any/local-ld-multiarch.diff @@ -0,0 +1,33 @@ +2009-09-08 Aurelien Jarno + + * Makeconfig: add support for multiarch compat directories. + +--- + Makeconfig | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +--- a/Makeconfig ++++ b/Makeconfig +@@ -191,6 +191,11 @@ + endif + inst_libdir = $(install_root)$(libdir) + ++# Compat places to look for libraries ++ifndef extra_libdir ++extra_libdir = /lib:$(exec_prefix)/lib ++endif ++ + # Where to install the shared library and dynamic linker. + ifndef slibdir + slibdir = $(exec_prefix)/lib +@@ -514,6 +529,10 @@ + default-rpath = $(libdir) + endif + ++ifdef extra_libdir ++default-rpath += :$(extra_libdir) ++endif ++ + ifndef link-extra-libs + link-extra-libs = $(LDLIBS-$(@F)) + link-extra-libs-static = $(link-extra-libs) --- eglibc-2.13.orig/debian/patches/any/local-disable-nscd-host-caching.diff +++ eglibc-2.13/debian/patches/any/local-disable-nscd-host-caching.diff @@ -0,0 +1,17 @@ +--- + nscd/nscd.conf | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/nscd/nscd.conf ++++ b/nscd/nscd.conf +@@ -60,7 +60,9 @@ + max-db-size group 33554432 + auto-propagate group yes + +- enable-cache hosts yes ++# hosts caching is broken with gethostby* calls, hence is now disabled ++# per default. See /usr/share/doc/nscd/NEWS.Debian. ++ enable-cache hosts no + positive-time-to-live hosts 3600 + negative-time-to-live hosts 20 + suggested-size hosts 211 --- eglibc-2.13.orig/debian/patches/any/submitted-sys-uio-vector.diff +++ eglibc-2.13/debian/patches/any/submitted-sys-uio-vector.diff @@ -0,0 +1,28 @@ +http://sourceware.org/ml/libc-alpha/2009-11/msg00017.html + +2009-11-06 Petr Baudis + + * include/sys/uio.h: Change __vector to __iovec to avoid clash + with altivec. + +Index: b/include/sys/uio.h +=================================================================== +--- a/include/sys/uio.h ++++ b/include/sys/uio.h +@@ -2,12 +2,12 @@ + #include + + /* Now define the internal interfaces. */ +-extern ssize_t __readv (int __fd, __const struct iovec *__vector, ++extern ssize_t __readv (int __fd, __const struct iovec *__iovec, + int __count); +-extern ssize_t __libc_readv (int __fd, __const struct iovec *__vector, ++extern ssize_t __libc_readv (int __fd, __const struct iovec *__iovec, + int __count); +-extern ssize_t __writev (int __fd, __const struct iovec *__vector, ++extern ssize_t __writev (int __fd, __const struct iovec *__iovec, + int __count); +-extern ssize_t __libc_writev (int __fd, __const struct iovec *__vector, ++extern ssize_t __libc_writev (int __fd, __const struct iovec *__iovec, + int __count); + #endif --- eglibc-2.13.orig/debian/patches/any/local-ldconfig.diff +++ eglibc-2.13/debian/patches/any/local-ldconfig.diff @@ -0,0 +1,70 @@ +# DP: Make it so that a missing /etc/ld.so.conf does not cause an error +# DP: message, unless --verbose is enabled. This keeps the debian +# DP: installer from barfing during bootstrap of the system. +# DP: +# DP: Updated by gotom, the previous one seems being wrong because it supresses +# DP: _all_ warnings about "can't open configuration file". otoh, I introduce +# DP: newer patches. it should be checked using chroot and should be contacted +# DP: to the upstream. +# DP: Date: (Updated 2005-01-02 gotom) + +# previous patch. +#--- elf/ldconfig.c 2003-07-08 23:26:27.000000000 +0900 +#+++ elf/ldconfig.c.debian 2003-07-08 23:29:43.000000000 +0900 +#@@ -920,26 +920,24 @@ +# { +# FILE *file = NULL; +# char *line = NULL; +#- const char *canon; +#+ const char *canon = filename; +# size_t len = 0; +#+ int file_fd; +# +# if (opt_chroot) +# { +# canon = chroot_canon (opt_chroot, filename); +#- if (canon) +#- file = fopen (canon, "r"); +#- else +#+ if (!canon) +# canon = filename; +# } +#- else +#- { +#- canon = filename; +#- file = fopen (filename, "r"); +#- } +#+ +#+ if ((file_fd = open(canon, O_RDONLY | O_EXCL, 0022)) != -1) +#+ file = fdopen (file_fd, "r"); +# +# if (file == NULL) +# { +#- error (0, errno, _("Can't open configuration file %s"), canon); +#+ if (opt_verbose) +#+ error (0, errno, _("Can't open configuration file %s"), canon); +# if (canon != filename) +# free ((char *) canon); +# return; + +2004-10-25 GOTO Masanori + + * elf/ldconfig.c: Don't print error when default ld.so.conf + is not existed. + +--- + elf/ldconfig.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/elf/ldconfig.c ++++ b/elf/ldconfig.c +@@ -1066,7 +1066,8 @@ + + if (file == NULL) + { +- error (0, errno, _("Can't open configuration file %s"), canon); ++ if (strcmp(canon, LD_SO_CONF) != 0 || opt_verbose) ++ error (0, errno, _("Can't open configuration file %s"), canon); + if (canon != filename) + free ((char *) canon); + return; --- eglibc-2.13.orig/debian/patches/any/local-getaddrinfo-interface.diff +++ eglibc-2.13/debian/patches/any/local-getaddrinfo-interface.diff @@ -0,0 +1,27 @@ +2009-04-26 Aurelien Jarno + + * sysdeps/posix/getaddrinfo.c (rfc3484_sort): don't assign native + result if the result has no associated interface. + +--- + sysdeps/posix/getaddrinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -1456,13 +1456,13 @@ + + /* Fill in the results in all the records. */ + for (int i = 0; i < src->nresults; ++i) +- if (src->results[i].index == a1_index) ++ if (a1_index != -1 && src->results[i].index == a1_index) + { + assert (src->results[i].native == -1 + || src->results[i].native == a1_native); + src->results[i].native = a1_native; + } +- else if (src->results[i].index == a2_index) ++ else if (a2_index != -1 && src->results[i].index == a2_index) + { + assert (src->results[i].native == -1 + || src->results[i].native == a2_native); --- eglibc-2.13.orig/debian/patches/any/cvs-gai-rfc3484.diff +++ eglibc-2.13/debian/patches/any/cvs-gai-rfc3484.diff @@ -0,0 +1,59 @@ +2010-04-06 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global + scope to RFC 1918 addresses. + * posix/gai.conf: Document difference from RFC 3484. + + +--- ./posix/gai.conf.orig 2010-04-16 16:12:00.022336293 +0200 ++++ ./posix/gai.conf 2010-04-16 16:20:06.761085950 +0200 +@@ -41,7 +41,7 @@ + # + # precedence + # Add another rule to the RFC 3484 precedence table. See section 2.1 +-# and 10.3 in RFC 3484. The default is: ++# and 10.3 in RFC 3484. The RFC requires: + # + #precedence ::1/128 50 + #precedence ::/0 40 +@@ -56,9 +56,7 @@ + # + # scopev4 + # Add another rule to the RFC 3484 scope table for IPv4 addresses. +-# By default the scope IDs described in section 3.2 in RFC 3484 are +-# used. Changing these defaults should hardly ever be necessary. +-# The defaults are equivalent to: ++# The definitions in RFC 3484 are equivalent to: + # + #scopev4 ::ffff:169.254.0.0/112 2 + #scopev4 ::ffff:127.0.0.0/104 2 +@@ -66,3 +64,14 @@ + #scopev4 ::ffff:172.16.0.0/108 5 + #scopev4 ::ffff:192.168.0.0/112 5 + #scopev4 ::ffff:0.0.0.0/96 14 ++# ++# For sites which use site-local IPv4 addresses behind NAT there is ++# the problem that even if IPv4 addresses are preferred they do not ++# have the same scope and are therefore not sorted first. To change ++# this use only these rules: ++# ++#scopev4 ::ffff:169.254.0.0/112 2 ++#scopev4 ::ffff:127.0.0.0/104 2 ++#scopev4 ::ffff:0.0.0.0/96 14 ++# ++# This is what the Red Hat / Ubuntu setting currently uses. +--- ./sysdeps/posix/getaddrinfo.c.orig 2010-04-16 16:12:09.543586079 +0200 ++++ ./sysdeps/posix/getaddrinfo.c 2010-04-16 16:19:31.941086318 +0200 +@@ -1102,10 +1102,12 @@ + /* Link-local addresses: scope 2. */ + { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, + { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, ++#if 0 + /* Site-local addresses: scope 5. */ + { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, + { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, + { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, ++#endif + /* Default: scope 14. */ + { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } + }; --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-deps.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-deps.diff @@ -0,0 +1,16 @@ +2011-03-01 Aurelien Jarno + + * Makefile (tst-_res1): Add tst-_res1mod1 to dependency list. + +--- a/linuxthreads/Makefile ++++ b/linuxthreads/Makefile +@@ -314,7 +314,8 @@ + + ifeq (yes,$(build-shared)) + $(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so +-$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library) ++$(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \ ++ $(shared-thread-library) + + $(objpfx)tst-tls1: $(objpfx)tst-tls1mod.so $(shared-thread-library) + --- eglibc-2.13.orig/debian/patches/any/submitted-stack-guard-quick-randomization.diff +++ eglibc-2.13/debian/patches/any/submitted-stack-guard-quick-randomization.diff @@ -0,0 +1,115 @@ +Description: when AT_RANDOM is not available, attempt to build randomization + of stack guard value from the ASLR of stack and heap locations, and finally + the hp_timing_t value. Upstream glibc does not want this patch, as they + feel AT_RANDOM is sufficient. +Author: Jakub Jelinek +Origin: http://cvs.fedora.redhat.com/viewvc/devel/glibc/ +Forwarded: not-needed + +--- + elf/tst-stackguard1.c | 8 ++++++-- + nptl/tst-stackguard1.c | 8 ++++++-- + sysdeps/unix/sysv/linux/dl-osinfo.h | 29 +++++++++++++++++++++++++++++ + 3 files changed, 41 insertions(+), 4 deletions(-) + +--- a/sysdeps/unix/sysv/linux/dl-osinfo.h ++++ b/sysdeps/unix/sysv/linux/dl-osinfo.h +@@ -17,10 +17,13 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include + #include + #include + #include + #include ++#include ++#include + + #ifndef MIN + # define MIN(a,b) (((a)<(b))?(a):(b)) +@@ -80,6 +83,32 @@ + unsigned char *p = (unsigned char *) &ret; + p[sizeof (ret) - 1] = 255; + p[sizeof (ret) - 2] = '\n'; ++#ifdef HP_TIMING_NOW ++ hp_timing_t hpt; ++ HP_TIMING_NOW (hpt); ++ hpt = (hpt & 0xffff) << 8; ++ ret ^= hpt; ++#endif ++ uintptr_t stk; ++ /* Avoid GCC being too smart. */ ++ asm ("" : "=r" (stk) : "r" (p)); ++ stk &= 0x7ffff0; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ stk <<= (__WORDSIZE - 23); ++#elif __WORDSIZE == 64 ++ stk <<= 31; ++#endif ++ ret ^= stk; ++ /* Avoid GCC being too smart. */ ++ p = (unsigned char *) &errno; ++ asm ("" : "=r" (stk) : "r" (p)); ++ stk &= 0x7fff00; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ stk <<= (__WORDSIZE - 29); ++#else ++ stk >>= 8; ++#endif ++ ret ^= stk; + } + else + #endif +--- a/elf/tst-stackguard1.c ++++ b/elf/tst-stackguard1.c +@@ -160,17 +160,21 @@ + the 16 runs, something is very wrong. */ + int ndifferences = 0; + int ndefaults = 0; ++ int npartlyrandomized = 0; + for (i = 0; i < N; ++i) + { + if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) + ndifferences++; + else if (child_stack_chk_guards[i] == default_guard) + ndefaults++; ++ else if (*(char *) &child_stack_chk_guards[i] == 0) ++ npartlyrandomized++; + } + +- printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ printf ("differences %d defaults %d partly randomized %d\n", ++ ndifferences, ndefaults, npartlyrandomized); + +- if (ndifferences < N / 2 && ndefaults < N / 2) ++ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) + { + puts ("stack guard canaries are not randomized enough"); + puts ("nor equal to the default canary value"); +--- a/nptl/tst-stackguard1.c ++++ b/nptl/tst-stackguard1.c +@@ -190,17 +190,21 @@ + the 16 runs, something is very wrong. */ + int ndifferences = 0; + int ndefaults = 0; ++ int npartlyrandomized = 0; + for (i = 0; i < N; ++i) + { + if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) + ndifferences++; + else if (child_stack_chk_guards[i] == default_guard) + ndefaults++; ++ else if (*(char *) &child_stack_chk_guards[i] == 0) ++ npartlyrandomized++; + } + +- printf ("differences %d defaults %d\n", ndifferences, ndefaults); ++ printf ("differences %d defaults %d partly randomized %d\n", ++ ndifferences, ndefaults, npartlyrandomized); + +- if (ndifferences < N / 2 && ndefaults < N / 2) ++ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) + { + puts ("stack guard canaries are not randomized enough"); + puts ("nor equal to the default canary value"); --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-unwind.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-unwind.diff @@ -0,0 +1,84 @@ +--- + linuxthreads/sysdeps/pthread/Makefile | 6 ++ + linuxthreads/sysdeps/pthread/unwind-resume.c | 64 +++++++++++++++++++++++++++ + 2 files changed, 70 insertions(+) + +--- /dev/null ++++ b/linuxthreads/sysdeps/pthread/unwind-resume.c +@@ -0,0 +1,64 @@ ++/* Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Jakub Jelinek . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public License as ++ published by the Free Software Foundation; either version 2.1 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++#include ++ ++static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); ++static _Unwind_Reason_Code (*libgcc_s_personality) ++ (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, ++ struct _Unwind_Context *); ++ ++static void ++init (void) ++{ ++ void *resume, *personality; ++ void *handle; ++ ++ handle = __libc_dlopen ("libgcc_s.so.1"); ++ ++ if (handle == NULL ++ || (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL ++ || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL) ++ __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n"); ++ ++ libgcc_s_resume = resume; ++ libgcc_s_personality = personality; ++} ++ ++void ++_Unwind_Resume (struct _Unwind_Exception *exc) ++{ ++ if (__builtin_expect (libgcc_s_resume == NULL, 0)) ++ init (); ++ libgcc_s_resume (exc); ++} ++ ++_Unwind_Reason_Code ++__gcc_personality_v0 (int version, _Unwind_Action actions, ++ _Unwind_Exception_Class exception_class, ++ struct _Unwind_Exception *ue_header, ++ struct _Unwind_Context *context) ++{ ++ if (__builtin_expect (libgcc_s_personality == NULL, 0)) ++ init (); ++ return libgcc_s_personality (version, actions, exception_class, ++ ue_header, context); ++} +--- a/linuxthreads/sysdeps/pthread/Makefile ++++ b/linuxthreads/sysdeps/pthread/Makefile +@@ -1,3 +1,9 @@ ++ifeq ($(subdir),csu) ++routines += unwind-resume ++shared-only-routines += unwind-resume ++CFLAGS-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables ++endif ++ + ifeq ($(subdir),rt) + librt-sysdep_routines += timer_routines + CPPFLAGS += -DBROKEN_THREAD_SIGNALS --- eglibc-2.13.orig/debian/patches/any/submitted-getaddrinfo-lo.diff +++ eglibc-2.13/debian/patches/any/submitted-getaddrinfo-lo.diff @@ -0,0 +1,27 @@ +2009-03-15 Aurelien Jarno + + * sysdeps/posix/getaddrinfo.c (getaddrinfo): correctly detect + interface for all 127.X.Y.Z addresses. + +--- + sysdeps/posix/getaddrinfo.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -2265,7 +2265,14 @@ + tmp.addr[0] = 0; + tmp.addr[1] = 0; + tmp.addr[2] = htonl (0xffff); +- tmp.addr[3] = sinp->sin_addr.s_addr; ++ /* Special case for lo interface, the source address ++ being possibly different than the interface ++ address. */ ++ if ((ntohl(sinp->sin_addr.s_addr) & 0xff000000) ++ == 0x7f000000) ++ tmp.addr[3] = htonl(0x7f000001); ++ else ++ tmp.addr[3] = sinp->sin_addr.s_addr; + } + else + { --- eglibc-2.13.orig/debian/patches/any/submitted-nis-netgrp.diff +++ eglibc-2.13/debian/patches/any/submitted-nis-netgrp.diff @@ -0,0 +1,29 @@ +This assertion breaks applications if they redefine malloc/free functions, +malloc_usable_size may then report wrong values. This is true for instance +with bash, whereas bash-static works fine because it does not use its own +wrapper functions. See #322011 and merged bugs. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ692 +# DP: Date: 2006-01-12 + + +--- + nis/nss_nis/nis-netgrp.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/nis/nss_nis/nis-netgrp.c ++++ b/nis/nss_nis/nis-netgrp.c +@@ -72,7 +72,10 @@ + and the last byte is filled with NUL. So we can simply + use that buffer. */ + assert (len >= 0); +- assert (malloc_usable_size (netgrp->data) >= len + 1); ++ /* Call to malloc_usable_size disabled, this breaks if applications ++ redefine malloc/free with a different implementation. ++ This assert is always true, see yp_match. */ ++ /* assert (malloc_usable_size (netgrp->data) >= len + 1); */ + assert (netgrp->data[len] == '\0'); + + netgrp->data_size = len; --- eglibc-2.13.orig/debian/patches/any/local-gai-rfc1918-scope-global.patch +++ eglibc-2.13/debian/patches/any/local-gai-rfc1918-scope-global.patch @@ -0,0 +1,30 @@ +--- + posix/gai.conf | 3 --- + sysdeps/posix/getaddrinfo.c | 4 ---- + 2 files changed, 7 deletions(-) + +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -1101,10 +1101,6 @@ + /* Link-local addresses: scope 2. */ + { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, + { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, +- /* Site-local addresses: scope 5. */ +- { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, +- { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, +- { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, + /* Default: scope 14. */ + { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } + }; +--- a/posix/gai.conf ++++ b/posix/gai.conf +@@ -62,9 +62,6 @@ + # + #scopev4 ::ffff:169.254.0.0/112 2 + #scopev4 ::ffff:127.0.0.0/104 2 +-#scopev4 ::ffff:10.0.0.0/104 5 +-#scopev4 ::ffff:172.16.0.0/108 5 +-#scopev4 ::ffff:192.168.0.0/112 5 + #scopev4 ::ffff:0.0.0.0/96 14 + # + # For sites which use site-local IPv4 addresses behind NAT there is --- eglibc-2.13.orig/debian/patches/any/cvs-fnmatch.diff +++ eglibc-2.13/debian/patches/any/cvs-fnmatch.diff @@ -0,0 +1,35 @@ +2011-03-18 Ulrich Drepper + + * posix/fnmatch.c (fnmatch): Check size of pattern in wide + character representation. + Partly based on a patch by Tomas Hoger . + +diff --git a/posix/fnmatch.c b/posix/fnmatch.c +index 0af5ee6..819a6a7 100644 +--- a/posix/fnmatch.c ++++ b/posix/fnmatch.c +@@ -375,6 +375,11 @@ fnmatch (pattern, string, flags) + XXX Do we have to set `errno' to something which mbsrtows hasn't + already done? */ + return -1; ++ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) ++ { ++ __set_errno (ENOMEM); ++ return -2; ++ } + wpattern_malloc = wpattern + = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); + assert (mbsinit (&ps)); +@@ -419,6 +424,12 @@ fnmatch (pattern, string, flags) + XXX Do we have to set `errno' to something which mbsrtows hasn't + already done? */ + goto free_return; ++ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) ++ { ++ free (wpattern_malloc); ++ __set_errno (ENOMEM); ++ return -2; ++ } + + wstring_malloc = wstring + = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-semaphore_h.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-semaphore_h.diff @@ -0,0 +1,186 @@ +--- + linuxthreads/semaphore.h | 87 ------------------------------ + linuxthreads/sysdeps/pthread/semaphore.h | 88 ++++++++++++++++++++++++++++++- + 2 files changed, 87 insertions(+), 88 deletions(-) + +--- a/linuxthreads/semaphore.h ++++ /dev/null +@@ -1,87 +0,0 @@ +-/* Linuxthreads - a simple clone()-based implementation of Posix */ +-/* threads for Linux. */ +-/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ +-/* */ +-/* This program is free software; you can redistribute it and/or */ +-/* modify it under the terms of the GNU Library General Public License */ +-/* as published by the Free Software Foundation; either version 2 */ +-/* of the License, or (at your option) any later version. */ +-/* */ +-/* This program is distributed in the hope that it will be useful, */ +-/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +-/* GNU Library General Public License for more details. */ +- +-#ifndef _SEMAPHORE_H +-#define _SEMAPHORE_H 1 +- +-#include +-#include +-#ifdef __USE_XOPEN2K +-# define __need_timespec +-# include +-#endif +- +-#ifndef _PTHREAD_DESCR_DEFINED +-/* Thread descriptors. Needed for `sem_t' definition. */ +-typedef struct _pthread_descr_struct *_pthread_descr; +-# define _PTHREAD_DESCR_DEFINED +-#endif +- +-/* System specific semaphore definition. */ +-typedef struct +-{ +- struct _pthread_fastlock __sem_lock; +- int __sem_value; +- _pthread_descr __sem_waiting; +-} sem_t; +- +- +- +-/* Value returned if `sem_open' failed. */ +-#define SEM_FAILED ((sem_t *) 0) +- +-/* Maximum value the semaphore can have. */ +-#define SEM_VALUE_MAX (2147483647) +- +- +-__BEGIN_DECLS +- +-/* Initialize semaphore object SEM to VALUE. If PSHARED then share it +- with other processes. */ +-extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) __THROW; +- +-/* Free resources associated with semaphore object SEM. */ +-extern int sem_destroy (sem_t *__sem) __THROW; +- +-/* Open a named semaphore NAME with open flaot OFLAG. */ +-extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW; +- +-/* Close descriptor for named semaphore SEM. */ +-extern int sem_close (sem_t *__sem) __THROW; +- +-/* Remove named semaphore NAME. */ +-extern int sem_unlink (__const char *__name) __THROW; +- +-/* Wait for SEM being posted. */ +-extern int sem_wait (sem_t *__sem); +- +-#ifdef __USE_XOPEN2K +-/* Similar to `sem_wait' but wait only until ABSTIME. */ +-extern int sem_timedwait (sem_t *__restrict __sem, +- __const struct timespec *__restrict __abstime); +-#endif +- +-/* Test whether SEM is posted. */ +-extern int sem_trywait (sem_t *__sem) __THROW; +- +-/* Post SEM. */ +-extern int sem_post (sem_t *__sem) __THROW; +- +-/* Get current value of SEM and store it in *SVAL. */ +-extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval) +- __THROW; +- +-__END_DECLS +- +-#endif /* semaphore.h */ +--- a/linuxthreads/sysdeps/pthread/semaphore.h ++++ b/linuxthreads/sysdeps/pthread/semaphore.h +@@ -1 +1,87 @@ +-#include ++/* Linuxthreads - a simple clone()-based implementation of Posix */ ++/* threads for Linux. */ ++/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */ ++/* */ ++/* This program is free software; you can redistribute it and/or */ ++/* modify it under the terms of the GNU Library General Public License */ ++/* as published by the Free Software Foundation; either version 2 */ ++/* of the License, or (at your option) any later version. */ ++/* */ ++/* This program is distributed in the hope that it will be useful, */ ++/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ ++/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ ++/* GNU Library General Public License for more details. */ ++ ++#ifndef _SEMAPHORE_H ++#define _SEMAPHORE_H 1 ++ ++#include ++#include ++#ifdef __USE_XOPEN2K ++# define __need_timespec ++# include ++#endif ++ ++#ifndef _PTHREAD_DESCR_DEFINED ++/* Thread descriptors. Needed for `sem_t' definition. */ ++typedef struct _pthread_descr_struct *_pthread_descr; ++# define _PTHREAD_DESCR_DEFINED ++#endif ++ ++/* System specific semaphore definition. */ ++typedef struct ++{ ++ struct _pthread_fastlock __sem_lock; ++ int __sem_value; ++ _pthread_descr __sem_waiting; ++} sem_t; ++ ++ ++ ++/* Value returned if `sem_open' failed. */ ++#define SEM_FAILED ((sem_t *) 0) ++ ++/* Maximum value the semaphore can have. */ ++#define SEM_VALUE_MAX (2147483647) ++ ++ ++__BEGIN_DECLS ++ ++/* Initialize semaphore object SEM to VALUE. If PSHARED then share it ++ with other processes. */ ++extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) __THROW; ++ ++/* Free resources associated with semaphore object SEM. */ ++extern int sem_destroy (sem_t *__sem) __THROW; ++ ++/* Open a named semaphore NAME with open flaot OFLAG. */ ++extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW; ++ ++/* Close descriptor for named semaphore SEM. */ ++extern int sem_close (sem_t *__sem) __THROW; ++ ++/* Remove named semaphore NAME. */ ++extern int sem_unlink (__const char *__name) __THROW; ++ ++/* Wait for SEM being posted. */ ++extern int sem_wait (sem_t *__sem); ++ ++#ifdef __USE_XOPEN2K ++/* Similar to `sem_wait' but wait only until ABSTIME. */ ++extern int sem_timedwait (sem_t *__restrict __sem, ++ __const struct timespec *__restrict __abstime); ++#endif ++ ++/* Test whether SEM is posted. */ ++extern int sem_trywait (sem_t *__sem) __THROW; ++ ++/* Post SEM. */ ++extern int sem_post (sem_t *__sem) __THROW; ++ ++/* Get current value of SEM and store it in *SVAL. */ ++extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval) ++ __THROW; ++ ++__END_DECLS ++ ++#endif /* semaphore.h */ --- eglibc-2.13.orig/debian/patches/any/local-amd64-memset.diff +++ eglibc-2.13/debian/patches/any/local-amd64-memset.diff @@ -0,0 +1,94 @@ +Enable SSE2 memset for AMD'supcoming Orochi processor and bugfix + +2011-03-02 Harsha Jagasia + + * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): + Set _x86_64_preferred_memory_instruction for AMD processsors. + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Set bit_Prefer_SSE_for_memop for AMD processors. + * sysdeps/x86_64/memset.S: After aligning destination, code + branches to different locations depending on the value of + misalignment, when multiarch is enabled. Fix this. + +diff --git a/sysdeps/x86_64/cacheinfo.c b/sysdeps/x86_64/cacheinfo.c +index eae54e7..92bc68c 100644 +--- a/sysdeps/x86_64/cacheinfo.c ++++ b/sysdeps/x86_64/cacheinfo.c +@@ -621,6 +621,27 @@ init_cacheinfo (void) + long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE); + shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); + ++ unsigned int ebx_1; ++ ++#ifdef USE_MULTIARCH ++ eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; ++ ebx_1 = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx; ++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; ++ edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx; ++#else ++ __cpuid (1, eax, ebx_1, ecx, edx); ++#endif ++ ++#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION ++ /* AMD prefers SSSE3 instructions for memory/string routines ++ if they are avaiable, otherwise it prefers integer ++ instructions. */ ++ if ((ecx & 0x200)) ++ __x86_64_preferred_memory_instruction = 3; ++ else ++ __x86_64_preferred_memory_instruction = 0; ++#endif ++ + /* Get maximum extended function. */ + __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx); + +diff --git a/sysdeps/x86_64/memset.S b/sysdeps/x86_64/memset.S +index f6eb71f..9aa55ff 100644 +--- a/sysdeps/x86_64/memset.S ++++ b/sysdeps/x86_64/memset.S +@@ -592,8 +592,11 @@ + L(A6Q0): mov %dx,-0x6(%rdi) + mov %edx,-0x4(%rdi) + ++ .balign 16 ++L(aligned_now): ++ + #ifndef USE_MULTIARCH +- jmp L(aligned_now) ++ jmp L(check_code_path) + + L(SSE_pre): + #else +@@ -1204,7 +1207,7 @@ + + .balign 16 + #ifndef USE_MULTIARCH +-L(aligned_now): ++L(check_code_path): + + cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) + jg L(SSE_pre) +diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c +index f0d2bb7..4716532 100644 +--- a/sysdeps/x86_64/multiarch/init-arch.c ++++ b/sysdeps/x86_64/multiarch/init-arch.c +@@ -107,6 +107,18 @@ __init_cpu_features (void) + kind = arch_kind_amd; + + get_common_indeces (&family, &model); ++ ++ unsigned int ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; ++ ++ /* AMD processors prefer SSE instructions for memory/string routines ++ if they are avaiable, otherwise they prefer integer ++ instructions. */ ++ if ((ecx & 0x200)) ++ __cpu_features.feature[index_Prefer_SSE_for_memop] ++ |= bit_Prefer_SSE_for_memop; ++ else ++ __cpu_features.feature[index_Prefer_SSE_for_memop] ++ |= 0; + } + else + kind = arch_kind_other; + --- eglibc-2.13.orig/debian/patches/any/cvs-resolv-different-nameserver.diff +++ eglibc-2.13/debian/patches/any/cvs-resolv-different-nameserver.diff @@ -0,0 +1,59 @@ +2011-06-15 Ulrich Drepper + + * resolv/res_send.c (__libc_res_nsend): Fix typos in last patch. We + need to dereference resplen2. + +2011-05-30 Ulrich Drepper + + [BZ #12684] + * resolv/res_send.c (__libc_res_nsend): Only go to the next name server + if both request failed. + (send_dg): In case of server errors clear resplen or *resplen2. + +diff --git a/resolv/res_send.c b/resolv/res_send.c +index 845b658..97142b7 100644 +--- a/resolv/res_send.c ++++ b/resolv/res_send.c +@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen, + ns, ansp, ansp2, nansp2, resplen2); + if (n < 0) + return (-1); +- if (n == 0) ++ if (n == 0 && (buf2 == NULL || *resplen2 == 0)) + goto next_ns; + } else { + /* Use datagrams. */ +@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen, + ansp2, nansp2, resplen2); + if (n < 0) + return (-1); +- if (n == 0) ++ if (n == 0 && (buf2 == NULL || *resplen2 == 0)) + goto next_ns; + if (v_circuit) + // XXX Check whether both requests failed or +@@ -1275,10 +1275,14 @@ send_dg(res_state statp, + (*thisresplenp > *thisanssizp) + ? *thisanssizp : *thisresplenp); + +- if (recvresp1 || (buf2 != NULL && recvresp2)) ++ if (recvresp1 || (buf2 != NULL && recvresp2)) { ++ *resplen2 = 0; + return resplen; ++ } + if (buf2 != NULL) + { ++ /* No data from the first reply. */ ++ resplen = 0; + /* We are waiting for a possible second reply. */ + if (hp->id == anhp->id) + recvresp1 = 1; +@@ -1344,7 +1348,7 @@ send_dg(res_state statp, + goto err_out; + } + else { +- /* poll should not have returned > 0 in this case. */ ++ /* poll should not have returned > 0 in this case. */ + abort (); + } + } --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-lowlevellock.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-lowlevellock.diff @@ -0,0 +1,160 @@ +--- + linuxthreads/sysdeps/unix/sysv/linux/rtld-lowlevel.h | 153 +++++++++++++++++++ + 1 file changed, 153 insertions(+) + +--- /dev/null ++++ b/linuxthreads/sysdeps/unix/sysv/linux/rtld-lowlevel.h +@@ -0,0 +1,153 @@ ++/* Defintions for lowlevel handling in ld.so. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _RTLD_LOWLEVEL_H ++#define _RTLD_LOWLEVEL_H 1 ++ ++#include ++#include ++ ++ ++/* Special multi-reader lock used in ld.so. */ ++#define __RTLD_MRLOCK_WRITER 1 ++#define __RTLD_MRLOCK_RWAIT 2 ++#define __RTLD_MRLOCK_WWAIT 4 ++#define __RTLD_MRLOCK_RBITS \ ++ ~(__RTLD_MRLOCK_WRITER | __RTLD_MRLOCK_RWAIT | __RTLD_MRLOCK_WWAIT) ++#define __RTLD_MRLOCK_INC 8 ++#define __RTLD_MRLOCK_TRIES 5 ++ ++ ++typedef int __rtld_mrlock_t; ++ ++ ++#define __rtld_mrlock_define(CLASS,NAME) \ ++ CLASS __rtld_mrlock_t NAME; ++ ++ ++#define _RTLD_MRLOCK_INITIALIZER 0 ++#define __rtld_mrlock_initialize(NAME) \ ++ (void) ((NAME) = 0) ++ ++ ++#define __rtld_mrlock_lock(lock) \ ++ do { \ ++ __label__ out; \ ++ while (1) \ ++ { \ ++ int oldval; \ ++ for (int tries = 0; tries < __RTLD_MRLOCK_TRIES; ++tries) \ ++ { \ ++ oldval = lock; \ ++ while (__builtin_expect ((oldval \ ++ & (__RTLD_MRLOCK_WRITER \ ++ | __RTLD_MRLOCK_WWAIT)) \ ++ == 0, 1)) \ ++ { \ ++ int newval = ((oldval & __RTLD_MRLOCK_RBITS) \ ++ + __RTLD_MRLOCK_INC); \ ++ int ret = atomic_compare_and_exchange_val_acq (&(lock), \ ++ newval, \ ++ oldval); \ ++ if (__builtin_expect (ret == oldval, 1)) \ ++ goto out; \ ++ oldval = ret; \ ++ } \ ++ atomic_delay (); \ ++ } \ ++ if ((oldval & __RTLD_MRLOCK_RWAIT) == 0) \ ++ { \ ++ atomic_or (&(lock), __RTLD_MRLOCK_RWAIT); \ ++ oldval |= __RTLD_MRLOCK_RWAIT; \ ++ } \ ++ lll_futex_wait (lock, oldval); \ ++ } \ ++ out:; \ ++ } while (0) ++ ++ ++#define __rtld_mrlock_unlock(lock) \ ++ do { \ ++ int oldval = atomic_exchange_and_add (&(lock), -__RTLD_MRLOCK_INC); \ ++ if (__builtin_expect ((oldval \ ++ & (__RTLD_MRLOCK_RBITS | __RTLD_MRLOCK_WWAIT)) \ ++ == (__RTLD_MRLOCK_INC | __RTLD_MRLOCK_WWAIT), 0)) \ ++ /* We have to wake all threads since there might be some queued \ ++ readers already. */ \ ++ lll_futex_wake (&(lock), 0x7fffffff); \ ++ } while (0) ++ ++ ++/* There can only ever be one thread trying to get the exclusive lock. */ ++#define __rtld_mrlock_change(lock) \ ++ do { \ ++ __label__ out; \ ++ while (1) \ ++ { \ ++ int oldval; \ ++ for (int tries = 0; tries < __RTLD_MRLOCK_TRIES; ++tries) \ ++ { \ ++ oldval = lock; \ ++ while (__builtin_expect ((oldval & __RTLD_MRLOCK_RBITS) == 0, 1)) \ ++ { \ ++ int newval = ((oldval & __RTLD_MRLOCK_RWAIT) \ ++ + __RTLD_MRLOCK_WRITER); \ ++ int ret = atomic_compare_and_exchange_val_acq (&(lock), \ ++ newval, \ ++ oldval); \ ++ if (__builtin_expect (ret == oldval, 1)) \ ++ goto out; \ ++ oldval = ret; \ ++ } \ ++ atomic_delay (); \ ++ } \ ++ atomic_or (&(lock), __RTLD_MRLOCK_WWAIT); \ ++ oldval |= __RTLD_MRLOCK_WWAIT; \ ++ lll_futex_wait (lock, oldval); \ ++ } \ ++ out:; \ ++ } while (0) ++ ++ ++#define __rtld_mrlock_done(lock) \ ++ do { \ ++ int oldval = atomic_exchange_and_add (&(lock), -__RTLD_MRLOCK_WRITER); \ ++ if (__builtin_expect ((oldval & __RTLD_MRLOCK_RWAIT) != 0, 0)) \ ++ lll_futex_wake (&(lock), 0x7fffffff); \ ++ } while (0) ++ ++ ++/* Function to wait for variable become zero. Used in ld.so for ++ reference counters. */ ++#define __rtld_waitzero(word) \ ++ do { \ ++ while (1) \ ++ { \ ++ int val = word; \ ++ if (val == 0) \ ++ break; \ ++ lll_futex_wait (&(word), val); \ ++ } \ ++ } while (0) ++ ++ ++#define __rtld_notify(word) \ ++ lll_futex_wake (&(word), 1) ++ ++#endif --- eglibc-2.13.orig/debian/patches/any/cvs-fopen.diff +++ eglibc-2.13/debian/patches/any/cvs-fopen.diff @@ -0,0 +1,75 @@ +2011-04-22 Ulrich Drepper + + [BZ #12685] + * libio/fileops.c (_IO_new_file_fopen): Scan up to 7 bytes of the + mode string. + Patch by Eric Blake . + +diff --git a/libio/fileops.c b/libio/fileops.c +index eba2768..ea730ac 100644 +--- a/libio/fileops.c ++++ b/libio/fileops.c +@@ -290,7 +290,7 @@ _IO_new_file_fopen (fp, filename, mode, is32not64) + #ifdef _LIBC + last_recognized = mode; + #endif +- for (i = 1; i < 6; ++i) ++ for (i = 1; i < 7; ++i) + { + switch (*++mode) + { +@@ -997,18 +997,18 @@ _IO_new_file_seekoff (fp, offset, dir, mode) + /* Adjust for read-ahead (bytes is buffer). */ + offset -= fp->_IO_read_end - fp->_IO_read_ptr; + if (fp->_offset == _IO_pos_BAD) +- { +- if (mode != 0) +- goto dumb; +- else +- { +- result = _IO_SYSSEEK (fp, 0, dir); +- if (result == EOF) +- return result; +- +- fp->_offset = result; +- } +- } ++ { ++ if (mode != 0) ++ goto dumb; ++ else ++ { ++ result = _IO_SYSSEEK (fp, 0, dir); ++ if (result == EOF) ++ return result; ++ ++ fp->_offset = result; ++ } ++ } + /* Make offset absolute, assuming current pointer is file_ptr(). */ + offset += fp->_offset; + if (offset < 0) +@@ -1270,7 +1270,7 @@ _IO_new_file_write (f, data, n) + { + f->_flags |= _IO_ERR_SEEN; + break; +- } ++ } + to_do -= count; + data = (void *) ((char *) data + count); + } +@@ -1358,12 +1358,12 @@ _IO_new_file_xsputn (f, data, n) + do_write = to_do - (block_size >= 128 ? to_do % block_size : 0); + + if (do_write) +- { ++ { + count = new_do_write (f, s, do_write); + to_do -= count; + if (count < do_write) + return n - to_do; +- } ++ } + + /* Now write out the remainder. Normally, this will fit in the + buffer, but it's somewhat messier for line-buffered files, --- eglibc-2.13.orig/debian/patches/any/submitted-ldsodefs_rtld_debug.diff +++ eglibc-2.13/debian/patches/any/submitted-ldsodefs_rtld_debug.diff @@ -0,0 +1,18 @@ +2011-02-11 Aurelien Jarno + + * sysdeps/generic/ldsodefs.h: include . + +--- + sysdeps/generic/ldsodefs.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/sysdeps/generic/ldsodefs.h ++++ b/sysdeps/generic/ldsodefs.h +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include /* For __OPTION_EGLIBC_RTLD_DEBUG. */ + + __BEGIN_DECLS + --- eglibc-2.13.orig/debian/patches/any/local-stubs_h.diff +++ eglibc-2.13/debian/patches/any/local-stubs_h.diff @@ -0,0 +1,15 @@ +--- + include/stubs-prologue.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/stubs-prologue.h ++++ b/include/stubs-prologue.h +@@ -8,7 +8,7 @@ + every time called, usually setting errno to ENOSYS. */ + + #ifdef _LIBC +- #error Applications may not define the macro _LIBC ++# error Applications may not define the macro _LIBC + #endif + + @ Placeholder line so we remember to keep the preceding blank line here. --- eglibc-2.13.orig/debian/patches/any/local-base.diff +++ eglibc-2.13/debian/patches/any/local-base.diff @@ -0,0 +1,64 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: hjl libc-base patch + +2003-05-15 + + * elf/do-lookup.h (FCT): Try the base version, the first + version and then the default version, in that order, for + the old unversioned reference. + +--- elf/do-lookup.h.base 2003-05-15 09:29:25.000000000 -0700 ++++ elf/do-lookup.h 2003-05-15 09:24:24.000000000 -0700 +@@ -52,7 +52,8 @@ FCT (const char *undef_name, unsigned lo + const ElfW(Sym) *sym; + #if ! VERSIONED + int num_versions = 0; +- const ElfW(Sym) *versioned_sym = NULL; ++ const ElfW(Sym) *default_version = NULL; ++ const ElfW(Sym) *first_version = NULL; + #endif + + map = list[i]; +@@ -155,16 +156,29 @@ FCT (const char *undef_name, unsigned lo + public interface should be returned. */ + if (verstab != NULL) + { +- if ((verstab[symidx] & 0x7fff) +- >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3)) ++ ElfW(Half) ndx = verstab[symidx] & 0x7fff; ++ if (ndx >= ((flags & DL_LOOKUP_RETURN_NEWEST) ? 2 : 3)) + { + /* Don't accept hidden symbols. */ + if ((verstab[symidx] & 0x8000) == 0 && num_versions++ == 0) + /* No version so far. */ +- versioned_sym = sym; ++ default_version = sym; + + continue; + } ++ if ((flags & DL_LOOKUP_RETURN_NEWEST) == 0 && ndx != 0) ++ { ++ /* ndx == 1 is the base version. We will use it for ++ old unversioned application. */ ++ if (ndx != 1) ++ { ++ /* We remember the first version and keep looking ++ for the base version. */ ++ if (ndx == 2) ++ first_version = sym; ++ continue; ++ } ++ } + } + #endif + +@@ -179,7 +193,8 @@ FCT (const char *undef_name, unsigned lo + #if VERSIONED + sym = NULL; + #else +- sym = num_versions == 1 ? versioned_sym : NULL; ++ sym = first_version ?: (num_versions == 1 ++ ? default_version : NULL); + #endif + + if (sym != NULL) --- eglibc-2.13.orig/debian/patches/any/cvs-unique_sym_table-corruptions.diff +++ eglibc-2.13/debian/patches/any/cvs-unique_sym_table-corruptions.diff @@ -0,0 +1,81 @@ +2011-05-12 Ulrich Drepper + + [BZ #12511] + * elf/dl-lookup.c (enter): Don't test for copy relocation here and + don't set DF_1_NODELETE here. + (do_lookup_x): When entering new entry test for copy relocation + and if necessary set DF_1_NODELETE flag. + +diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c +index 19b27d7..affb53f 100644 +--- a/elf/dl-lookup.c ++++ b/elf/dl-lookup.c +@@ -312,39 +312,21 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash, + definition we have to use it. */ + void enter (struct unique_sym *table, size_t size, + unsigned int hash, const char *name, +- const ElfW(Sym) *sym, struct link_map *map) ++ const ElfW(Sym) *sym, const struct link_map *map) + { + size_t idx = hash % size; + size_t hash2 = 1 + hash % (size - 2); +- while (1) ++ while (table[idx].name != NULL) + { +- if (table[idx].name == NULL) +- { +- table[idx].hashval = hash; +- table[idx].name = name; +- if ((type_class & ELF_RTYPE_CLASS_COPY) != 0) +- { +- table[idx].sym = ref; +- table[idx].map = undef_map; +- } +- else +- { +- table[idx].sym = sym; +- table[idx].map = map; +- +- if (map->l_type == lt_loaded) +- /* Make sure we don't unload this object by +- setting the appropriate flag. */ +- map->l_flags_1 |= DF_1_NODELETE; +- } +- +- return; +- } +- + idx += hash2; + if (idx >= size) + idx -= size; + } ++ ++ table[idx].hashval = hash; ++ table[idx].name = name; ++ table[idx].sym = sym; ++ table[idx].map = map; + } + + struct unique_sym_table *tab +@@ -450,8 +432,19 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash, + tab->free = free; + } + +- enter (entries, size, new_hash, strtab + sym->st_name, sym, +- (struct link_map *) map); ++ if ((type_class & ELF_RTYPE_CLASS_COPY) != 0) ++ enter (entries, size, new_hash, strtab + sym->st_name, ref, ++ undef_map); ++ else ++ { ++ enter (entries, size, new_hash, strtab + sym->st_name, sym, ++ map); ++ ++ if (map->l_type == lt_loaded) ++ /* Make sure we don't unload this object by ++ setting the appropriate flag. */ ++ ((struct link_map *) map)->l_flags_1 |= DF_1_NODELETE; ++ } + ++tab->n_elements; + + __rtld_lock_unlock_recursive (tab->lock); --- eglibc-2.13.orig/debian/patches/any/local-ipv6-lookup.diff +++ eglibc-2.13/debian/patches/any/local-ipv6-lookup.diff @@ -0,0 +1,12 @@ +--- sysdeps/unix/sysv/linux/check_pf.c~ 2010-04-15 16:09:03.661086635 +0200 ++++ sysdeps/unix/sysv/linux/check_pf.c 2010-04-15 17:50:08.401085393 +0200 +@@ -178,7 +178,8 @@ + } + else + { +- if (!IN6_IS_ADDR_LOOPBACK (address)) ++ if (!IN6_IS_ADDR_LOOPBACK (address) ++ && !IN6_IS_ADDR_LINKLOCAL(address)) + *seen_ipv6 = true; + } + } --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-gscope.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-gscope.diff @@ -0,0 +1,38 @@ +--- + linuxthreads/descr.h | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/linuxthreads/descr.h ++++ b/linuxthreads/descr.h +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + + /* Fast thread-specific data internal to libc. */ +@@ -123,12 +124,23 @@ + uintptr_t sysinfo; + uintptr_t stack_guard; + uintptr_t pointer_guard; ++# ifdef __FreeBSD_kernel__ ++ long gscope_flag; ++# else ++ int gscope_flag; ++# endif + } data; + void *__padding[16]; + } p_header; + # define p_multiple_threads p_header.data.multiple_threads ++# define p_gscope_flag p_header.data.gscope_flag + #elif TLS_MULTIPLE_THREADS_IN_TCB + int p_multiple_threads; ++# ifdef __FreeBSD_kernel__ ++ long p_gscope_flag; ++# else ++ int p_gscope_flag; ++# endif + #endif + + pthread_descr p_nextlive, p_prevlive; --- eglibc-2.13.orig/debian/patches/any/local-missing-linux_types.h.diff +++ eglibc-2.13/debian/patches/any/local-missing-linux_types.h.diff @@ -0,0 +1,14 @@ +--- + sysdeps/unix/sysv/linux/netinet/if_fddi.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/sysdeps/unix/sysv/linux/netinet/if_fddi.h ++++ b/sysdeps/unix/sysv/linux/netinet/if_fddi.h +@@ -23,6 +23,7 @@ + #include + #include + ++#include + #include + + #ifdef __USE_BSD --- eglibc-2.13.orig/debian/patches/any/submitted-leading-zero-stack-guard.diff +++ eglibc-2.13/debian/patches/any/submitted-leading-zero-stack-guard.diff @@ -0,0 +1,58 @@ +Description: require that the first byte in the stack guard in a NULL byte, + to improve mitigation of NULL-terminated string overflows. +Bug: http://sourceware.org/bugzilla/show_bug.cgi?id=10149 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/413278 +Author: Kees Cook + +--- + sysdeps/unix/sysv/linux/dl-osinfo.h | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +--- a/sysdeps/unix/sysv/linux/dl-osinfo.h ++++ b/sysdeps/unix/sysv/linux/dl-osinfo.h +@@ -65,7 +65,12 @@ + static inline uintptr_t __attribute__ ((always_inline)) + _dl_setup_stack_chk_guard (void *dl_random) + { +- uintptr_t ret; ++ uintptr_t ret = 0; ++ /* Having a leading zero byte protects the stack guard from being ++ overwritten with str* write operations or exposed by an ++ unterminated str* read operation. */ ++ unsigned char *p = ((unsigned char *) &ret) + 1; ++ int size = sizeof (ret) - 1; + #ifndef __ASSUME_AT_RANDOM + if (__builtin_expect (dl_random == NULL, 0)) + { +@@ -73,16 +78,16 @@ + int fd = __open ("/dev/urandom", O_RDONLY); + if (fd >= 0) + { +- ssize_t reslen = __read (fd, &ret, sizeof (ret)); ++ ssize_t reslen = __read (fd, p, size); + __close (fd); +- if (reslen == (ssize_t) sizeof (ret)) ++ if (reslen == (ssize_t) size) + return ret; + } + # endif +- ret = 0; +- unsigned char *p = (unsigned char *) &ret; +- p[sizeof (ret) - 1] = 255; +- p[sizeof (ret) - 2] = '\n'; ++ /* Lacking any other form of randomized stack guard, add other ++ terminators in an attempt to block things like fgets, etc. */ ++ p[size - 1] = 255; ++ p[size - 2] = '\n'; + #ifdef HP_TIMING_NOW + hp_timing_t hpt; + HP_TIMING_NOW (hpt); +@@ -115,7 +120,7 @@ + /* We need in the moment only 8 bytes on 32-bit platforms and 16 + bytes on 64-bit platforms. Therefore we can use the data + directly and not use the kernel-provided data to seed a PRNG. */ +- memcpy (&ret, dl_random, sizeof (ret)); ++ memcpy (p, dl_random, size); + return ret; + } + --- eglibc-2.13.orig/debian/patches/any/submitted-resolv-init.diff +++ eglibc-2.13/debian/patches/any/submitted-resolv-init.diff @@ -0,0 +1,18 @@ +2011-07-26 Aurelien Jarno + + * res_send.c(__libc_res_nsend): Correctly copy the nameserver + address. + +diff --git a/resolv/res_send.c b/resolv/res_send.c +index a001c1e..51ddf38 100644 +--- a/resolv/res_send.c ++++ b/resolv/res_send.c +@@ -441,7 +441,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen, + malloc(sizeof (struct sockaddr_in6)); + if (EXT(statp).nsaddrs[n] != NULL) { + memset (mempcpy(EXT(statp).nsaddrs[n], +- &statp->nsaddr_list[n], ++ &statp->nsaddr_list[ns], + sizeof (struct sockaddr_in)), + '\0', + sizeof (struct sockaddr_in6) --- eglibc-2.13.orig/debian/patches/any/local-relro-mprotect.diff +++ eglibc-2.13/debian/patches/any/local-relro-mprotect.diff @@ -0,0 +1,21 @@ +http://sources.redhat.com/bugzilla/show_bug.cgi?id=12492 + +--- + elf/dl-load.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/elf/dl-load.c ++++ b/elf/dl-load.c +@@ -1388,7 +1388,11 @@ + if (__builtin_expect (p + s <= relro_end, 1)) + { + /* The variable lies in the region protected by RELRO. */ +- __mprotect ((void *) p, s, PROT_READ|PROT_WRITE); ++ if (__mprotect ((void *) p, s, PROT_READ|PROT_WRITE) < 0) ++ { ++ errstring = N_("cannot change memory protections"); ++ goto call_lose_errno; ++ } + __stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC; + __mprotect ((void *) p, s, PROT_READ); + } --- eglibc-2.13.orig/debian/patches/any/submitted-accept4-hidden.diff +++ eglibc-2.13/debian/patches/any/submitted-accept4-hidden.diff @@ -0,0 +1,19 @@ +2009-05-23 Aurelien Jarno + + * socket/accept4.c (accept4): Remove libc_hidden_def. + +--- + socket/accept4.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/socket/accept4.c ++++ b/socket/accept4.c +@@ -35,8 +35,6 @@ + __set_errno (ENOSYS); + return -1; + } +-libc_hidden_def (accept4) +- + + stub_warning (accept4) + #include --- eglibc-2.13.orig/debian/patches/any/cvs-addmntent.diff +++ eglibc-2.13/debian/patches/any/cvs-addmntent.diff @@ -0,0 +1,20 @@ +2011-05-11 Ulrich Drepper + + [BZ #12625] + * misc/mntent_r.c (addmntent): Flush the stream after the output + +diff --git a/misc/mntent_r.c b/misc/mntent_r.c +index 9598528..6959f0e 100644 +--- a/misc/mntent_r.c ++++ b/misc/mntent_r.c +@@ -263,8 +263,8 @@ __addmntent (FILE *stream, const struct mntent *mnt) + mntcopy.mnt_type, + mntcopy.mnt_opts, + mntcopy.mnt_freq, +- mntcopy.mnt_passno) +- < 0 ? 1 : 0); ++ mntcopy.mnt_passno) < 0 ++ || fflush (stream) != 0); + } + weak_alias (__addmntent, addmntent) + --- eglibc-2.13.orig/debian/patches/any/submitted-mqueue-throw.diff +++ eglibc-2.13/debian/patches/any/submitted-mqueue-throw.diff @@ -0,0 +1,39 @@ +2011-06-04 Jakub Jelinek + + [BZ #12841] + * rt/bits/mqueue2.h (__mq_open_2): Add __THROW. + (__mq_open_alias): Use __REDIRECT_NTH instead of __REDIRECT. + (mq_open): Add __NTH. + +--- libc/rt/bits/mqueue2.h 2009-05-16 19:23:37.000000000 +0200 ++++ libc/rt/bits/mqueue2.h 2011-06-04 19:05:38.322333773 +0200 +@@ -1,5 +1,5 @@ + /* Checking macros for mq functions. +- Copyright (C) 2007 Free Software Foundation, Inc. ++ Copyright (C) 2007, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -25,16 +25,18 @@ + parameter. */ + extern mqd_t mq_open (__const char *__name, int __oflag, ...) + __THROW __nonnull ((1)); +-extern mqd_t __mq_open_2 (__const char *__name, int __oflag) __nonnull ((1)); +-extern mqd_t __REDIRECT (__mq_open_alias, (__const char *__name, int __oflag, ...), +- mq_open) __nonnull ((1)); ++extern mqd_t __mq_open_2 (__const char *__name, int __oflag) ++ __THROW __nonnull ((1)); ++extern mqd_t __REDIRECT_NTH (__mq_open_alias, (__const char *__name, ++ int __oflag, ...), mq_open) ++ __nonnull ((1)); + __errordecl (__mq_open_wrong_number_of_args, + "mq_open can be called either with 2 or 4 arguments"); + __errordecl (__mq_open_missing_mode_and_attr, + "mq_open with O_CREAT in second argument needs 4 arguments"); + + __extern_always_inline mqd_t +-mq_open (__const char *__name, int __oflag, ...) ++__NTH (mq_open (__const char *__name, int __oflag, ...)) + { + if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2) + __mq_open_wrong_number_of_args (); --- eglibc-2.13.orig/debian/patches/any/submitted-rlimit.diff +++ eglibc-2.13/debian/patches/any/submitted-rlimit.diff @@ -0,0 +1,35 @@ +2005-06-20 Jakub Jelinek + + * sysdeps/unix/sysv/linux/bits/resource.h (RLIMIT_NICE, + RLIMIT_RTPRIO): Add. + (RLIMIT_NLIMITS): Adjust. + * sysdeps/unix/sysv/linux/alpha/bits/resource.h (RLIMIT_NICE, + RLIMIT_RTPRIO): Add. + (RLIMIT_NLIMITS): Adjust. + * sysdeps/unix/sysv/linux/mips/bits/resource.h (RLIMIT_NICE, + RLIMIT_RTPRIO): Add. + (RLIMIT_NLIMITS): Adjust. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h (RLIMIT_NICE, + RLIMIT_RTPRIO): Add. + (RLIMIT_NLIMITS): Adjust. + + +diff --git a/sysdeps/unix/sysv/linux/bits/resource.h b/sysdeps/unix/sysv/linux/bits/resource.h +index ca2c9f0..40b581b 100644 +--- a/sysdeps/unix/sysv/linux/bits/resource.h ++++ b/sysdeps/unix/sysv/linux/bits/resource.h +@@ -100,7 +100,13 @@ enum __rlimit_resource + __RLIMIT_RTPRIO = 14, + #define RLIMIT_RTPRIO __RLIMIT_RTPRIO + +- __RLIMIT_NLIMITS = 15, ++ /* Maximum CPU time that a process scheduled under a real-time ++ scheduling policy may consume without making a blocking ++ system call. */ ++ __RLIMIT_RTTIME = 15, ++#define RLIMIT_RTTIME __RLIMIT_RTTIME ++ ++ __RLIMIT_NLIMITS = 16, + __RLIM_NLIMITS = __RLIMIT_NLIMITS + #define RLIMIT_NLIMITS __RLIMIT_NLIMITS + #define RLIM_NLIMITS __RLIM_NLIMITS --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-ptw.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-ptw.diff @@ -0,0 +1,15 @@ +--- + linuxthreads/Makeconfig | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/linuxthreads/Makeconfig ++++ b/linuxthreads/Makeconfig +@@ -9,3 +9,8 @@ + bounded-thread-library = $(common-objpfx)linuxthreads/libpthread_b.a + + rpath-dirs += linuxthreads ++ ++# This makes for ptw-*.? object rules in sysd-rules. ++ptw-CPPFLAGS := -DPTW ++sysd-rules-patterns += ptw-%:% ++ --- eglibc-2.13.orig/debian/patches/any/local-no-SOCK_NONBLOCK.diff +++ eglibc-2.13/debian/patches/any/local-no-SOCK_NONBLOCK.diff @@ -0,0 +1,105 @@ +--- + nscd/connections.c | 9 ++++++++- + resolv/res_send.c | 12 ++++++++++-- + 2 files changed, 18 insertions(+), 3 deletions(-) + +--- a/resolv/res_send.c ++++ b/resolv/res_send.c +@@ -103,13 +103,13 @@ + #define MAXPACKET 65536 + #endif + +- ++#ifdef SOCK_NONBLOCK + #ifndef __ASSUME_SOCK_CLOEXEC + static int __have_o_nonblock; + #else + # define __have_o_nonblock 0 + #endif +- ++#endif + + /* From ev_streams.c. */ + +@@ -917,6 +917,7 @@ + + /* only try IPv6 if IPv6 NS and if not failed before */ + if (nsap->sa_family == AF_INET6 && !statp->ipv6_unavail) { ++#ifdef SOCK_NONBLOCK + if (__builtin_expect (__have_o_nonblock >= 0, 1)) { + EXT(statp).nssocks[ns] = + socket(PF_INET6, SOCK_DGRAM|SOCK_NONBLOCK, +@@ -929,12 +930,14 @@ + #endif + } + if (__builtin_expect (__have_o_nonblock < 0, 0)) ++#endif + EXT(statp).nssocks[ns] = + socket(PF_INET6, SOCK_DGRAM, 0); + if (EXT(statp).nssocks[ns] < 0) + statp->ipv6_unavail = errno == EAFNOSUPPORT; + slen = sizeof (struct sockaddr_in6); + } else if (nsap->sa_family == AF_INET) { ++#ifdef SOCK_NONBLOCK + if (__builtin_expect (__have_o_nonblock >= 0, 1)) { + EXT(statp).nssocks[ns] + = socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, +@@ -947,6 +950,7 @@ + #endif + } + if (__builtin_expect (__have_o_nonblock < 0, 0)) ++#endif + EXT(statp).nssocks[ns] + = socket(PF_INET, SOCK_DGRAM, 0); + slen = sizeof (struct sockaddr_in); +@@ -973,7 +977,11 @@ + __res_iclose(statp, false); + return (0); + } ++#ifdef SOCK_NONBLOCK + if (__builtin_expect (__have_o_nonblock < 0, 0)) { ++#else ++ { ++#endif + /* Make socket non-blocking. */ + int fl = __fcntl (EXT(statp).nssocks[ns], F_GETFL); + if (fl != -1) +--- a/nscd/connections.c ++++ b/nscd/connections.c +@@ -1834,6 +1834,7 @@ + /* We have a new incoming connection. Accept the connection. */ + int fd; + ++#ifdef SOCK_NONBLOCK + #ifndef __ASSUME_ACCEPT4 + fd = -1; + if (have_accept4 >= 0) +@@ -1850,6 +1851,9 @@ + if (have_accept4 < 0) + fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL)); + #endif ++#else ++ fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL)); ++#endif + + /* Use the descriptor if we have not reached the limit. */ + if (fd >= 0) +@@ -2039,7 +2043,7 @@ + { + /* A new connection. */ + int fd; +- ++#ifdef SOCK_NONBLOCK + # ifndef __ASSUME_ACCEPT4 + fd = -1; + if (have_accept4 >= 0) +@@ -2056,6 +2060,9 @@ + if (have_accept4 < 0) + fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL)); + # endif ++#else ++ fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL)); ++#endif + + /* Use the descriptor if we have not reached the limit. */ + if (fd >= 0) --- eglibc-2.13.orig/debian/patches/any/local-dlfptr.diff +++ eglibc-2.13/debian/patches/any/local-dlfptr.diff @@ -0,0 +1,57 @@ +--- + elf/dl-fptr.c | 18 +++++++++++++++++- + sysdeps/generic/dl-fptr.h | 3 +++ + 2 files changed, 20 insertions(+), 1 deletion(-) + +--- a/elf/dl-fptr.c ++++ b/elf/dl-fptr.c +@@ -1,5 +1,5 @@ + /* Manage function descriptors. Generic version. +- Copyright (C) 1999-2004, 2006 Free Software Foundation, Inc. ++ Copyright (C) 1999-2004, 2006, 2010 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -56,7 +56,12 @@ + } + local = + { ++#ifndef SHARED + .root = &local.boot_table, ++#else ++ /* Address of .boot_table is not known until runtime. */ ++ .root = 0, ++#endif + .npages = 2, + .boot_table = + { +@@ -93,6 +98,17 @@ + return new_table; + } + ++/* Must call _dl_fptr_init before using any other function. */ ++void ++_dl_fptr_init (void) ++{ ++ struct local *l; ++ ++ ELF_MACHINE_LOAD_ADDRESS (l, local); ++ /* Initialize root once. */ ++ if (__builtin_expect (l->root == 0, 0)) ++ l->root = &l->boot_table; ++} + + static ElfW(Addr) + make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp) +--- a/sysdeps/generic/dl-fptr.h ++++ b/sysdeps/generic/dl-fptr.h +@@ -40,6 +40,9 @@ + + extern ElfW(Addr) _dl_boot_fptr_table []; + ++/* Must be called before any other function. */ ++extern void _dl_fptr_init (void); ++ + extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *, + ElfW(Addr)); + --- eglibc-2.13.orig/debian/patches/any/submitted-longdouble.diff +++ eglibc-2.13/debian/patches/any/submitted-longdouble.diff @@ -0,0 +1,46 @@ +--- + math/Makefile | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +--- a/math/Makefile ++++ b/math/Makefile +@@ -95,13 +95,17 @@ + bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int \ + test-dbl-wrap + tests-$(OPTION_EGLIBC_LIBM_BIG) += atest-exp atest-sincos atest-exp2 +-# We do the `long double' tests only if this data type is available and +-# distinct from `double'. ++# We do the `long double' tests only if this data type is available. + test-longdouble-yes = test-ldouble test-ildoubl + distribute += $(test-longdouble-yes:=.c) + ++ifeq ($(long-double-fcts),yes) ++# If we have distinct types then enable testing. ++test-long-double-fcts = yes ++endif ++ + ifneq (no,$(PERL)) +-libm-tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \ ++libm-tests = test-float test-double $(test-longdouble-$(test-long-double-fcts)) \ + test-ifloat test-idouble + libm-tests.o = $(addsuffix .o,$(libm-tests)) + +@@ -178,11 +182,15 @@ + ifneq ($(long-double-fcts),yes) + # The `double' and `long double' types are the same on this machine. + # We won't compile the `long double' code at all. Tell the `double' code +-# to define aliases for the `FUNCl' names. To avoid type conflicts in +-# defining those aliases, tell to declare the `FUNCl' names with +-# `double' instead of `long double'. ++# to define aliases for the `FUNCl' names. ++ifeq ($(header-long-double-fcts),yes) ++math-CPPFLAGS += -DNO_LONG_DOUBLE ++else ++# To avoid type conflicts in defining those aliases, tell to ++# declare the `FUNCl' names with `double' instead of `long double'. + math-CPPFLAGS += -DNO_LONG_DOUBLE -D_Mlong_double_=double + endif ++endif + + # The fdlibm code generates a lot of these warnings but is otherwise clean. + override CFLAGS += -Wno-uninitialized --- eglibc-2.13.orig/debian/patches/any/submitted-clock-settime.diff +++ eglibc-2.13/debian/patches/any/submitted-clock-settime.diff @@ -0,0 +1,16 @@ +http://sourceware.org/bugzilla/show_bug.cgi?id=4026 + +--- + sysdeps/unix/sysv/linux/clock_settime.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sysdeps/unix/sysv/linux/clock_settime.c ++++ b/sysdeps/unix/sysv/linux/clock_settime.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include + + #include "kernel-posix-cpu-timers.h" + #include --- eglibc-2.13.orig/debian/patches/any/local-rtld.diff +++ eglibc-2.13/debian/patches/any/local-rtld.diff @@ -0,0 +1,60 @@ +2011-02-08 Steve Langasek + * elf/Makefile: use the correct path in the ldd script as well + +2006-01-21 Aurelien Jarno + + * Makeconfig: new configuration variable rtlddir to change the + dynamic linker in the ELF binaries, which defaults to slibdir + +2005-08-30 Andreas Jochen + * Makeconfig: use rtlddir instead of slibdir + * elf/Makefile: likewise + +--- + Makeconfig | 7 ++++++- + elf/Makefile | 2 +- + 2 files changed, 7 insertions(+), 2 deletions(-) + +--- a/Makeconfig ++++ b/Makeconfig +@@ -212,6 +212,11 @@ + endif + inst_slibdir = $(install_root)$(slibdir) + ++# Directory of the dynamic linker in the ELF binaries ++ifndef rtlddir ++rtlddir := $(slibdir) ++endif ++ + # Prefix to put on files installed in $(libdir). For libraries `libNAME.a', + # the prefix is spliced between `lib' and the name, so the linker switch + # `-l$(libprefix)NAME' finds the library; for other files the prefix is +@@ -496,7 +501,7 @@ + endif + ifndef config-LDFLAGS + ifeq (yesyes,$(build-shared)$(elf)) +-config-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name) ++config-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name) + endif + endif + ifndef link-libc +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -397,7 +397,7 @@ + | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }' + + # interp.c exists just to get this string into the libraries. +-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \ ++CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"' \ + -DNOT_IN_libc=1 + $(objpfx)interp.os: $(common-objpfx)config.make + +@@ -423,7 +423,7 @@ + endif + + +-common-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \ ++common-ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ + -e 's%@VERSION@%$(version)%g' \ + -e 's%@PKGVERSION@%$(PKGVERSION)%g' \ + -e 's%@REPORT_BUGS_TO@%$(REPORT_BUGS_TO)%g' --- eglibc-2.13.orig/debian/patches/any/cvs-sys-param-ARG_MAX.diff +++ eglibc-2.13/debian/patches/any/cvs-sys-param-ARG_MAX.diff @@ -0,0 +1,26 @@ +2011-03-05 Jonathan Nieder + + * sysdeps/unix/sysv/linux/sys/param.h: Fix an #ifndef __undef_ARG_MAX + where #ifdef was intended. The intent is to prevent ARG_MAX from + being defined by the kernel headers. + +diff --git a/sysdeps/unix/sysv/linux/sys/param.h b/sysdeps/unix/sysv/linux/sys/param.h +index 19c119a..da8f5e4 100644 +--- a/sysdeps/unix/sysv/linux/sys/param.h ++++ b/sysdeps/unix/sysv/linux/sys/param.h +@@ -1,4 +1,5 @@ +-/* Copyright (C) 1995-1997,2000,2001,2003,2008 Free Software Foundation, Inc. ++/* Copyright (C) 1995-1997,2000,2001,2003,2008,2011 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -28,7 +29,7 @@ + #include + + /* The kernel headers defines ARG_MAX. The value is wrong, though. */ +-#ifndef __undef_ARG_MAX ++#ifdef __undef_ARG_MAX + # undef ARG_MAX + # undef __undef_ARG_MAX + #endif --- eglibc-2.13.orig/debian/patches/any/submitted-missing-etc-hosts.diff +++ eglibc-2.13/debian/patches/any/submitted-missing-etc-hosts.diff @@ -0,0 +1,15 @@ +--- + nss/nss_files/files-hosts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/nss/nss_files/files-hosts.c ++++ b/nss/nss_files/files-hosts.c +@@ -480,7 +480,7 @@ + else + { + *errnop = errno; +- *herrnop = NO_DATA; ++ *herrnop = HOST_NOT_FOUND; + } + + __libc_lock_unlock (lock); --- eglibc-2.13.orig/debian/patches/any/submitted-rlimit-rttime.diff +++ eglibc-2.13/debian/patches/any/submitted-rlimit-rttime.diff @@ -0,0 +1,80 @@ +2011-05-22 Aurelien Jarno + + * sysdeps/unix/sysv/linux/bits/resource.h (RLIMIT_RTTIME): Add. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise. + * ports/sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise. + * ports/sysdeps/unix/sysv/linux/alpha/bits/resource.h: Likewise. + +diff a/sysdeps/unix/sysv/linux/bits/resource.h b/sysdeps/unix/sysv/linux/bits/resource.h +--- a/sysdeps/unix/sysv/linux/bits/resource.h ++++ b/sysdeps/unix/sysv/linux/bits/resource.h +@@ -100,7 +100,13 @@ enum __rlimit_resource + __RLIMIT_RTPRIO = 14, + #define RLIMIT_RTPRIO __RLIMIT_RTPRIO + +- __RLIMIT_NLIMITS = 15, ++ /* Maximum CPU time that a process scheduled under a real-time ++ scheduling policy may consume without making a blocking ++ system call. */ ++ __RLIMIT_RTTIME = 15, ++#define RLIMIT_RTTIME __RLIMIT_RTTIME ++ ++ __RLIMIT_NLIMITS = 16, + __RLIM_NLIMITS = __RLIMIT_NLIMITS + #define RLIMIT_NLIMITS __RLIMIT_NLIMITS + #define RLIM_NLIMITS __RLIM_NLIMITS +diff a/sysdeps/unix/sysv/linux/sparc/bits/resource.h b/sysdeps/unix/sysv/linux/sparc/bits/resource.h +--- a/sysdeps/unix/sysv/linux/sparc/bits/resource.h ++++ b/sysdeps/unix/sysv/linux/sparc/bits/resource.h +@@ -100,7 +100,13 @@ enum __rlimit_resource + __RLIMIT_RTPRIO = 14, + #define RLIMIT_RTPRIO __RLIMIT_RTPRIO + +- __RLIMIT_NLIMITS = 15, ++ /* Maximum CPU time that a process scheduled under a real-time ++ scheduling policy may consume without making a blocking ++ system call. */ ++ __RLIMIT_RTTIME = 15, ++#define RLIMIT_RTTIME __RLIMIT_RTTIME ++ ++ __RLIMIT_NLIMITS = 16, + __RLIM_NLIMITS = __RLIMIT_NLIMITS + #define RLIMIT_NLIMITS __RLIMIT_NLIMITS + #define RLIM_NLIMITS __RLIM_NLIMITS +diff a/ports/sysdeps/unix/sysv/linux/mips/bits/resource.h b/ports/sysdeps/unix/sysv/linux/mips/bits/resource.h +--- a/ports/sysdeps/unix/sysv/linux/mips/bits/resource.h ++++ b/ports/sysdeps/unix/sysv/linux/mips/bits/resource.h +@@ -100,7 +100,13 @@ enum __rlimit_resource + __RLIMIT_RTPRIO = 14, + #define RLIMIT_RTPRIO __RLIMIT_RTPRIO + +- __RLIMIT_NLIMITS = 15, ++ /* Maximum CPU time that a process scheduled under a real-time ++ scheduling policy may consume without making a blocking ++ system call. */ ++ __RLIMIT_RTTIME = 15, ++#define RLIMIT_RTTIME __RLIMIT_RTTIME ++ ++ __RLIMIT_NLIMITS = 16, + __RLIM_NLIMITS = __RLIMIT_NLIMITS + #define RLIMIT_NLIMITS __RLIMIT_NLIMITS + #define RLIM_NLIMITS __RLIM_NLIMITS + +diff a/ports/sysdeps/unix/sysv/linux/alpha/bits/resource.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/resource.h +--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/resource.h ++++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/resource.h +@@ -100,7 +100,13 @@ enum __rlimit_resource + __RLIMIT_RTPRIO = 14, + #define RLIMIT_RTPRIO __RLIMIT_RTPRIO + +- __RLIMIT_NLIMITS = 15, ++ /* Maximum CPU time that a process scheduled under a real-time ++ scheduling policy may consume without making a blocking ++ system call. */ ++ __RLIMIT_RTTIME = 15, ++#define RLIMIT_RTTIME __RLIMIT_RTTIME ++ ++ __RLIMIT_NLIMITS = 16, + __RLIM_NLIMITS = __RLIMIT_NLIMITS + #define RLIMIT_NLIMITS __RLIMIT_NLIMITS + #define RLIM_NLIMITS __RLIM_NLIMITS --- eglibc-2.13.orig/debian/patches/any/local-localedef-fix-trampoline.diff +++ eglibc-2.13/debian/patches/any/local-localedef-fix-trampoline.diff @@ -0,0 +1,57 @@ +# DP: Description: Fix localedef segfault when run under exec-shield, +# PaX or similar. (#231438, #198099) +# DP: Dpatch Author: James Troup +# DP: Patch Author: (probably) Jakub Jelinek +# DP: Upstream status: Unknown +# DP: Status Details: Unknown +# DP: Date: 2004-03-16 + +--- + locale/programs/3level.h | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +--- a/locale/programs/3level.h ++++ b/locale/programs/3level.h +@@ -201,6 +201,42 @@ + } + } + } ++ ++/* GCC ATM seems to do a poor job with pointers to nested functions passed ++ to inlined functions. Help it a little bit with this hack. */ ++#define wchead_table_iterate(tp, fn) \ ++do \ ++ { \ ++ struct wchead_table *t = (tp); \ ++ uint32_t index1; \ ++ for (index1 = 0; index1 < t->level1_size; index1++) \ ++ { \ ++ uint32_t lookup1 = t->level1[index1]; \ ++ if (lookup1 != ((uint32_t) ~0)) \ ++ { \ ++ uint32_t lookup1_shifted = lookup1 << t->q; \ ++ uint32_t index2; \ ++ for (index2 = 0; index2 < (1 << t->q); index2++) \ ++ { \ ++ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \ ++ if (lookup2 != ((uint32_t) ~0)) \ ++ { \ ++ uint32_t lookup2_shifted = lookup2 << t->p; \ ++ uint32_t index3; \ ++ for (index3 = 0; index3 < (1 << t->p); index3++) \ ++ { \ ++ struct element_t *lookup3 \ ++ = t->level3[index3 + lookup2_shifted]; \ ++ if (lookup3 != NULL) \ ++ fn ((((index1 << t->q) + index2) << t->p) + index3, \ ++ lookup3); \ ++ } \ ++ } \ ++ } \ ++ } \ ++ } \ ++ } while (0) ++ + #endif + + #ifndef NO_FINALIZE --- eglibc-2.13.orig/debian/patches/any/submitted-localedef-mmap.diff +++ eglibc-2.13/debian/patches/any/submitted-localedef-mmap.diff @@ -0,0 +1,39 @@ +2009-10-27 Aurelien Jarno + + * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory + used later with MMAP_FIXED | MMAP_SHARED to cope with different + alignment restrictions. + +--- + locale/programs/locarchive.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/locale/programs/locarchive.c ++++ b/locale/programs/locarchive.c +@@ -134,7 +134,7 @@ + size_t reserved = RESERVE_MMAP_SIZE; + int xflags = 0; + if (total < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -397,7 +397,7 @@ + size_t reserved = RESERVE_MMAP_SIZE; + int xflags = 0; + if (total < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else +@@ -633,7 +633,7 @@ + int xflags = 0; + void *p; + if (st.st_size < reserved +- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, ++ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, + -1, 0)) != MAP_FAILED)) + xflags = MAP_FIXED; + else --- eglibc-2.13.orig/debian/patches/any/local-tcsetaddr.diff +++ eglibc-2.13/debian/patches/any/local-tcsetaddr.diff @@ -0,0 +1,83 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: tcsetattr sanity check on PARENB/CREAD/CSIZE for ptys +# DP: Related bugs: 218131 +# DP: Author: Jeff Licquia +# DP: Upstream status: [In CVS | Debian-Specific | Pending | Not submitted ] +# DP: Status Details: +# DP: Date: 2003-10-29 + +--- + sysdeps/unix/sysv/linux/tcsetattr.c | 55 +++++++++++++++++++++++++++++++++++- + 1 file changed, 54 insertions(+), 1 deletion(-) + +--- a/sysdeps/unix/sysv/linux/tcsetattr.c ++++ b/sysdeps/unix/sysv/linux/tcsetattr.c +@@ -48,7 +48,12 @@ + const struct termios *termios_p; + { + struct __kernel_termios k_termios; ++ struct __kernel_termios k_termios_old; + unsigned long int cmd; ++ int retval, old_retval; ++ ++ /* Preserve the previous termios state if we can. */ ++ old_retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios_old); + + switch (optional_actions) + { +@@ -80,6 +85,54 @@ + memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], + __KERNEL_NCCS * sizeof (cc_t)); + +- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); ++ ++ /* The Linux kernel silently ignores the invalid c_cflag on pty. ++ We have to check it here, and return an error. But if some other ++ setting was successfully changed, POSIX requires us to report ++ success. */ ++ if ((retval == 0) && (old_retval == 0)) ++ { ++ int save = errno; ++ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); ++ if (retval) ++ { ++ /* We cannot verify if the setting is ok. We don't return ++ an error (?). */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((k_termios_old.c_oflag != k_termios.c_oflag) || ++ (k_termios_old.c_lflag != k_termios.c_lflag) || ++ (k_termios_old.c_line != k_termios.c_line) || ++ ((k_termios_old.c_iflag | IBAUD0) != (k_termios.c_iflag | IBAUD0))) ++ { ++ /* Some other setting was successfully changed, which ++ means we should not return an error. */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((k_termios_old.c_cflag | (PARENB & CREAD & CSIZE)) != ++ (k_termios.c_cflag | (PARENB & CREAD & CSIZE))) ++ { ++ /* Some other c_cflag setting was successfully changed, which ++ means we should not return an error. */ ++ __set_errno (save); ++ retval = 0; ++ } ++ else if ((termios_p->c_cflag & (PARENB | CREAD)) ++ != (k_termios.c_cflag & (PARENB | CREAD)) ++ || ((termios_p->c_cflag & CSIZE) ++ && (termios_p->c_cflag & CSIZE) ++ != (k_termios.c_cflag & CSIZE))) ++ { ++ /* It looks like the Linux kernel silently changed the ++ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an ++ error. */ ++ __set_errno (EINVAL); ++ retval = -1; ++ } ++ } ++ return retval; + } + libc_hidden_def (tcsetattr) --- eglibc-2.13.orig/debian/patches/any/revert-cvs-futimens.diff +++ eglibc-2.13/debian/patches/any/revert-cvs-futimens.diff @@ -0,0 +1,20 @@ +Revert (powerpc buildds still run 2.6.15 kernels): + +2009-12-21 Ulrich Drepper + + * sysdeps/unix/sysv/linux/futimens.c: Handle AT_FDCWD. + +--- a/sysdeps/unix/sysv/linux/futimens.c.orig 2010-01-05 09:18:42.882336689 +0000 ++++ b/sysdeps/unix/sysv/linux/futimens.c 2010-01-05 09:19:20.562336504 +0000 +@@ -33,11 +33,6 @@ + futimens (int fd, const struct timespec tsp[2]) + { + #ifdef __NR_utimensat +- if (fd < 0) +- { +- __set_errno (EBADF); +- return -1; +- } + return INLINE_SYSCALL (utimensat, 4, fd, NULL, tsp, 0); + #else + __set_errno (ENOSYS); --- eglibc-2.13.orig/debian/patches/any/arm-unwind-records.diff +++ eglibc-2.13/debian/patches/any/arm-unwind-records.diff @@ -0,0 +1,367 @@ +From 738860089d5c510f3445f9830d9924ab58659c51 Mon Sep 17 00:00:00 2001 +From: Ulrich Weigand +Date: Mon, 21 Mar 2011 20:44:01 +0000 +Subject: [PATCH] Create ARM unwind records for system call stubs. + +--- + ChangeLog.arm | 27 +++++ + .../unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h | 103 ++++++++++---------- + sysdeps/unix/sysv/linux/arm/eabi/sysdep.h | 91 +++++++++++++++++- + sysdeps/unix/sysv/linux/arm/vfork.S | 23 ++++- + 4 files changed, 186 insertions(+), 58 deletions(-) + +2011-03-21 Ulrich Weigand + + * sysdeps/unix/sysv/arm/eabi/sysdep.h (DO_CALL): Do not save/restore + r7 into IP. + (DOARGS_0, UNDOARGS_0): Redefine to save/restore r7 to the stack. + Create appropriate ARM unwind record. + (DOARGS_1, UNDOARGS_1): Likewise. + (DOARGS_2, UNDOARGS_2): Likewise. + (DOARGS_3, UNDOARGS_3): Likewise. + (DOARGS_4, UNDOARGS_4): Likewise. + (DOARGS_5, UNDOARGS_5): Likewise. + (DOARGS_6, UNDOARGS_6): Likewise. + (DOARGS_7, UNDOARGS_7): Likewise. + * sysdeps/unix/sysv/arm/eabi/nptl/sysdep-cancel.h (PSEUDO): Adapt to + DO_CALL/DOARGS_xxx/UNDOARGS_xxx changes. + (RESTART_UNWIND): Likewise. + (DOCARGS_0, RESTORE_LR_0): Likewise. + (DOCARGS_1): Likewise. + (DOCARGS_2): Likewise. + (DOCARGS_3): Likewise. + (DOCARGS_4): Likewise. + (DOCARGS_5, UNDOCARGS_5, RESTORE_LR_5): Likewise. + (DOCARGS_6, UNDOCARGS_6): Likewise. + * sysdeps/unix/sysv/linux/arm/vfork.S (__vfork): Do no use DO_CALL to + call vfork. In the __ARM_EABI__ case, save r7 both to IP (to restore + from) and the stack (to create an ARM unwind record). + +diff --git a/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h +index 458558b..f4a8af4 100644 +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h +@@ -47,20 +47,20 @@ + DOARGS_##args; \ + bne .Lpseudo_cancel; \ + cfi_remember_state; \ +- DO_CALL (syscall_name, 0); \ ++ ldr r7, =SYS_ify (syscall_name); \ ++ swi 0x0; \ + UNDOARGS_##args; \ + cmn r0, $4096; \ + PSEUDO_RET; \ + cfi_restore_state; \ + .Lpseudo_cancel: \ +- .fnstart; \ ++ .fnstart; /* matched by the .fnend in UNDOARGS below. */ \ + DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \ + CENABLE; \ + mov ip, r0; /* put mask in safe place. */ \ + UNDOCARGS_##args; /* restore syscall args. */ \ + ldr r7, =SYS_ify (syscall_name); \ + swi 0x0; /* do the call. */ \ +- .fnend; /* Past here we can't easily unwind. */ \ + mov r7, r0; /* save syscall return value. */ \ + mov r0, ip; /* get mask back. */ \ + CDISABLE; \ +@@ -69,34 +69,34 @@ + UNDOARGS_##args; \ + cmn r0, $4096 + +-/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for +- six arguments, and nothing for fewer. In order to preserve doubleword ++/* DOARGS pushes eight bytes on the stack for five arguments, twelve bytes for ++ six arguments, and four bytes for fewer. In order to preserve doubleword + alignment, sometimes we must save an extra register. */ + + # define RESTART_UNWIND \ + .fnend; \ + .fnstart; \ +- .save {r7, lr} ++ .save {r7}; \ ++ .save {lr} + + # define DOCARGS_0 \ +- stmfd sp!, {r7, lr}; \ +- cfi_adjust_cfa_offset (8); \ +- cfi_rel_offset (r7, 0); \ +- cfi_rel_offset (lr, 4); \ +- .save {r7, lr} ++ .save {r7}; \ ++ str lr, [sp, #-4]!; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (lr, 0); \ ++ .save {lr} + # define UNDOCARGS_0 + # define RESTORE_LR_0 \ +- ldmfd sp!, {r7, lr}; \ +- cfi_adjust_cfa_offset (-8); \ +- cfi_restore (r7); \ ++ ldr lr, [sp], #4; \ ++ cfi_adjust_cfa_offset (-4); \ + cfi_restore (lr) + + # define DOCARGS_1 \ +- stmfd sp!, {r0, r1, r7, lr}; \ +- cfi_adjust_cfa_offset (16); \ +- cfi_rel_offset (r7, 8); \ +- cfi_rel_offset (lr, 12); \ +- .save {r7, lr}; \ ++ .save {r7}; \ ++ stmfd sp!, {r0, r1, lr}; \ ++ cfi_adjust_cfa_offset (12); \ ++ cfi_rel_offset (lr, 8); \ ++ .save {lr}; \ + .pad #8 + # define UNDOCARGS_1 \ + ldr r0, [sp], #8; \ +@@ -106,11 +106,11 @@ + RESTORE_LR_0 + + # define DOCARGS_2 \ +- stmfd sp!, {r0, r1, r7, lr}; \ +- cfi_adjust_cfa_offset (16); \ +- cfi_rel_offset (r7, 8); \ +- cfi_rel_offset (lr, 12); \ +- .save {r7, lr}; \ ++ .save {r7}; \ ++ stmfd sp!, {r0, r1, lr}; \ ++ cfi_adjust_cfa_offset (12); \ ++ cfi_rel_offset (lr, 8); \ ++ .save {lr}; \ + .pad #8 + # define UNDOCARGS_2 \ + ldmfd sp!, {r0, r1}; \ +@@ -120,11 +120,11 @@ + RESTORE_LR_0 + + # define DOCARGS_3 \ +- stmfd sp!, {r0, r1, r2, r3, r7, lr}; \ +- cfi_adjust_cfa_offset (24); \ +- cfi_rel_offset (r7, 16); \ +- cfi_rel_offset (lr, 20); \ +- .save {r7, lr}; \ ++ .save {r7}; \ ++ stmfd sp!, {r0, r1, r2, r3, lr}; \ ++ cfi_adjust_cfa_offset (20); \ ++ cfi_rel_offset (lr, 16); \ ++ .save {lr}; \ + .pad #16 + # define UNDOCARGS_3 \ + ldmfd sp!, {r0, r1, r2, r3}; \ +@@ -134,11 +134,11 @@ + RESTORE_LR_0 + + # define DOCARGS_4 \ +- stmfd sp!, {r0, r1, r2, r3, r7, lr}; \ +- cfi_adjust_cfa_offset (24); \ +- cfi_rel_offset (r7, 16); \ +- cfi_rel_offset (lr, 20); \ +- .save {r7, lr}; \ ++ .save {r7}; \ ++ stmfd sp!, {r0, r1, r2, r3, lr}; \ ++ cfi_adjust_cfa_offset (20); \ ++ cfi_rel_offset (lr, 16); \ ++ .save {lr}; \ + .pad #16 + # define UNDOCARGS_4 \ + ldmfd sp!, {r0, r1, r2, r3}; \ +@@ -149,43 +149,40 @@ + + /* r4 is only stmfd'ed for correct stack alignment. */ + # define DOCARGS_5 \ +- .save {r4}; \ +- stmfd sp!, {r0, r1, r2, r3, r4, r7, lr}; \ +- cfi_adjust_cfa_offset (28); \ +- cfi_rel_offset (r7, 20); \ +- cfi_rel_offset (lr, 24); \ +- .save {r7, lr}; \ ++ .save {r4, r7}; \ ++ stmfd sp!, {r0, r1, r2, r3, r4, lr}; \ ++ cfi_adjust_cfa_offset (24); \ ++ cfi_rel_offset (lr, 20); \ ++ .save {lr}; \ + .pad #20 + # define UNDOCARGS_5 \ + ldmfd sp!, {r0, r1, r2, r3}; \ + cfi_adjust_cfa_offset (-16); \ + .fnend; \ + .fnstart; \ +- .save {r4}; \ +- .save {r7, lr}; \ ++ .save {r4, r7}; \ ++ .save {lr}; \ + .pad #4 + # define RESTORE_LR_5 \ +- ldmfd sp!, {r4, r7, lr}; \ +- cfi_adjust_cfa_offset (-12); \ ++ ldmfd sp!, {r4, lr}; \ ++ cfi_adjust_cfa_offset (-8); \ + /* r4 will be marked as restored later. */ \ +- cfi_restore (r7); \ + cfi_restore (lr) + + # define DOCARGS_6 \ +- .save {r4, r5}; \ +- stmfd sp!, {r0, r1, r2, r3, r7, lr}; \ +- cfi_adjust_cfa_offset (24); \ +- cfi_rel_offset (r7, 16); \ +- cfi_rel_offset (lr, 20); \ +- .save {r7, lr}; \ ++ .save {r4, r5, r7}; \ ++ stmfd sp!, {r0, r1, r2, r3, lr}; \ ++ cfi_adjust_cfa_offset (20); \ ++ cfi_rel_offset (lr, 16); \ ++ .save {lr}; \ + .pad #16 + # define UNDOCARGS_6 \ + ldmfd sp!, {r0, r1, r2, r3}; \ + cfi_adjust_cfa_offset (-16); \ + .fnend; \ + .fnstart; \ +- .save {r4, r5}; \ +- .save {r7, lr} ++ .save {r4, r5, r7}; \ ++ .save {lr}; + # define RESTORE_LR_6 \ + RESTORE_LR_0 + +diff --git a/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h b/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h +index b7815ba..a80621e 100644 +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h +@@ -106,12 +106,95 @@ + #undef DO_CALL + #define DO_CALL(syscall_name, args) \ + DOARGS_##args; \ +- mov ip, r7; \ +- cfi_register (r7, ip); \ + ldr r7, =SYS_ify (syscall_name); \ + swi 0x0; \ +- mov r7, ip; \ +- cfi_restore (r7); \ + UNDOARGS_##args + ++#undef DOARGS_0 ++#define DOARGS_0 \ ++ .fnstart; \ ++ str r7, [sp, #-4]!; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (r7, 0); \ ++ .save { r7 } ++#undef DOARGS_1 ++#define DOARGS_1 DOARGS_0 ++#undef DOARGS_2 ++#define DOARGS_2 DOARGS_0 ++#undef DOARGS_3 ++#define DOARGS_3 DOARGS_0 ++#undef DOARGS_4 ++#define DOARGS_4 DOARGS_0 ++#undef DOARGS_5 ++#define DOARGS_5 \ ++ .fnstart; \ ++ stmfd sp!, {r4, r7}; \ ++ cfi_adjust_cfa_offset (8); \ ++ cfi_rel_offset (r4, 0); \ ++ cfi_rel_offset (r7, 4); \ ++ .save { r4, r7 }; \ ++ ldr r4, [sp, #8] ++#undef DOARGS_6 ++#define DOARGS_6 \ ++ .fnstart; \ ++ mov ip, sp; \ ++ stmfd sp!, {r4, r5, r7}; \ ++ cfi_adjust_cfa_offset (12); \ ++ cfi_rel_offset (r4, 0); \ ++ cfi_rel_offset (r5, 4); \ ++ cfi_rel_offset (r7, 8); \ ++ .save { r4, r5, r7 }; \ ++ ldmia ip, {r4, r5} ++#undef DOARGS_7 ++#define DOARGS_7 \ ++ .fnstart; \ ++ mov ip, sp; \ ++ stmfd sp!, {r4, r5, r6, r7}; \ ++ cfi_adjust_cfa_offset (16); \ ++ cfi_rel_offset (r4, 0); \ ++ cfi_rel_offset (r5, 4); \ ++ cfi_rel_offset (r6, 8); \ ++ cfi_rel_offset (r7, 12); \ ++ .save { r4, r5, r6, r7 }; \ ++ ldmia ip, {r4, r5, r6} ++ ++#undef UNDOARGS_0 ++#define UNDOARGS_0 \ ++ ldr r7, [sp], #4; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (r7); \ ++ .fnend ++#undef UNDOARGS_1 ++#define UNDOARGS_1 UNDOARGS_0 ++#undef UNDOARGS_2 ++#define UNDOARGS_2 UNDOARGS_0 ++#undef UNDOARGS_3 ++#define UNDOARGS_3 UNDOARGS_0 ++#undef UNDOARGS_4 ++#define UNDOARGS_4 UNDOARGS_0 ++#undef UNDOARGS_5 ++#define UNDOARGS_5 \ ++ ldmfd sp!, {r4, r7}; \ ++ cfi_adjust_cfa_offset (-8); \ ++ cfi_restore (r4); \ ++ cfi_restore (r7); \ ++ .fnend ++#undef UNDOARGS_6 ++#define UNDOARGS_6 \ ++ ldmfd sp!, {r4, r5, r7}; \ ++ cfi_adjust_cfa_offset (-12); \ ++ cfi_restore (r4); \ ++ cfi_restore (r5); \ ++ cfi_restore (r7); \ ++ .fnend ++#undef UNDOARGS_7 ++#define UNDOARGS_7 \ ++ ldmfd sp!, {r4, r5, r6, r7}; \ ++ cfi_adjust_cfa_offset (-16); \ ++ cfi_restore (r4); \ ++ cfi_restore (r5); \ ++ cfi_restore (r6); \ ++ cfi_restore (r7); \ ++ .fnend ++ + #endif /* _LINUX_ARM_EABI_SYSDEP_H */ +diff --git a/sysdeps/unix/sysv/linux/arm/vfork.S b/sysdeps/unix/sysv/linux/arm/vfork.S +index a020658..e63690e 100644 +--- a/ports/sysdeps/unix/sysv/linux/arm/vfork.S ++++ b/ports/sysdeps/unix/sysv/linux/arm/vfork.S +@@ -33,7 +33,28 @@ ENTRY (__vfork) + #ifdef SAVE_PID + SAVE_PID + #endif +- DO_CALL (vfork, 0) ++#ifdef __ARM_EABI__ ++ /* The DO_CALL macro saves r7 on the stack, to enable generation ++ of ARM unwind info. Since the stack is initially shared between ++ parent and child of vfork, that saved value could be corrupted. ++ To avoid this problem, we save r7 into ip as well, and restore ++ from there. */ ++ mov ip, r7 ++ cfi_register (r7, ip) ++ .fnstart ++ str r7, [sp, #-4]! ++ cfi_adjust_cfa_offset (4) ++ .save { r7 } ++ ldr r7, =SYS_ify (vfork) ++ swi 0x0 ++ .fnend ++ add sp, sp, #4 ++ cfi_adjust_cfa_offset (-4) ++ mov r7, ip ++ cfi_restore (r7); ++#else ++ swi SYS_ify(vfork) ++#endif + #ifdef RESTORE_PID + RESTORE_PID + #endif --- eglibc-2.13.orig/debian/patches/any/cvs-setlocale.diff +++ eglibc-2.13/debian/patches/any/cvs-setlocale.diff @@ -0,0 +1,18 @@ +2011-05-21 Ulrich Drepper + + [BZ #12788] + * locale/setlocale.c (new_composite_name): Fix test to check for + identical name of all categories. + +diff --git a/locale/setlocale.c b/locale/setlocale.c +index 46372fd..94e1c64 100644 +--- a/locale/setlocale.c ++++ b/locale/setlocale.c +@@ -155,7 +155,7 @@ new_composite_name (int category, const char *newnames[__LC_LAST]) + _nl_global_locale.__names[i]); + last_len = strlen (name); + cumlen += _nl_category_name_sizes[i] + 1 + last_len + 1; +- if (i > 0 && same && strcmp (name, newnames[0]) != 0) ++ if (same && name != newnames[0] && strcmp (name, newnames[0]) != 0) + same = 0; + } --- eglibc-2.13.orig/debian/patches/any/local-fhs-linux-paths.diff +++ eglibc-2.13/debian/patches/any/local-fhs-linux-paths.diff @@ -0,0 +1,21 @@ +# DP: Description: Correct linux paths for FHS +# DP: Author: Unknown +# DP: Upstream status: Debian-Specific +# DP: Status Details: GNU doesn't follow the FHS. +# DP: Date: Unknown + +--- + sysdeps/unix/sysv/linux/paths.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/unix/sysv/linux/paths.h ++++ b/sysdeps/unix/sysv/linux/paths.h +@@ -68,7 +68,7 @@ + /* Provide trailing slash, since mostly used for building pathnames. */ + #define _PATH_DEV "/dev/" + #define _PATH_TMP "/tmp/" +-#define _PATH_VARDB "/var/db/" ++#define _PATH_VARDB "/var/lib/misc/" + #define _PATH_VARRUN "/var/run/" + #define _PATH_VARTMP "/var/tmp/" + --- eglibc-2.13.orig/debian/patches/any/local-libgcc-compat-ports.diff +++ eglibc-2.13/debian/patches/any/local-libgcc-compat-ports.diff @@ -0,0 +1,442 @@ +# DP: Description: libgcc-compat symbols for mips, arm, m68k +# DP: Author: Guido Guenther, GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Date: 2002-10-13, updated 2006-08-27 + +--- + ports/sysdeps/alpha/Makefile | 8 ++ + ports/sysdeps/alpha/Versions | 2 + ports/sysdeps/alpha/libgcc-compat.c | 35 +++++++++ + ports/sysdeps/arm/Makefile | 7 + + ports/sysdeps/arm/Versions | 16 ++++ + ports/sysdeps/arm/libgcc-compat.c | 111 ++++++++++++++++++++++++++++++ + ports/sysdeps/m68k/Deps | 1 + ports/sysdeps/m68k/Makefile | 8 ++ + ports/sysdeps/m68k/Versions | 8 ++ + ports/sysdeps/m68k/libgcc-compat.c | 83 ++++++++++++++++++++++ + ports/sysdeps/mips/mips32/Makefile | 8 ++ + ports/sysdeps/mips/mips32/Versions | 8 ++ + ports/sysdeps/mips/mips32/libgcc-compat.c | 66 +++++++++++++++++ + 13 files changed, 361 insertions(+) + +--- /dev/null ++++ b/ports/sysdeps/mips/mips32/libgcc-compat.c +@@ -0,0 +1,66 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++ ++extern float floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/mips/mips32/Versions +@@ -0,0 +1,8 @@ ++libc { ++ GLIBC_2.0 { ++ # Functions from libgcc. ++ __cmpdi2; __ucmpdi2; ++ __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __fixdfdi; __floatdidf; __floatdisf; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/arm/Makefile +@@ -0,0 +1,7 @@ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +--- /dev/null ++++ b/ports/sysdeps/arm/Versions +@@ -0,0 +1,16 @@ ++libc { ++ GLIBC_2.0 { ++ # Functions from libgcc. ++ __ashldi3; __ashrdi3; ++ __cmpdi2; ++ __divsi3; ++ __fixdfdi; ++ __floatdidf; ++ __floatdisf; ++ __modsi3; ++ __muldi3; ++ __ucmpdi2; ++ __udivsi3; ++ __umodsi3; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/arm/libgcc-compat.c +@@ -0,0 +1,111 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by GOTO Masanori ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int64_t __ashldi3 (int64_t, int32_t); ++int64_t __ashldi3_internal (int64_t u, int32_t b) ++{ ++ return __ashldi3 (u, b); ++} ++symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0); ++ ++extern int64_t __ashrdi3 (int64_t, int32_t); ++int32_t __ashrdi3_internal (int64_t u, int32_t b) ++{ ++ return __ashrdi3 (u, b); ++} ++symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0); ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++extern int32_t __divsi3 (int32_t, int32_t); ++int32_t __divsi3_internal (int32_t u, int32_t v) ++{ ++ return __divsi3 (u, v); ++} ++symbol_version (__divsi3_internal, __divsi3, GLIBC_2.0); ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++extern float __floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++extern int32_t __modsi3 (int32_t, int32_t); ++int32_t __modsi3_internal (int32_t u, int32_t v) ++{ ++ return __modsi3 (u, v); ++} ++symbol_version (__modsi3_internal, __modsi3, GLIBC_2.0); ++ ++extern int64_t __muldi3 (int64_t, int64_t); ++int64_t __muldi3_internal (int64_t u, int64_t v) ++{ ++ return __muldi3 (u, v); ++} ++symbol_version (__muldi3_internal, __muldi3, GLIBC_2.0); ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++extern int32_t __udivsi3 (int32_t, int32_t); ++int32_t __udivsi3_internal (int32_t u, int32_t v) ++{ ++ return __udivsi3 (u, v); ++} ++symbol_version (__udivsi3_internal, __udivsi3, GLIBC_2.0); ++ ++extern int32_t __umodsi3 (int32_t, int32_t); ++int32_t __umodsi3_internal (int32_t u, int32_t v) ++{ ++ return __umodsi3 (u, v); ++} ++symbol_version (__umodsi3_internal, __umodsi3, GLIBC_2.0); ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/m68k/Deps +@@ -0,0 +1 @@ ++libgcc-compat.c +--- a/ports/sysdeps/m68k/Makefile ++++ b/ports/sysdeps/m68k/Makefile +@@ -37,3 +37,11 @@ + # Build objects in libc_nonshared.a with -fPIC (instead of -fpic) to avoid + # possible linkage problems. + CFLAGS-.oS += -fPIC ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +--- a/ports/sysdeps/m68k/Versions ++++ b/ports/sysdeps/m68k/Versions +@@ -2,6 +2,14 @@ + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __ashldi3; ++ __ashrdi3; ++ __fixdfdi; ++ __fixsfdi; ++ __fixunsdfdi; ++ __fixunssfdi; ++ __floatdidf; ++ __floatdisf; + } + } + libm { +--- /dev/null ++++ b/ports/sysdeps/m68k/libgcc-compat.c +@@ -0,0 +1,83 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by GOTO Masanori ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int64_t __ashldi3 (int64_t, int32_t); ++int64_t __ashldi3_internal (int64_t u, int32_t b) ++{ ++ return __ashldi3 (u, b); ++} ++symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0); ++ ++extern int64_t __ashrdi3 (int64_t, int32_t); ++int64_t __ashrdi3_internal (int64_t u, int32_t b) ++{ ++ return __ashrdi3 (u, b); ++} ++symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0); ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++extern float __floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++#endif +--- a/ports/sysdeps/mips/mips32/Makefile ++++ b/ports/sysdeps/mips/mips32/Makefile +@@ -1,3 +1,11 @@ + ifeq ($(filter -mabi=32,$(CC)),) + CC += -mabi=32 + endif ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +--- /dev/null ++++ b/ports/sysdeps/alpha/libgcc-compat.c +@@ -0,0 +1,35 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++typedef int int128_t __attribute__((__mode__(TI))); ++ ++extern int128_t __multi3 (int128_t, int128_t); ++int128_t INTUSE (__multi3) (int128_t x, int128_t y) ++{ ++ return __multi3 (x, y); ++} ++symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.0); ++ ++#endif +--- a/ports/sysdeps/alpha/Versions ++++ b/ports/sysdeps/alpha/Versions +@@ -3,6 +3,8 @@ + # functions with special/multiple interfaces + __divqu; __remqu; __divqs; __remqs; __divlu; __remlu; __divls; + __remls; __divl; __reml; __divq; __remq; __divqu; __remqu; ++ # libgcc-compat ++ __multi3; + } + } + libm { +--- a/ports/sysdeps/alpha/Makefile ++++ b/ports/sysdeps/alpha/Makefile +@@ -47,3 +47,11 @@ + # libc.so requires about 16k for the small data area, which is well + # below the 64k maximum. + pic-ccflag = -fpic ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif --- eglibc-2.13.orig/debian/patches/any/local-bindresvport_blacklist.diff +++ eglibc-2.13/debian/patches/any/local-bindresvport_blacklist.diff @@ -0,0 +1,156 @@ +Patch from the OpenSUSE glibc + +--- + sunrpc/bindrsvprt.c | 107 ++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 99 insertions(+), 8 deletions(-) + +--- a/sunrpc/bindrsvprt.c ++++ b/sunrpc/bindrsvprt.c +@@ -29,28 +29,108 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include ++#include + #include ++#include + #include + #include + #include + #include + #include + ++#define STARTPORT 600 ++#define LOWPORT 512 ++#define ENDPORT (IPPORT_RESERVED - 1) ++#define NPORTS (ENDPORT - STARTPORT + 1) ++ ++/* ++ * Read the file /etc/rpc.blacklisted, so that we don't bind ++ * to this ports. ++ */ ++ ++static int blacklist_read; ++static int *list; ++static int list_size = 0; ++ ++static void ++load_blacklist (void) ++{ ++ FILE *fp; ++ char *buf = NULL; ++ size_t buflen = 0; ++ int size = 0, ptr = 0; ++ ++ blacklist_read = 1; ++ ++ fp = fopen ("/etc/bindresvport.blacklist", "r"); ++ if (NULL == fp) ++ return; ++ ++ while (!feof_unlocked (fp)) ++ { ++ unsigned long port; ++ char *tmp, *cp; ++ ssize_t n = __getline (&buf, &buflen, fp); ++ if (n < 1) ++ break; ++ ++ cp = buf; ++ tmp = strchr (cp, '#'); /* remove comments */ ++ if (tmp) ++ *tmp = '\0'; ++ while (isspace ((int)*cp)) /* remove spaces and tabs */ ++ ++cp; ++ if (*cp == '\0') /* ignore empty lines */ ++ continue; ++ if (cp[strlen (cp) - 1] == '\n') ++ cp[strlen (cp) - 1] = '\0'; ++ ++ port = strtoul (cp, &tmp, 0); ++ while (isspace(*tmp)) ++ ++tmp; ++ if (*tmp != '\0' || (port == ULONG_MAX && errno == ERANGE)) ++ continue; ++ ++ /* Don't bother with out-of-range ports */ ++ if (port < LOWPORT || port > ENDPORT) ++ continue; ++ ++ if (ptr >= size) ++ { ++ size += 10; ++ list = realloc (list, size * sizeof (int)); ++ if (list == NULL) ++ { ++ free (buf); ++ return; ++ } ++ } ++ ++ list[ptr++] = port; ++ } ++ ++ fclose (fp); ++ ++ if (buf) ++ free (buf); ++ ++ list_size = ptr; ++} ++ + /* + * Bind a socket to a privileged IP port + */ + int + bindresvport (int sd, struct sockaddr_in *sin) + { ++ static short startport = STARTPORT; + static short port; + struct sockaddr_in myaddr; + int i; + +-#define STARTPORT 600 +-#define LOWPORT 512 +-#define ENDPORT (IPPORT_RESERVED - 1) +-#define NPORTS (ENDPORT - STARTPORT + 1) +- static short startport = STARTPORT; ++ if (!blacklist_read) ++ load_blacklist (); + + if (sin == (struct sockaddr_in *) 0) + { +@@ -69,6 +149,7 @@ + port = (__getpid () % NPORTS) + STARTPORT; + } + ++ __set_errno (EADDRINUSE); + /* Initialize to make gcc happy. */ + int res = -1; + +@@ -77,12 +158,22 @@ + again: + for (i = 0; i < nports; ++i) + { +- sin->sin_port = htons (port++); +- if (port > endport) +- port = startport; ++ int j; ++ ++ sin->sin_port = htons (port); ++ ++ /* Check, if this port is not blacklisted. */ ++ for (j = 0; j < list_size; j++) ++ if (port == list[j]) ++ goto try_next_port; ++ + res = __bind (sd, sin, sizeof (struct sockaddr_in)); + if (res >= 0 || errno != EADDRINUSE) + break; ++ ++try_next_port: ++ if (++port > endport) ++ port = startport; + } + + if (i == nports && startport != LOWPORT) --- eglibc-2.13.orig/debian/patches/any/local-nss-overflow.diff +++ eglibc-2.13/debian/patches/any/local-nss-overflow.diff @@ -0,0 +1,51 @@ +2009-01-12 Arthur Loiret + + nss/nss_files/files-parse.c: Include . + (INT_FIELD): Convert field to uintmax_t and check for 32-bit overflow. + (INT_FIELD_MAYBE_NULL): Likewise. + +--- + nss/nss_files/files-parse.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +--- a/nss/nss_files/files-parse.c ++++ b/nss/nss_files/files-parse.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + /* These symbols are defined by the including source file: + +@@ -160,7 +161,12 @@ + # define INT_FIELD(variable, terminator_p, swallow, base, convert) \ + { \ + char *endp; \ +- variable = convert (strtou32 (line, &endp, base)); \ ++ unsigned long long tmp; \ ++ /* Prevent from 32-bit overflow. */ \ ++ tmp = __strtoull_internal (line, &endp, base, 0); \ ++ if (tmp > UINT_MAX) \ ++ return 0; \ ++ variable = convert ((unsigned long int)tmp); \ + if (endp == line) \ + return 0; \ + else if (terminator_p (*endp)) \ +@@ -175,10 +181,15 @@ + # define INT_FIELD_MAYBE_NULL(variable, terminator_p, swallow, base, convert, default) \ + { \ + char *endp; \ ++ unsigned long long tmp; \ + if (*line == '\0') \ + /* We expect some more input, so don't allow the string to end here. */ \ + return 0; \ +- variable = convert (strtou32 (line, &endp, base)); \ ++ /* Prevent from 32-bit overflow. */ \ ++ tmp = __strtoull_internal (line, &endp, base, 0); \ ++ if (tmp > UINT_MAX) \ ++ return 0; \ ++ variable = convert ((unsigned long int)tmp); \ + if (endp == line) \ + variable = default; \ + if (terminator_p (*endp)) \ --- eglibc-2.13.orig/debian/patches/any/local-libgcc-compat-main.diff +++ eglibc-2.13/debian/patches/any/local-libgcc-compat-main.diff @@ -0,0 +1,889 @@ +# DP: Description: libgcc-compat symbols for i386, sparc, +# alpha, ia64 (derived from RedHat's), s390 +# DP: Author: Guido Guenther, GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Date: 2002-10-13, updated 2006-05-28 + +--- + sysdeps/i386/Makefile | 5 + sysdeps/i386/Versions | 3 + sysdeps/i386/libgcc-compat.c | 75 +++++++ + sysdeps/ia64/Makefile | 4 + sysdeps/ia64/Versions | 4 + sysdeps/ia64/ia64libgcc.S | 350 ---------------------------------- + sysdeps/ia64/libgcc-compat.c | 112 ++++++++++ + sysdeps/s390/s390-32/Makefile | 8 + sysdeps/s390/s390-32/Versions | 8 + sysdeps/s390/s390-32/libgcc-compat.c | 83 ++++++++ + sysdeps/sparc/sparc32/Makefile | 8 + sysdeps/sparc/sparc32/Versions | 4 + sysdeps/sparc/sparc32/libgcc-compat.c | 121 +++++++++++ + 13 files changed, 433 insertions(+), 352 deletions(-) + +--- /dev/null ++++ b/sysdeps/i386/libgcc-compat.c +@@ -0,0 +1,75 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++ ++symbol_version (__fixunsfdi_internal, __fixunsfdi, GLIBC_2.0); ++ ++typedef float XFtype __attribute__ ((mode (XF))); ++ ++extern int64_t __fixunsxfdi (XFtype); ++int64_t __fixunsxfdi_internal (XFtype d) ++{ ++ return __fixunsxfdi (d); ++} ++ ++symbol_version (__fixunsxfdi_internal, __fixunsxfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++#endif +--- a/sysdeps/i386/Makefile ++++ b/sysdeps/i386/Makefile +@@ -9,6 +9,11 @@ + # On i686 we must avoid generating the trampoline functions generated + # to get the GOT pointer. + CFLAGS-initfini.s += -march=i386 -mtune=i386 -fno-asynchronous-unwind-tables -fno-unwind-tables ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif + endif + + ifeq ($(subdir),nptl) +--- a/sysdeps/i386/Versions ++++ b/sysdeps/i386/Versions +@@ -2,6 +2,9 @@ + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __cmpdi2; __ucmpdi2; ++ __fixunsdfdi; __fixunssfdi; __fixunsxfdi; ++ __floatdidf; + } + GLIBC_2.1 { + # global variable +--- /dev/null ++++ b/sysdeps/sparc/sparc32/libgcc-compat.c +@@ -0,0 +1,121 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Guido Guenther ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int64_t __ashldi3 (int64_t, int32_t); ++int64_t __ashldi3_internal (int64_t u, int32_t b) ++{ ++ return __ashldi3 (u, b); ++} ++symbol_version (__ashldi3_internal, __ashldi3, GLIBC_2.0); ++ ++ ++extern int64_t __ashrdi3 (int64_t, int32_t); ++int64_t __ashrdi3_internal (int64_t u, int32_t b) ++{ ++ return __ashrdi3 (u, b); ++} ++symbol_version (__ashrdi3_internal, __ashrdi3, GLIBC_2.0); ++ ++ ++extern int64_t __lshrdi3 (int64_t, int32_t); ++int64_t __lshrdi3_internal (int64_t u, int32_t b) ++{ ++ return __lshrdi3 (u, b); ++} ++symbol_version (__lshrdi3_internal, __lshrdi3, GLIBC_2.0); ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++ ++symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0); ++ ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++ ++extern float floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++ ++extern int64_t __muldi3 (int64_t, int64_t); ++int64_t __muldi3_internal (int64_t u, int64_t v) ++{ ++ return __muldi3 (u, v); ++} ++symbol_version (__muldi3_internal, __muldi3, GLIBC_2.0); ++ ++#endif +--- a/sysdeps/sparc/sparc32/Makefile ++++ b/sysdeps/sparc/sparc32/Makefile +@@ -24,6 +24,14 @@ + CFLAGS-initfini.s += -mcpu=v7 + endif + ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif ++ + # We distribute these files, even though they are generated, + # so as to avoid the need for a functioning m4 to build the library. + divrem := sdiv udiv rem urem +--- a/sysdeps/sparc/sparc32/Versions ++++ b/sysdeps/sparc/sparc32/Versions +@@ -1,5 +1,9 @@ + libc { + GLIBC_2.0 { + .div; .mul; .rem; .udiv; .umul; .urem; ++ __divdi3; __moddi3; __udivdi3; __umoddi3; __muldi3; ++ __ashldi3; __ashrdi3; __lshrdi3; __cmpdi2; __ucmpdi2; ++ __fixdfdi; __fixsfdi; __fixunsdfdi; __fixunssfdi; ++ __floatdidf; __floatdisf; + } + } +--- a/sysdeps/ia64/Makefile ++++ b/sysdeps/ia64/Makefile +@@ -12,8 +12,8 @@ + + ifeq (yes,$(build-shared)) + # Compatibility +-sysdep_routines += ia64libgcc +-shared-only-routines += ia64libgcc ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat + endif + endif + +--- a/sysdeps/ia64/Versions ++++ b/sysdeps/ia64/Versions +@@ -10,6 +10,10 @@ + # Functions from libgcc. + __divtf3; __divdf3; __divsf3; __divdi3; __moddi3; __udivdi3; __umoddi3; + __multi3; ++ __divsi3; ++ __modsi3; ++ __udivsi3; ++ __umodsi3; + } + } + libm { +--- a/sysdeps/ia64/ia64libgcc.S ++++ /dev/null +@@ -1,350 +0,0 @@ +-/* From the Intel IA-64 Optimization Guide, choose the minimum latency +- alternative. */ +- +-#include +-#undef ret +- +-#include +- +-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) +- +-/* __divtf3 +- Compute a 80-bit IEEE double-extended quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divtf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fnma.s1 f11 = farg1, f10, f1 +-(p6) fma.s1 f12 = farg0, f10, f0 +- ;; +-(p6) fma.s1 f13 = f11, f11, f0 +-(p6) fma.s1 f14 = f11, f11, f11 +- ;; +-(p6) fma.s1 f11 = f13, f13, f11 +-(p6) fma.s1 f13 = f14, f10, f10 +- ;; +-(p6) fma.s1 f10 = f13, f11, f10 +-(p6) fnma.s1 f11 = farg1, f12, farg0 +- ;; +-(p6) fma.s1 f11 = f11, f10, f12 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fnma.s1 f12 = farg1, f11, farg0 +- ;; +-(p6) fma.s0 fret0 = f12, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +-END(___divtf3) +- .symver ___divtf3, __divtf3@GLIBC_2.2 +- +-/* __divdf3 +- Compute a 64-bit IEEE double quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divdf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f11 = farg0, f10 +-(p6) fnma.s1 f12 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f11 = f12, f11, f11 +-(p6) fmpy.s1 f13 = f12, f12 +- ;; +-(p6) fma.s1 f10 = f12, f10, f10 +-(p6) fma.s1 f11 = f13, f11, f11 +- ;; +-(p6) fmpy.s1 f12 = f13, f13 +-(p6) fma.s1 f10 = f13, f10, f10 +- ;; +-(p6) fma.d.s1 f11 = f12, f11, f11 +-(p6) fma.s1 f10 = f12, f10, f10 +- ;; +-(p6) fnma.d.s1 f8 = farg1, f11, farg0 +- ;; +-(p6) fma.d fret0 = f8, f10, f11 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdf3) +- .symver ___divdf3, __divdf3@GLIBC_2.2 +- +-/* __divsf3 +- Compute a 32-bit IEEE float quotient. +- farg0 holds the dividend. farg1 holds the divisor. */ +- +-ENTRY(___divsf3) +- cmp.eq p7, p0 = r0, r0 +- frcpa.s0 f10, p6 = farg0, farg1 +- ;; +-(p6) cmp.ne p7, p0 = r0, r0 +- .pred.rel.mutex p6, p7 +-(p6) fmpy.s1 f8 = farg0, f10 +-(p6) fnma.s1 f9 = farg1, f10, f1 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.s1 f8 = f9, f8, f8 +-(p6) fmpy.s1 f9 = f9, f9 +- ;; +-(p6) fma.d.s1 f10 = f9, f8, f8 +- ;; +-(p6) fnorm.s.s0 fret0 = f10 +-(p7) mov fret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divsf3) +- .symver ___divsf3, __divsf3@GLIBC_2.2 +- +-/* __divdi3 +- Compute a 64-bit integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___divdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f8 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an integer. */ +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___divdi3) +- .symver ___divdi3, __divdi3@GLIBC_2.2 +- +-/* __moddi3 +- Compute a 64-bit integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___moddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, so that they won't be treated as +- unsigned. */ +- fcvt.xf f8 = f14 +- fcvt.xf f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- fcvt.fx.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___moddi3) +- .symver ___moddi3, __moddi3@GLIBC_2.2 +- +-/* __udivdi3 +- Compute a 64-bit unsigned integer quotient. +- in0 holds the dividend. in1 holds the divisor. */ +- +-ENTRY(___udivdi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f8 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software-assist faults. */ +- fcvt.xuf.s1 f8 = f8 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fnma.s1 f11 = f9, f10, f1 +-(p6) fmpy.s1 f12 = f8, f10 +- ;; +-(p6) fmpy.s1 f13 = f11, f11 +-(p6) fma.s1 f12 = f11, f12, f12 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___udivdi3) +- .symver ___udivdi3, __udivdi3@GLIBC_2.2 +- +-/* __umoddi3 +- Compute a 64-bit unsigned integer modulus. +- in0 holds the dividend (a). in1 holds the divisor (b). */ +- +-ENTRY(___umoddi3) +- .regstk 2,0,0,0 +- /* Transfer inputs to FP registers. */ +- setf.sig f14 = in0 +- setf.sig f9 = in1 +- ;; +- /* Convert the inputs to FP, to avoid FP software assist faults. */ +- fcvt.xuf.s1 f8 = f14 +- fcvt.xuf.s1 f9 = f9 +- ;; +- /* Compute the reciprocal approximation. */ +- frcpa.s1 f10, p6 = f8, f9 +- ;; +- /* 3 Newton-Raphson iterations. */ +-(p6) fmpy.s1 f12 = f8, f10 +-(p6) fnma.s1 f11 = f9, f10, f1 +- ;; +-(p6) fma.s1 f12 = f11, f12, f12 +-(p6) fmpy.s1 f13 = f11, f11 +- ;; +-(p6) fma.s1 f10 = f11, f10, f10 +-(p6) fma.s1 f11 = f13, f12, f12 +- ;; +- sub in1 = r0, in1 +-(p6) fma.s1 f10 = f13, f10, f10 +-(p6) fnma.s1 f12 = f9, f11, f8 +- ;; +- setf.sig f9 = in1 +-(p6) fma.s1 f10 = f12, f10, f11 +- ;; +- /* Round quotient to an unsigned integer. */ +- fcvt.fxu.trunc.s1 f10 = f10 +- ;; +- /* r = q * (-b) + a */ +- xma.l f10 = f10, f9, f14 +- ;; +- /* Transfer result to GP registers. */ +- getf.sig ret0 = f10 +- br.ret.sptk rp +- ;; +-END(___umoddi3) +- .symver ___umoddi3, __umoddi3@GLIBC_2.2 +- +-/* __multi3 +- Compute a 128-bit multiply of 128-bit multiplicands. +- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ +- +-ENTRY(___multi3) +- .regstk 4,0,0,0 +- setf.sig f6 = in1 +- movl r19 = 0xffffffff +- setf.sig f7 = in2 +- ;; +- and r14 = r19, in0 +- ;; +- setf.sig f10 = r14 +- and r14 = r19, in2 +- xmpy.l f9 = f6, f7 +- ;; +- setf.sig f6 = r14 +- shr.u r14 = in0, 32 +- ;; +- setf.sig f7 = r14 +- shr.u r14 = in2, 32 +- ;; +- setf.sig f8 = r14 +- xmpy.l f11 = f10, f6 +- xmpy.l f6 = f7, f6 +- ;; +- getf.sig r16 = f11 +- xmpy.l f7 = f7, f8 +- ;; +- shr.u r14 = r16, 32 +- and r16 = r19, r16 +- getf.sig r17 = f6 +- setf.sig f6 = in0 +- ;; +- setf.sig f11 = r14 +- getf.sig r21 = f7 +- setf.sig f7 = in3 +- ;; +- xma.l f11 = f10, f8, f11 +- xma.l f6 = f6, f7, f9 +- ;; +- getf.sig r18 = f11 +- ;; +- add r18 = r18, r17 +- ;; +- and r15 = r19, r18 +- cmp.ltu p7, p6 = r18, r17 +- ;; +- getf.sig r22 = f6 +-(p7) adds r14 = 1, r19 +- ;; +-(p7) add r21 = r21, r14 +- shr.u r14 = r18, 32 +- shl r15 = r15, 32 +- ;; +- add r20 = r21, r14 +- ;; +- add ret0 = r15, r16 +- add ret1 = r22, r20 +- br.ret.sptk rp +- ;; +-END(___multi3) +- .symver ___multi3, __multi3@GLIBC_2.2 +- +-#endif +--- /dev/null ++++ b/sysdeps/ia64/libgcc-compat.c +@@ -0,0 +1,112 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) ++ ++typedef int int128_t __attribute__((__mode__(TI))); ++ ++extern long double __divtf3 (long double, long double) attribute_hidden; ++long double INTUSE (__divtf3) (long double x, long double y) ++{ ++ return __divtf3 (x, y); ++} ++symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); ++ ++extern double __divdf3 (double, double) attribute_hidden; ++double INTUSE (__divdf3) (double x, double y) ++{ ++ return __divdf3 (x, y); ++} ++symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); ++ ++extern float __divsf3 (float, float) attribute_hidden; ++float INTUSE (__divsf3) (float x, float y) ++{ ++ return __divsf3 (x, y); ++} ++symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); ++ ++extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__divdi3) (int64_t x, int64_t y) ++{ ++ return __divdi3 (x, y); ++} ++symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); ++ ++extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__moddi3) (int64_t x, int64_t y) ++{ ++ return __moddi3 (x, y); ++} ++symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); ++ ++extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) ++{ ++ return __udivdi3 (x, y); ++} ++symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); ++ ++extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) ++{ ++ return __umoddi3 (x, y); ++} ++symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); ++ ++extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; ++int128_t INTUSE (__multi3) (int128_t x, int128_t y) ++{ ++ return __multi3 (x, y); ++} ++symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); ++ ++extern int64_t __divsi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__divsi3) (int64_t x, int64_t y) ++{ ++ return __divsi3 (x, y); ++} ++symbol_version (INTUSE (__divsi3), __divsi3, GLIBC_2.2); ++ ++extern int64_t __modsi3 (int64_t, int64_t) attribute_hidden; ++int64_t INTUSE (__modsi3) (int64_t x, int64_t y) ++{ ++ return __modsi3 (x, y); ++} ++symbol_version (INTUSE (__modsi3), __modsi3, GLIBC_2.2); ++ ++extern uint64_t __udivsi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__udivsi3) (uint64_t x, uint64_t y) ++{ ++ return __udivsi3 (x, y); ++} ++symbol_version (INTUSE (__udivsi3), __udivsi3, GLIBC_2.2); ++ ++extern uint64_t __umodsi3 (uint64_t, uint64_t) attribute_hidden; ++uint64_t INTUSE (__umodsi3) (uint64_t x, uint64_t y) ++{ ++ return __umodsi3 (x, y); ++} ++symbol_version (INTUSE (__umodsi3), __umodsi3, GLIBC_2.2); ++ ++#endif +--- a/sysdeps/s390/s390-32/Makefile ++++ b/sysdeps/s390/s390-32/Makefile +@@ -9,3 +9,11 @@ + CFLAGS-dl-load.c += -Wno-unused + CFLAGS-dl-reloc.c += -Wno-unused + endif ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +--- a/sysdeps/s390/s390-32/Versions ++++ b/sysdeps/s390/s390-32/Versions +@@ -2,5 +2,13 @@ + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __cmpdi2; ++ __fixdfdi; ++ __fixsfdi; ++ __fixunsdfdi; ++ __fixunssfdi; ++ __floatdidf; ++ __floatdisf; ++ __ucmpdi2; + } + } +--- /dev/null ++++ b/sysdeps/s390/s390-32/libgcc-compat.c +@@ -0,0 +1,83 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by GOTO Masanori ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++extern int64_t __fixunssfdi (float); ++int64_t __fixunssfdi_internal (float d) ++{ ++ return __fixunssfdi (d); ++} ++symbol_version (__fixunssfdi_internal, __fixunssfdi, GLIBC_2.0); ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++extern float __floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++#endif --- eglibc-2.13.orig/debian/patches/any/local-nss-upgrade.diff +++ eglibc-2.13/debian/patches/any/local-nss-upgrade.diff @@ -0,0 +1,33 @@ +# DP: This patch makes future upgrades easier. It resolves problems with +# DP: running daemons having NSS modules upgraded out from under them. + +--- + nss/nsswitch.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +--- a/nss/nsswitch.c ++++ b/nss/nsswitch.c +@@ -409,9 +409,20 @@ + ni->library->lib_handle = __libc_dlopen (shlib_name); + if (ni->library->lib_handle == NULL) + { +- /* Failed to load the library. */ +- ni->library->lib_handle = (void *) -1l; +- __set_errno (saved_errno); ++ /* Failed to load the library. Try a fallback. */ ++ int n = __snprintf(shlib_name, shlen, "libnss_%s.so.%d.%d", ++ ni->library->name, __GLIBC__, __GLIBC_MINOR__); ++ if (n >= shlen) ++ ni->library->lib_handle = NULL; ++ else ++ ni->library->lib_handle = __libc_dlopen (shlib_name); ++ ++ if (ni->library->lib_handle == NULL) ++ { ++ /* Ok, really fail now. */ ++ ni->library->lib_handle = (void *) -1l; ++ __set_errno (saved_errno); ++ } + } + } + --- eglibc-2.13.orig/debian/patches/any/local-asserth-decls.diff +++ eglibc-2.13/debian/patches/any/local-asserth-decls.diff @@ -0,0 +1,36 @@ +# DP: Description: /usr/include/assert.h +# DP: One must be allowed to include multiple times with different +# DP: values for NDEBUG, so the file is not protected against multiple +# DP: inclusions. Unfortunately this means that the declarations for +# DP: __assert_fail() and the like may occur multiple times in a compilation +# DP: unit, causing gcc to issue a batch of warnings. +# DP: I believe this can be fixed by protecting the declarations (but only +# DP: those declarations) against repetition. +# DP: Author: Jeroen T. Vermeulen +# DP: Upstream status: Not submitted +# DP: Status Details: Plan to submit +# DP: Date: 2003-01-01 + +--- + assert/assert.h | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/assert/assert.h ++++ b/assert/assert.h +@@ -63,6 +63,8 @@ + + #else /* Not NDEBUG. */ + ++#ifndef _ASSERT_H_DECLS ++#define _ASSERT_H_DECLS + __BEGIN_DECLS + + /* This prints an "Assertion failed" message and aborts. */ +@@ -84,6 +86,7 @@ + + + __END_DECLS ++#endif /* Not _ASSERT_H_DECLS */ + + # define assert(expr) \ + ((expr) \ --- eglibc-2.13.orig/debian/patches/any/local-tst-mktime2.diff +++ eglibc-2.13/debian/patches/any/local-tst-mktime2.diff @@ -0,0 +1,14 @@ +--- + time/tst-mktime2.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/time/tst-mktime2.c ++++ b/time/tst-mktime2.c +@@ -2,6 +2,7 @@ + #include + #include + #include ++#include + + static time_t time_t_max; + static time_t time_t_min; --- eglibc-2.13.orig/debian/patches/any/cvs-resolv-tld.diff +++ eglibc-2.13/debian/patches/any/cvs-resolv-tld.diff @@ -0,0 +1,132 @@ +2011-05-07 Ulrich Drepper + + [BZ #12734] + * resolv/resolv.h: Define RES_NOTLDQUERY. + * resolv/res_init.c (res_setoptions): Recognize no_tld_query and + no-tld-query and set RES_NOTLDQUERY. + * resolv/res_debug.c (p_option): Handle RES_NOTLDQUERY. + * resolv/res_query.c (__libc_res_nsearch): Backport changes from + modern BIND to search name as TLD unless forbidden. + +diff --git a/resolv/res_debug.c b/resolv/res_debug.c +index f7996a7..3daa44e 100644 +--- a/resolv/res_debug.c ++++ b/resolv/res_debug.c +@@ -189,7 +189,7 @@ do_section(const res_state statp, + buf = malloc(buflen += 1024); + if (buf == NULL) { + fprintf(file, +- ";; memory allocation failure\n"); ++ ";; memory allocation failure\n"); + return; + } + continue; +@@ -356,7 +356,7 @@ const struct res_sym __p_class_syms[] = { + {C_HS, "HESIOD"}, + {C_ANY, "ANY"}, + {C_NONE, "NONE"}, +- {C_IN, (char *)0} ++ {C_IN, (char *)0} + }; + libresolv_hidden_data_def (__p_class_syms) + +@@ -588,6 +588,7 @@ p_option(u_long option) { + case RES_USEBSTRING: return "ip6-bytstring"; + case RES_USE_EDNS0: return "edns0"; + case RES_USE_DNSSEC: return "dnssec"; ++ case RES_NOTLDQUERY: return "no-tld-query"; + /* XXX nonreentrant */ + default: sprintf(nbuf, "?0x%lx?", (u_long)option); + return (nbuf); +diff --git a/resolv/res_init.c b/resolv/res_init.c +index 74715f3..7588432 100644 +--- a/resolv/res_init.c ++++ b/resolv/res_init.c +@@ -545,6 +545,11 @@ res_setoptions(res_state statp, const char *options, const char *source) { + } else if (!strncmp(cp, "single-request", + sizeof("single-request") - 1)) { + statp->options |= RES_SNGLKUP; ++ } else if (!strncmp(cp, "no_tld_query", ++ sizeof("no_tld_query") - 1) || ++ !strncmp(cp, "no-tld-query", ++ sizeof("no-tld-query") - 1)) { ++ statp->options |= RES_NOTLDQUERY; + } else { + /* XXX - print a warning here? */ + } +diff --git a/resolv/res_query.c b/resolv/res_query.c +index 5ff352e..26daf0d 100644 +--- a/resolv/res_query.c ++++ b/resolv/res_query.c +@@ -123,7 +123,7 @@ __libc_res_nquery(res_state statp, + { + HEADER *hp = (HEADER *) answer; + int n, use_malloc = 0; +- u_int oflags = statp->_flags; ++ u_int oflags = statp->_flags; + + size_t bufsize = (type == T_UNSPEC ? 2 : 1) * QUERYSIZE; + u_char *buf = alloca (bufsize); +@@ -210,7 +210,7 @@ __libc_res_nquery(res_state statp, + if (statp->options & RES_DEBUG) + printf(";; res_nquery: retry without EDNS0\n"); + #endif +- goto again; ++ goto again; + } + #ifdef DEBUG + if (statp->options & RES_DEBUG) +@@ -344,6 +344,7 @@ __libc_res_nsearch(res_state statp, + int trailing_dot, ret, saved_herrno; + int got_nodata = 0, got_servfail = 0, root_on_list = 0; + int tried_as_is = 0; ++ int searched = 0; + + __set_errno (0); + RES_SET_H_ERRNO(statp, HOST_NOT_FOUND); /* True if we never query. */ +@@ -406,6 +407,7 @@ __libc_res_nsearch(res_state statp, + for (domain = (const char * const *)statp->dnsrch; + *domain && !done; + domain++) { ++ searched = 1; + + if (domain[0][0] == '\0' || + (domain[0][0] == '.' && domain[0][1] == '\0')) +@@ -477,11 +479,11 @@ __libc_res_nsearch(res_state statp, + } + + /* +- * If the name has any dots at all, and no earlier 'as-is' query +- * for the name, and "." is not on the search list, then try an as-is +- * query now. ++ * f the query has not already been tried as is then try it ++ * unless RES_NOTLDQUERY is set and there were no dots. + */ +- if (dots && !(tried_as_is || root_on_list)) { ++ if ((dots || !searched || (statp->options & RES_NOTLDQUERY) == 0) ++ && !(tried_as_is || root_on_list)) { + ret = __libc_res_nquerydomain(statp, name, NULL, class, type, + answer, anslen, answerp, + answerp2, nanswerp2, resplen2); +diff --git a/resolv/resolv.h b/resolv/resolv.h +index e49c29d..ed15a70 100644 +--- a/resolv/resolv.h ++++ b/resolv/resolv.h +@@ -102,7 +102,7 @@ typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *__ns, + # define RES_MAXTIME 65535 /* Infinity, in milliseconds. */ + + struct __res_state { +- int retrans; /* retransmition time interval */ ++ int retrans; /* retransmition time interval */ + int retry; /* number of times to retransmit */ + u_long options; /* option flags - see below. */ + int nscount; /* number of name servers */ +@@ -219,6 +219,8 @@ struct res_sym { + #define RES_SNGLKUPREOP 0x00400000 /* -"-, but open new socket for each + request */ + #define RES_USE_DNSSEC 0x00800000 /* use DNSSEC using OK bit in OPT */ ++#define RES_NOTLDQUERY 0x01000000 /* Do not look up unqualified name ++ as a TLD. */ + + #define RES_DEFAULT (RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT) + --- eglibc-2.13.orig/debian/patches/any/cvs-dlopen-tls.diff +++ eglibc-2.13/debian/patches/any/cvs-dlopen-tls.diff @@ -0,0 +1,249 @@ +2011-05-14 Ulrich Drepper + + [BZ #12453] + * elf/dl-open.c (dl_open_worker): Delay calls to _dl_update_slotinfo + until all modules are registered in the DTV. + * elf/Makefile: Add rules to build and run tst-tls19. + * elf/tst-tls19.c: New file. + * elf/tst-tls19mod1.c: New file. + * elf/tst-tls19mod2.c: New file. + * elf/tst-tls19mod3.c: New file. + Patch mostly by Martin von Gagern . + +diff --git a/elf/Makefile b/elf/Makefile +index 8d9657d..6efb86c 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -76,6 +76,7 @@ distribute := rtld-Rules \ + tst-tlsmod12.c tst-tls10.h tst-alignmod.c tst-alignmod2.c \ + circlemod1.c circlemod1a.c circlemod2.c circlemod2a.c \ + circlemod3.c circlemod3a.c nodlopenmod2.c \ ++ tst-tls19mod1.c tst-tls19mod2.c tst-tls19mod3.c \ + tls-macros.h \ + reldep8mod1.c reldep8mod2.c reldep8mod3.c \ + nodel2mod1.c nodel2mod2.c nodel2mod3.c \ +@@ -194,7 +195,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ + restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ + circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ + tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \ +- tst-tls16 tst-tls17 tst-tls18 tst-tls-dlinfo \ ++ tst-tls16 tst-tls17 tst-tls18 tst-tls19 tst-tls-dlinfo \ + tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ + tst-dlmodcount tst-dlopenrpath tst-deep1 \ + tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ +@@ -240,6 +241,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ + tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \ + tst-tlsmod15a tst-tlsmod15b tst-tlsmod16a tst-tlsmod16b \ + $(tlsmod17a-modules) tst-tlsmod17b $(tlsmod18a-modules) \ ++ tst-tls19mod1 tst-tls19mod2 tst-tls19mod3 \ + circlemod1 circlemod1a circlemod2 circlemod2a \ + circlemod3 circlemod3a \ + reldep8mod1 reldep8mod2 reldep8mod3 \ +@@ -525,6 +527,8 @@ $(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so + # For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED + $(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so + $(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so ++$(objpfx)tst-tls19mod1.so: $(objpfx)tst-tls19mod2.so $(objpfx)tst-tls19mod3.so ++$(objpfx)tst-tls19mod3.so: $(objpfx)ld.so + $(objpfx)reldep8mod3.so: $(objpfx)reldep8mod1.so $(objpfx)reldep8mod2.so + $(objpfx)nodel2mod3.so: $(objpfx)nodel2mod1.so $(objpfx)nodel2mod2.so + $(objpfx)reldep9mod2.so: $(objpfx)reldep9mod1.so +@@ -822,6 +826,9 @@ $(patsubst %,$(objpfx)%.os,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.os : t + $(compile-command.c) -DN=$* + $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.so: $(objpfx)ld.so + ++$(objpfx)tst-tls19: $(libdl) ++$(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so ++ + CFLAGS-tst-align.c = $(stack-align-test-flags) + CFLAGS-tst-align2.c = $(stack-align-test-flags) + CFLAGS-tst-alignmod.c = $(stack-align-test-flags) +diff --git a/elf/dl-open.c b/elf/dl-open.c +index cf8e8cc..8d90b56 100644 +--- a/elf/dl-open.c ++++ b/elf/dl-open.c +@@ -1,5 +1,5 @@ + /* Load a shared object at runtime, relocate it, and run its initializer. +- Copyright (C) 1996-2007, 2009, 2010 Free Software Foundation, Inc. ++ Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -347,6 +347,7 @@ dl_open_worker (void *a) + /* If the file is not loaded now as a dependency, add the search + list of the newly loaded object to the scope. */ + bool any_tls = false; ++ unsigned int first_static_tls = new->l_searchlist.r_nlist; + for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) + { + struct link_map *imap = new->l_searchlist.r_list[i]; +@@ -425,30 +426,9 @@ dl_open_worker (void *a) + might have to increase its size. */ + _dl_add_to_slotinfo (imap); + +- if (imap->l_need_tls_init) +- { +- /* For static TLS we have to allocate the memory here +- and now. This includes allocating memory in the DTV. +- But we cannot change any DTV other than our own. So, +- if we cannot guarantee that there is room in the DTV +- we don't even try it and fail the load. +- +- XXX We could track the minimum DTV slots allocated in +- all threads. */ +- if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) +- _dl_signal_error (0, "dlopen", NULL, N_("\ +-cannot load any more object with static TLS")); +- +- imap->l_need_tls_init = 0; +-#ifdef SHARED +- /* Update the slot information data for at least the +- generation of the DSO we are allocating data for. */ +- _dl_update_slotinfo (imap->l_tls_modid); +-#endif +- +- GL(dl_init_static_tls) (imap); +- assert (imap->l_need_tls_init == 0); +- } ++ if (imap->l_need_tls_init ++ && first_static_tls == new->l_searchlist.r_nlist) ++ first_static_tls = i; + + /* We have to bump the generation counter. */ + any_tls = true; +@@ -460,6 +440,40 @@ cannot load any more object with static TLS")); + _dl_fatal_printf (N_("\ + TLS generation counter wrapped! Please report this.")); + ++ /* We need a second pass for static tls data, because _dl_update_slotinfo ++ must not be run while calls to _dl_add_to_slotinfo are still pending. */ ++ for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i) ++ { ++ struct link_map *imap = new->l_searchlist.r_list[i]; ++ ++ if (imap->l_need_tls_init ++ && ! imap->l_init_called ++ && imap->l_tls_blocksize > 0) ++ { ++ /* For static TLS we have to allocate the memory here and ++ now. This includes allocating memory in the DTV. But we ++ cannot change any DTV other than our own. So, if we ++ cannot guarantee that there is room in the DTV we don't ++ even try it and fail the load. ++ ++ XXX We could track the minimum DTV slots allocated in ++ all threads. */ ++ if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) ++ _dl_signal_error (0, "dlopen", NULL, N_("\ ++cannot load any more object with static TLS")); ++ ++ imap->l_need_tls_init = 0; ++#ifdef SHARED ++ /* Update the slot information data for at least the ++ generation of the DSO we are allocating data for. */ ++ _dl_update_slotinfo (imap->l_tls_modid); ++#endif ++ ++ GL(dl_init_static_tls) (imap); ++ assert (imap->l_need_tls_init == 0); ++ } ++ } ++ + /* Run the initializer functions of new objects. */ + _dl_init (new, args->argc, args->argv, args->env); + +diff --git a/elf/tst-tls19.c b/elf/tst-tls19.c +new file mode 100644 +index 0000000..acbc1d6 +--- /dev/null ++++ b/elf/tst-tls19.c +@@ -0,0 +1,27 @@ ++// BZ 12453 ++#include ++#include ++ ++ ++static int ++do_test (void) ++{ ++ void* dl = dlopen ("tst-tls19mod1.so", RTLD_LAZY | RTLD_GLOBAL); ++ if (dl == NULL) ++ { ++ printf ("Error loading tst-tls19mod1.so: %s\n", dlerror ()); ++ return 1; ++ } ++ ++ int (*fn) (void) = dlsym (dl, "foo"); ++ if (fn == NULL) ++ { ++ printf("Error obtaining symbol foo\n"); ++ return 1; ++ } ++ ++ return fn (); ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff --git a/elf/tst-tls19mod1.c b/elf/tst-tls19mod1.c +new file mode 100644 +index 0000000..2790097 +--- /dev/null ++++ b/elf/tst-tls19mod1.c +@@ -0,0 +1,15 @@ ++#include ++ ++extern int bar (void); ++extern int baz (void); ++ ++int ++foo (void) ++{ ++ int v1 = bar (); ++ int v2 = baz (); ++ ++ printf ("bar=%d, baz=%d\n", v1, v2); ++ ++ return v1 != 666 || v2 != 42; ++} +diff --git a/elf/tst-tls19mod2.c b/elf/tst-tls19mod2.c +new file mode 100644 +index 0000000..cae702f +--- /dev/null ++++ b/elf/tst-tls19mod2.c +@@ -0,0 +1,13 @@ ++static int __thread tbar __attribute__ ((tls_model ("initial-exec"))) = 666; ++ ++void ++setter (int a) ++{ ++ tbar = a; ++} ++ ++int ++bar (void) ++{ ++ return tbar; ++} +diff --git a/elf/tst-tls19mod3.c b/elf/tst-tls19mod3.c +new file mode 100644 +index 0000000..e7b2801 +--- /dev/null ++++ b/elf/tst-tls19mod3.c +@@ -0,0 +1,16 @@ ++#include ++ ++static int __thread tbaz __attribute__ ((tls_model ("local-dynamic"))) = 42; ++ ++void ++setter2 (int a) ++{ ++ tbaz = a; ++} ++ ++int ++baz (void) ++{ ++ printf ("&tbaz=%p\n", &tbaz); ++ return tbaz; ++} --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-weak.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-weak.diff @@ -0,0 +1,49 @@ +--- + linuxthreads/sysdeps/pthread/bits/libc-lock.h | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h ++++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h +@@ -25,6 +25,10 @@ + + #if defined _LIBC && !defined NOT_IN_libc + #include ++#else ++/* This function is called to initialize the pthread library. */ ++/* We need a prototype before it is bellow marked as weak */ ++extern void __pthread_initialize (void); + #endif + + /* Mutex type. */ +@@ -158,6 +162,9 @@ + #define __rtld_lock_init_recursive(NAME) \ + __libc_lock_init_recursive (NAME) + ++#define __rtld_lock_initialize(NAME) \ ++ (void) ((NAME) = (__rtld_lock_recursive_t) _RTLD_LOCK_RECURSIVE_INITIALIZER) ++ + /* Finalize the named lock variable, which must be locked. It cannot be + used again until __libc_lock_init is called again on it. This must be + called on a lock variable before the containing storage is reused. */ +@@ -379,8 +386,10 @@ + weak_extern (__pthread_atfork) + weak_extern (BP_SYM (_pthread_cleanup_push)) + weak_extern (BP_SYM (_pthread_cleanup_pop)) ++#ifdef __USE_GNU + weak_extern (BP_SYM (_pthread_cleanup_push_defer)) + weak_extern (BP_SYM (_pthread_cleanup_pop_restore)) ++#endif + # else + # pragma weak __pthread_mutex_init + # pragma weak __pthread_mutex_destroy +@@ -402,8 +411,10 @@ + # pragma weak __pthread_once + # pragma weak __pthread_initialize + # pragma weak __pthread_atfork ++#ifdef __USE_GNU + # pragma weak _pthread_cleanup_push_defer + # pragma weak _pthread_cleanup_pop_restore ++#endif + # pragma weak _pthread_cleanup_push + # pragma weak _pthread_cleanup_pop + # endif --- eglibc-2.13.orig/debian/patches/any/local-ldconfig-multiarch.diff +++ eglibc-2.13/debian/patches/any/local-ldconfig-multiarch.diff @@ -0,0 +1,51 @@ +Description: make ldconfig use the built-in system paths + Make ldconfig use the same view of built-in system paths that ld.so does, + instead of just using SLIBDIR and LIBDIR; this corrects a failure of + ldconfig to cache libraries in non-multiarch directories when building for + multiarch, even though they're on the system path. +Author: Steve Langasek +Bug-Ubuntu: https://bugs.launchpad.net/bugs/736932 + +--- a/elf/ldconfig.c ++++ b/elf/ldconfig.c +@@ -59,6 +59,17 @@ + + #define PACKAGE _libc_intl_domainname + ++/* Get the generated information about the trusted/standard directories. */ ++#include "trusted-dirs.h" ++ ++static const char system_dirs[] = SYSTEM_DIRS; ++static const size_t system_dirs_len[] = ++{ ++ SYSTEM_DIRS_LEN ++}; ++#define nsystem_dirs_len \ ++ (sizeof (system_dirs_len) / sizeof (system_dirs_len[0])) ++ + static const struct + { + const char *name; +@@ -1353,12 +1364,19 @@ + + if (!opt_only_cline) + { ++ const char *strp = system_dirs; ++ size_t idx = 0; ++ + parse_conf (config_file, true); + + /* Always add the standard search paths. */ +- add_system_dir (SLIBDIR); +- if (strcmp (SLIBDIR, LIBDIR)) +- add_system_dir (LIBDIR); ++ do ++ { ++ add_system_dir (strp); ++ strp += system_dirs_len[idx] + 1; ++ idx++; ++ } ++ while (idx < nsystem_dirs_len); + } + + const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-kill_other.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-kill_other.diff @@ -0,0 +1,35 @@ + + + fixes ruby 1.9 testsuite failure t916 from #542927 + + +--- + linuxthreads/pthread.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/linuxthreads/pthread.c ++++ b/linuxthreads/pthread.c +@@ -1222,6 +1222,15 @@ + /* Reset the signal handlers behaviour for the signals the + implementation uses since this would be passed to the new + process. */ ++#if 1 ++ /* ++ do not do it as it is wrong. ++ the __pthread_kill_other_threads_np() is used just before exec, ++ the successfull one resets signals with handler into DFL behaviour anyway (in kernel), ++ the failed one needs the signal handler as before to allow creating of new threads ++ as already noted above ++ */ ++#else + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = SIG_DFL; +@@ -1229,6 +1238,7 @@ + __libc_sigaction(__pthread_sig_cancel, &sa, NULL); + if (__pthread_sig_debug > 0) + __libc_sigaction(__pthread_sig_debug, &sa, NULL); ++#endif + } + weak_alias (__pthread_kill_other_threads_np, pthread_kill_other_threads_np) + --- eglibc-2.13.orig/debian/patches/any/local-mktemp.diff +++ eglibc-2.13/debian/patches/any/local-mktemp.diff @@ -0,0 +1,12 @@ +--- + misc/mktemp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/misc/mktemp.c ++++ b/misc/mktemp.c +@@ -33,4 +33,4 @@ + return template; + } + +-link_warning (mktemp, "the use of `mktemp' is dangerous, better use `mkstemp'") ++link_warning (mktemp, "the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'") --- eglibc-2.13.orig/debian/patches/any/local-globfree-clear.diff +++ eglibc-2.13/debian/patches/any/local-globfree-clear.diff @@ -0,0 +1,24 @@ +# DP: Description: Workaround patch to make globfree() clear pglob->gl_pathc +# DP: Related bugs: #264884 +# DP: Dpatch author: Jeff Licquia +# DP: Patch author: Jeff Licquia +# DP: Upstream status: Not submitted +# DP: Status Details: (gotom) I think it's harmless, but I doubt it's sanity. +# It's applied for sarge LFS conformance. +# However my test does not show any problems. Moreover, +# if gl_pathv is not cleared after GLOB_ABORTED under +# gl_pathc == 0, it's glob() bug. +# This patch should be reconsidered to apply after sarge. +# DP: Date: 2004-07-22 + +--- glibc-2.3.2-old/sysdeps/generic/glob.c 2004-07-26 17:49:07.000000000 -0400 ++++ glibc-2.3.2/sysdeps/generic/glob.c 2004-07-26 17:51:14.000000000 -0400 +@@ -1105,6 +1105,8 @@ + if (pglob->gl_pathv[pglob->gl_offs + i] != NULL) + free ((__ptr_t) pglob->gl_pathv[pglob->gl_offs + i]); + free ((__ptr_t) pglob->gl_pathv); ++ pglob->gl_pathc = 0; ++ pglob->gl_pathv = NULL; + } + } + #if defined _LIBC && !defined globfree --- eglibc-2.13.orig/debian/patches/any/cvs-sched_h.diff +++ eglibc-2.13/debian/patches/any/cvs-sched_h.diff @@ -0,0 +1,139 @@ +2011-01-30 Samuel Thibault + +Synchronize bits/sched.h with ./sysdeps/unix/sysv/linux/bits/sched.h + +This brings the variable-size cpu_set_t manipulation macros from +./sysdeps/unix/sysv/linux/bits/sched.h + +* bits/sched.h (__CPU_ZERO, __CPU_SET, __CPU_CLR, __CPU_ISSET, +__CPU_COUNT): Remove old macros. +(__CPU_ZERO_S, __CPU_SET_S, __CPU_CLR_S, __CPU_ISSET_S, __CPU_COUNT, +__CPU_EQUAL_S, __CPU_OP_S, __CPU_ALLOC_SIZE, __CPU_ALLOC, __CPU_FREE): Add +macros. +(__sched_cpualloc, __sched_cpufree): Add declarations. + +--- +http://sourceware.org/ml/libc-alpha/2011-01/msg00054.html + + sched.h | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 72 insertions(+), 15 deletions(-) + +diff --git a/bits/sched.h b/bits/sched.h +index a068e50..9a22ae3 100644 +--- a/bits/sched.h ++++ b/bits/sched.h +@@ -1,6 +1,7 @@ + /* Definitions of constants and data structure for POSIX 1003.1b-1993 + scheduling interface. +- Copyright (C) 1996, 1997, 2001, 2003, 2007 Free Software Foundation, Inc. ++ Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008,2009 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -56,7 +57,7 @@ struct __sched_param + # define __CPU_SETSIZE 1024 + # define __NCPUBITS (8 * sizeof (__cpu_mask)) + +-/* Type for array elements in 'cpu_set'. */ ++/* Type for array elements in 'cpu_set_t'. */ + typedef unsigned long int __cpu_mask; + + /* Basic access functions. */ +@@ -70,27 +71,83 @@ typedef struct + } cpu_set_t; + + /* Access functions for CPU masks. */ +-# define __CPU_ZERO(cpusetp) \ ++# if __GNUC_PREREQ (2, 91) ++# define __CPU_ZERO_S(setsize, cpusetp) \ ++ do __builtin_memset (cpusetp, '\0', setsize); while (0) ++# else ++# define __CPU_ZERO_S(setsize, cpusetp) \ + do { \ +- unsigned int __i; \ +- cpu_set *__arr = (cpusetp); \ +- for (__i = 0; __i < sizeof (cpu_set) / sizeof (__cpu_mask); ++__i) \ +- __arr->__bits[__i] = 0; \ ++ size_t __i; \ ++ size_t __imax = (setsize) / sizeof (__cpu_mask); \ ++ __cpu_mask *__bits = (cpusetp)->__bits; \ ++ for (__i = 0; __i < __imax; ++__i) \ ++ __bits[__i] = 0; \ + } while (0) +-# define __CPU_SET(cpu, cpusetp) \ +- ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu)) +-# define __CPU_CLR(cpu, cpusetp) \ +- ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu)) +-# define __CPU_ISSET(cpu, cpusetp) \ +- (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0) ++# endif ++# define __CPU_SET_S(cpu, setsize, cpusetp) \ ++ (__extension__ \ ++ ({ size_t __cpu = (cpu); \ ++ __cpu < 8 * (setsize) \ ++ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \ ++ |= __CPUMASK (__cpu)) \ ++ : 0; })) ++# define __CPU_CLR_S(cpu, setsize, cpusetp) \ ++ (__extension__ \ ++ ({ size_t __cpu = (cpu); \ ++ __cpu < 8 * (setsize) \ ++ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \ ++ &= ~__CPUMASK (__cpu)) \ ++ : 0; })) ++# define __CPU_ISSET_S(cpu, setsize, cpusetp) \ ++ (__extension__ \ ++ ({ size_t __cpu = (cpu); \ ++ __cpu < 8 * (setsize) \ ++ ? ((((__const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \ ++ & __CPUMASK (__cpu))) != 0 \ ++ : 0; })) ++ ++# define __CPU_COUNT_S(setsize, cpusetp) \ ++ __sched_cpucount (setsize, cpusetp) ++ ++# if __GNUC_PREREQ (2, 91) ++# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ ++ (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0) ++# else ++# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ ++ (__extension__ \ ++ ({ __const __cpu_mask *__arr1 = (cpusetp1)->__bits; \ ++ __const __cpu_mask *__arr2 = (cpusetp2)->__bits; \ ++ size_t __imax = (setsize) / sizeof (__cpu_mask); \ ++ size_t __i; \ ++ for (__i = 0; __i < __imax; ++__i) \ ++ if (__bits[__i] != __bits[__i]) \ ++ break; \ ++ __i == __imax; })) ++# endif ++ ++# define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \ ++ (__extension__ \ ++ ({ cpu_set_t *__dest = (destset); \ ++ __const __cpu_mask *__arr1 = (srcset1)->__bits; \ ++ __const __cpu_mask *__arr2 = (srcset2)->__bits; \ ++ size_t __imax = (setsize) / sizeof (__cpu_mask); \ ++ size_t __i; \ ++ for (__i = 0; __i < __imax; ++__i) \ ++ ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \ ++ __dest; })) ++ ++# define __CPU_ALLOC_SIZE(count) \ ++ ((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)) ++# define __CPU_ALLOC(count) __sched_cpualloc (count) ++# define __CPU_FREE(cpuset) __sched_cpufree (cpuset) + + __BEGIN_DECLS + + extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) + __THROW; ++extern cpu_set_t *__sched_cpualloc (size_t __count) __THROW __wur; ++extern void __sched_cpufree (cpu_set_t *__set) __THROW; + + __END_DECLS + +-# define __CPU_COUNT(cpusetp) \ +- __sched_cpucount (sizeof (cpu_set_t), cpusetp) + #endif --- eglibc-2.13.orig/debian/patches/any/cvs-fork-race.diff +++ eglibc-2.13/debian/patches/any/cvs-fork-race.diff @@ -0,0 +1,190 @@ +From 8bd683657e8ab1e6e0e787d6c00e763d8393f5e5 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 15 Sep 2011 14:48:01 +0200 +Subject: [PATCH] Avoid race between {,__de}allocate_stack and __reclaim_stacks during fork + (cherry picked from commit 7a775e6b3d938586db5a66a76de9c14667151cf9) + +--- + nptl/ChangeLog | 9 +++++++++ + nptl/allocatestack.c | 1 + + nptl/descr.h | 1 + + nptl/nptl-init.c | 1 + + nptl/sysdeps/pthread/list.h | 31 +++++++++++++++++++++++-------- + nptl_db/ChangeLog | 4 ++++ + nptl_db/thread_dbP.h | 3 ++- + 7 files changed, 41 insertions(+), 9 deletions(-) + +2011-09-15 Andreas Schwab + + * sysdeps/pthread/list.h: Define only list_t if __need_list_t is + defined. + (list_add): Add atomic_write_barrier. + * descr.h: Define __need_list_t before including . + * nptl-init.c: Include + * allocatestack.c: Likewise. + + +diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c +index d4364bf..739803f 100644 +--- a/nptl/allocatestack.c ++++ b/nptl/allocatestack.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/nptl/descr.h b/nptl/descr.h +index 9c366e7..e57e29e 100644 +--- a/nptl/descr.h ++++ b/nptl/descr.h +@@ -26,6 +26,7 @@ + #include + #include + #include ++#define __need_list_t + #include + #include + #include +diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c +index 33492c1..db45cab 100644 +--- a/nptl/nptl-init.c ++++ b/nptl/nptl-init.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/nptl/sysdeps/pthread/list.h b/nptl/sysdeps/pthread/list.h +index 6ddccb9..cfc4aba 100644 +--- a/nptl/sysdeps/pthread/list.h ++++ b/nptl/sysdeps/pthread/list.h +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2002, 2009 Free Software Foundation, Inc. ++/* Copyright (C) 2002, 2009, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2002. + +@@ -18,27 +18,39 @@ + 02111-1307 USA. */ + + #ifndef _LIST_H +-#define _LIST_H 1 ++ ++#ifndef __need_list_t ++# define _LIST_H 1 ++#endif + + /* The definitions of this file are adopted from those which can be + found in the Linux kernel headers to enable people familiar with + the latter find their way in these sources as well. */ + + ++#if defined __need_list_t || defined _LIST_H ++# ifndef __list_t_defined ++# define __list_t_defined + /* Basic type for the double-link list. */ + typedef struct list_head + { + struct list_head *next; + struct list_head *prev; + } list_t; ++# endif ++# undef __need_list_t ++#endif ++ ++#ifdef _LIST_H + ++# include + + /* Define a variable with the head and tail of the list. */ +-#define LIST_HEAD(name) \ ++# define LIST_HEAD(name) \ + list_t name = { &(name), &(name) } + + /* Initialize a new list head. */ +-#define INIT_LIST_HEAD(ptr) \ ++# define INIT_LIST_HEAD(ptr) \ + (ptr)->next = (ptr)->prev = (ptr) + + +@@ -49,6 +61,7 @@ list_add (list_t *newp, list_t *head) + newp->next = head->next; + newp->prev = head; + head->next->prev = newp; ++ atomic_write_barrier (); + head->next = newp; + } + +@@ -78,26 +91,28 @@ list_splice (list_t *add, list_t *head) + + + /* Get typed element from list at a given position. */ +-#define list_entry(ptr, type, member) \ ++# define list_entry(ptr, type, member) \ + ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) + + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each(pos, head) \ ++# define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each_prev(pos, head) \ ++# define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + + + /* Iterate backwards over the elements list. The list elements can be + removed from the list while doing this. */ +-#define list_for_each_prev_safe(pos, p, head) \ ++# define list_for_each_prev_safe(pos, p, head) \ + for (pos = (head)->prev, p = pos->prev; \ + pos != (head); \ + pos = p, p = pos->prev) + ++#endif /* _LIST_H */ ++ + #endif /* list.h */ +diff --git a/nptl_db/ChangeLog b/nptl_db/ChangeLog +index f79fc18..81ebfcd 100644 +--- a/nptl_db/ChangeLog ++++ b/nptl_db/ChangeLog +@@ -1,3 +1,7 @@ ++2011-09-15 Andreas Schwab ++ ++ * thread_dbP.h: Include ++ + 2009-08-23 Roland McGrath + + * td_ta_map_lwp2thr.c (__td_ta_lookup_th_unique): Move ta_ok check +diff --git a/nptl_db/thread_dbP.h b/nptl_db/thread_dbP.h +index e5db9bf..54f5fc8 100644 +--- a/nptl_db/thread_dbP.h ++++ b/nptl_db/thread_dbP.h +@@ -1,5 +1,5 @@ + /* Private header for thread debug library +- Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. ++ Copyright (C) 2003, 2004, 2007, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -29,6 +29,7 @@ + #include "proc_service.h" + #include "thread_db.h" + #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ ++#include + + /* Indeces for the symbol names. */ + enum +-- +1.7.3.4 + --- eglibc-2.13.orig/debian/patches/any/submitted-fwrite-wur.diff +++ eglibc-2.13/debian/patches/any/submitted-fwrite-wur.diff @@ -0,0 +1,24 @@ +http://sourceware.org/bugzilla/show_bug.cgi?id=11959 + +diff --git a/libio/stdio.h b/libio/stdio.h +index 962c287..5092365 100644 +--- a/libio/stdio.h ++++ b/libio/stdio.h +@@ -706,7 +706,7 @@ extern size_t fread (void *__restrict __ptr, size_t __size, + This function is a possible cancellation point and therefore not + marked with __THROW. */ + extern size_t fwrite (__const void *__restrict __ptr, size_t __size, +- size_t __n, FILE *__restrict __s) __wur; ++ size_t __n, FILE *__restrict __s); + __END_NAMESPACE_STD + + #ifdef __USE_GNU +@@ -730,7 +730,7 @@ extern int fputs_unlocked (__const char *__restrict __s, + extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream) __wur; + extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, +- size_t __n, FILE *__restrict __stream) __wur; ++ size_t __n, FILE *__restrict __stream); + #endif + + --- eglibc-2.13.orig/debian/patches/any/submitted-fileops-and-signals.diff +++ eglibc-2.13/debian/patches/any/submitted-fileops-and-signals.diff @@ -0,0 +1,26 @@ +Index: glibc-2.7/libio/fileops.c +=================================================================== +--- glibc-2.7.orig/libio/fileops.c 2007-10-23 08:46:13.000000000 -0400 ++++ glibc-2.7/libio/fileops.c 2007-10-23 08:50:51.000000000 -0400 +@@ -522,10 +522,19 @@ + fp->_cur_column = INTUSE(_IO_adjust_column) (fp->_cur_column - 1, data, + count) + 1; + _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base); +- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_buf_base; +- fp->_IO_write_end = (fp->_mode <= 0 ++ if (__builtin_expect (count == to_do, 1)) ++ { ++ fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_buf_base; ++ fp->_IO_write_end = (fp->_mode <= 0 + && (fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED)) + ? fp->_IO_buf_base : fp->_IO_buf_end); ++ } ++ else if (count > 0 && fp->_IO_write_base == data) ++ { ++ memmove (data, data+count, ++ fp->_IO_write_ptr - fp->_IO_write_base - count); ++ fp->_IO_write_ptr -= count; ++ } + return count; + } + --- eglibc-2.13.orig/debian/patches/any/submitted-at-pagesize.diff +++ eglibc-2.13/debian/patches/any/submitted-at-pagesize.diff @@ -0,0 +1,19 @@ +2010-06-10 Andreas Schwab + + * sysdeps/unix/sysv/linux/getpagesize.c: Don't assume AT_PAGESIZE + is always available. + +--- a/sysdeps/unix/sysv/linux/getpagesize.c ++++ b/sysdeps/unix/sysv/linux/getpagesize.c +@@ -28,7 +28,7 @@ + int + __getpagesize () + { +-#ifdef __ASSUME_AT_PAGESIZE ++#if 0 && defined __ASSUME_AT_PAGESIZE + assert (GLRO(dl_pagesize) != 0); + return GLRO(dl_pagesize); + #else +-- +1.7.2 + --- eglibc-2.13.orig/debian/patches/any/local-ldconfig-fsync.diff +++ eglibc-2.13/debian/patches/any/local-ldconfig-fsync.diff @@ -0,0 +1,14 @@ +--- + elf/cache.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/elf/cache.c ++++ b/elf/cache.c +@@ -426,6 +426,7 @@ + } + + if (write (fd, strings, total_strlen) != (ssize_t) total_strlen ++ || fsync (fd) + || close (fd)) + error (EXIT_FAILURE, errno, _("Writing of cache data failed")); + --- eglibc-2.13.orig/debian/patches/any/submitted-popen.diff +++ eglibc-2.13/debian/patches/any/submitted-popen.diff @@ -0,0 +1,58 @@ +http://bugs.gentoo.org/250342 +http://sources.redhat.com/bugzilla/show_bug.cgi?id=9685 + +we cant assume sock_cloexec and pipe2 are bound together as the former defines +are found in glibc only while the latter are a combo of kernel headers and +glibc. so if we do a runtime detection of SOCK_CLOEXEC, but pipe2() is a stub +inside of glibc, we hit a problem. for example: + +#include +#include +main() +{ + getgrnam("portage"); + if (!popen("ls", "r")) + perror("popen()"); +} + +getgrnam() will detect that the kernel supports SOCK_CLOEXEC and then set both +__have_sock_cloexec and __have_pipe2 to true. but if glibc was built against +older kernel headers where __NR_pipe2 does not exist, glibc will have a ENOSYS +stub for it. so popen() will always fail as glibc assumes pipe2() works. + +--- + include/unistd.h | 5 +---- + socket/have_sock_cloexec.c | 5 +++++ + 2 files changed, 6 insertions(+), 4 deletions(-) + +--- a/include/unistd.h ++++ b/include/unistd.h +@@ -171,10 +171,7 @@ + extern int __pause_nocancel (void) attribute_hidden; + + extern int __have_sock_cloexec; +-/* At lot of other functionality became available at the same time as +- SOCK_CLOEXEC. Avoid defining separate variables for all of them +- unless it is really necessary. */ +-#define __have_pipe2 __have_sock_cloexec ++extern int __have_pipe2; + + extern int __getlogin_r_loginuid (char *name, size_t namesize) + attribute_hidden; +--- a/socket/have_sock_cloexec.c ++++ b/socket/have_sock_cloexec.c +@@ -16,9 +16,14 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#include + #include + #include + + #if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC + int __have_sock_cloexec; + #endif ++ ++#if defined O_CLOEXEC && !defined __ASSUME_PIPE2 ++int __have_pipe2; ++#endif --- eglibc-2.13.orig/debian/patches/any/local-stdio-lock.diff +++ eglibc-2.13/debian/patches/any/local-stdio-lock.diff @@ -0,0 +1,32 @@ +--- + bits/stdio-lock.h | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +--- a/bits/stdio-lock.h ++++ b/bits/stdio-lock.h +@@ -47,12 +47,21 @@ + + #if defined _LIBC && !defined NOT_IN_libc + # define _IO_acquire_lock(_fp) \ +- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \ +- _IO_flockfile (_fp) ++ { \ ++ _IO_FILE *_IO_acquire_lock_file = _fp; \ ++ __libc_cleanup_region_start (1, (void (*) (void *)) _IO_acquire_lock_fct, &_IO_acquire_lock_file); \ ++ _IO_flockfile (_IO_acquire_lock_file) ++ ++# define _IO_acquire_lock_clear_flags2(_fp) \ ++ { \ ++ _IO_FILE *_IO_acquire_lock_file = _fp; \ ++ __libc_cleanup_region_start (1, (void (*) (void *)) _IO_acquire_lock_clear_flags2_fct, &_IO_acquire_lock_file); \ ++ _IO_flockfile (_IO_acquire_lock_file) + + # define _IO_release_lock(_fp) \ +- _IO_funlockfile (_fp); \ +- _IO_cleanup_region_end (0) ++ __libc_cleanup_region_end (1); \ ++ } ++ + #endif + + #endif /* bits/stdio-lock.h */ --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-fd.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-fd.diff @@ -0,0 +1,36 @@ +--- + linuxthreads/pthread.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +--- a/linuxthreads/pthread.c ++++ b/linuxthreads/pthread.c +@@ -662,6 +662,29 @@ + free(__pthread_manager_thread_bos); + return -1; + } ++ /* Make sure the file descriptors of the pipe doesn't collide ++ with stdin, stdout or stderr if they have been closed. */ ++ if (manager_pipe[0] < 3) { ++ int new_fd; ++ new_fd = fcntl(manager_pipe[0], F_DUPFD, 3); ++ close(manager_pipe[0]); ++ if (new_fd == -1) { ++ free(__pthread_manager_thread_bos); ++ return -1; ++ } ++ manager_pipe[0] = new_fd; ++ } ++ if (manager_pipe[1] < 3) { ++ int new_fd; ++ new_fd = fcntl(manager_pipe[1], F_DUPFD, 3); ++ close(manager_pipe[1]); ++ if (new_fd == -1) { ++ close(manager_pipe[0]); ++ free(__pthread_manager_thread_bos); ++ return -1; ++ } ++ manager_pipe[1] = new_fd; ++ } + + #ifdef USE_TLS + /* Allocate memory for the thread descriptor and the dtv. */ --- eglibc-2.13.orig/debian/patches/any/local-no-pagesize.diff +++ eglibc-2.13/debian/patches/any/local-no-pagesize.diff @@ -0,0 +1,119 @@ +--- + ports/sysdeps/unix/sysv/linux/mips/sys/user.h | 4 ++-- + sysdeps/unix/sysv/linux/ia64/sys/user.h | 3 ++- + sysdeps/unix/sysv/linux/x86_64/sys/user.h | 4 ++-- + 3 files changed, 6 insertions(+), 5 deletions(-) + +--- a/sysdeps/unix/sysv/linux/ia64/sys/user.h ++++ b/sysdeps/unix/sysv/linux/ia64/sys/user.h +@@ -21,6 +21,7 @@ + + #include + #include ++#include + + /* This definition comes directly from the kernel headers. If + anything changes in them this header has to be changed, too. */ +@@ -45,7 +46,7 @@ + char u_comm[32]; /* User command name. */ + }; + +-#define NBPG PAGE_SIZE ++#define NBPG (sysconf(_SC_PAGESIZE)) + #define UPAGES 1 + #define HOST_TEXT_START_ADDR (u.start_code) + #define HOST_DATA_START_ADDR (u.start_data) +--- a/ports/sysdeps/unix/sysv/linux/mips/sys/user.h ++++ b/ports/sysdeps/unix/sysv/linux/mips/sys/user.h +@@ -20,6 +20,7 @@ + #define _SYS_USER_H 1 + + #include ++#include + + /* The whole purpose of this file is for GDB and GDB only. Don't read + too much into it. Don't use it for anything other than GDB unless +@@ -207,8 +208,7 @@ + + #endif + +-#define PAGE_SHIFT 12 +-#define PAGE_SIZE (1UL << PAGE_SHIFT) ++#define PAGE_SIZE (sysconf(_SC_PAGESIZE)) + #define PAGE_MASK (~(PAGE_SIZE-1)) + #define NBPG PAGE_SIZE + #define UPAGES 1 +--- a/sysdeps/unix/sysv/linux/x86_64/sys/user.h ++++ b/sysdeps/unix/sysv/linux/x86_64/sys/user.h +@@ -24,6 +24,7 @@ + you know what you are doing. */ + + #include ++#include + + #if __WORDSIZE == 64 + +@@ -164,8 +165,7 @@ + }; + #endif /* __WORDSIZE */ + +-#define PAGE_SHIFT 12 +-#define PAGE_SIZE (1UL << PAGE_SHIFT) ++#define PAGE_SIZE (sysconf(_SC_PAGESIZE)) + #define PAGE_MASK (~(PAGE_SIZE-1)) + #define NBPG PAGE_SIZE + #define UPAGES 1 +diff --git a/sysdeps/unix/sysv/linux/check_native.c b/sysdeps/unix/sysv/linux/check_native.c +index 6e6624a..58db4cd 100644 +--- a/sysdeps/unix/sysv/linux/check_native.c ++++ b/sysdeps/unix/sysv/linux/check_native.c +@@ -77,13 +77,7 @@ __check_native (uint32_t a1_index, int *a1_native, + memset (&nladdr, '\0', sizeof (nladdr)); + nladdr.nl_family = AF_NETLINK; + +-#ifdef PAGE_SIZE +- /* Help the compiler optimize out the malloc call if PAGE_SIZE +- is constant and smaller or equal to PTHREAD_STACK_MIN/4. */ +- const size_t buf_size = PAGE_SIZE; +-#else + const size_t buf_size = __getpagesize (); +-#endif + bool use_malloc = false; + char *buf; + +diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c +index c053adc..f4efc25 100644 +--- a/sysdeps/unix/sysv/linux/check_pf.c ++++ b/sysdeps/unix/sysv/linux/check_pf.c +@@ -71,13 +71,7 @@ make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6, + memset (&nladdr, '\0', sizeof (nladdr)); + nladdr.nl_family = AF_NETLINK; + +-#ifdef PAGE_SIZE +- /* Help the compiler optimize out the malloc call if PAGE_SIZE +- is constant and smaller or equal to PTHREAD_STACK_MIN/4. */ +- const size_t buf_size = PAGE_SIZE; +-#else + const size_t buf_size = __getpagesize (); +-#endif + bool use_malloc = false; + char *buf; + +diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c +index ca8c490..83ca090 100644 +--- a/sysdeps/unix/sysv/linux/ifaddrs.c ++++ b/sysdeps/unix/sysv/linux/ifaddrs.c +@@ -144,13 +144,7 @@ __netlink_request (struct netlink_handle *h, int type) + ssize_t read_len; + bool done = false; + +-#ifdef PAGE_SIZE +- /* Help the compiler optimize out the malloc call if PAGE_SIZE +- is constant and smaller or equal to PTHREAD_STACK_MIN/4. */ +- const size_t buf_size = PAGE_SIZE; +-#else + const size_t buf_size = __getpagesize (); +-#endif + bool use_malloc = false; + char *buf; + --- eglibc-2.13.orig/debian/patches/any/submitted-autotools.diff +++ eglibc-2.13/debian/patches/any/submitted-autotools.diff @@ -0,0 +1,677 @@ +2009-05-10 Aurelien Jarno + + * scripts/config.guess: update to version 2009-04-27. + * scripts/config.sub: ditto. + +--- + scripts/config.guess | 117 ++++++++++++++++++++++++++++--------- + scripts/config.sub | 159 +++++++++++++++++++++++++++++++++++++-------------- + 2 files changed, 208 insertions(+), 68 deletions(-) + +--- a/scripts/config.guess ++++ b/scripts/config.guess +@@ -1,10 +1,10 @@ + #! /bin/sh + # Attempt to guess a canonical system name. + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +-# Inc. ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 ++# Free Software Foundation, Inc. + +-timestamp='2006-02-27' ++timestamp='2009-04-27' + + # 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 +@@ -56,8 +56,8 @@ + GNU config.guess ($timestamp) + + Originally written by Per Bothner. +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +-Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006, 2007, 2008 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." +@@ -161,6 +161,7 @@ + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; ++ sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched +@@ -211,7 +212,7 @@ + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) +- echo powerppc-unknown-mirbsd${UNAME_RELEASE} ++ echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} +@@ -323,14 +324,30 @@ + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; ++ s390x:SunOS:*:*) ++ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` ++ exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; +- i86pc:SunOS:5.*:*) +- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` ++ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) ++ eval $set_cc_for_build ++ SUN_ARCH="i386" ++ # If there is a compiler, see if it is configured for 64-bit objects. ++ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. ++ # This test works for both compilers. ++ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then ++ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ ++ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ ++ grep IS_64BIT_ARCH >/dev/null ++ then ++ SUN_ARCH="x86_64" ++ fi ++ fi ++ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize +@@ -531,7 +548,7 @@ + echo rs6000-ibm-aix3.2 + fi + exit ;; +- *:AIX:*:[45]) ++ *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 +@@ -771,6 +788,8 @@ + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ amd64) ++ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac +@@ -778,10 +797,7 @@ + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; +- i*:MINGW*:*) +- echo ${UNAME_MACHINE}-pc-mingw32 +- exit ;; +- i*:MSYS_NT-*:*:*) ++ *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) +@@ -791,12 +807,18 @@ + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; +- x86:Interix*:[345]*) +- echo i586-pc-interix${UNAME_RELEASE} +- exit ;; +- EM64T:Interix*:[345]*) +- echo x86_64-unknown-interix${UNAME_RELEASE} +- exit ;; ++ *:Interix*:[3456]*) ++ case ${UNAME_MACHINE} in ++ x86) ++ echo i586-pc-interix${UNAME_RELEASE} ++ exit ;; ++ EM64T | authenticamd | genuineintel) ++ echo x86_64-unknown-interix${UNAME_RELEASE} ++ exit ;; ++ IA64) ++ echo ia64-unknown-interix${UNAME_RELEASE} ++ exit ;; ++ esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; +@@ -830,6 +852,22 @@ + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) ++ eval $set_cc_for_build ++ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ ++ | grep -q __ARM_EABI__ ++ then ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ else ++ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ ++ | grep -q __ARM_PCS_VFP ++ then ++ echo ${UNAME_MACHINE}-unknown-linux-gnueabi ++ else ++ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf ++ fi ++ fi ++ exit ;; ++ avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) +@@ -919,6 +957,9 @@ + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; ++ padre:Linux:*:*) ++ echo sparc-unknown-linux-gnu ++ exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +@@ -948,6 +989,9 @@ + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; ++ xtensa*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent +@@ -966,9 +1010,6 @@ + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; +- coff-i386) +- echo "${UNAME_MACHINE}-pc-linux-gnucoff" +- exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. +@@ -990,7 +1031,7 @@ + LIBC=gnulibc1 + # endif + #else +- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) ++ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout +@@ -1083,8 +1124,11 @@ + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about +- # the processor, so we play safe by assuming i386. +- echo i386-pc-msdosdjgpp ++ # 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 ++ # this is a cross-build. ++ echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 +@@ -1122,6 +1166,16 @@ + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; ++ NCR*:*:4.2:* | MPRAS*:*:4.2:*) ++ OS_REL='.3' ++ test -r /etc/.relid \ ++ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` ++ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ ++ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } ++ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ++ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; +@@ -1197,6 +1251,9 @@ + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; ++ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. ++ echo i586-pc-haiku ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; +@@ -1206,6 +1263,15 @@ + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; ++ SX-7:SUPER-UX:*:*) ++ echo sx7-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-8:SUPER-UX:*:*) ++ echo sx8-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-8R:SUPER-UX:*:*) ++ echo sx8r-nec-superux${UNAME_RELEASE} ++ exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; +@@ -1296,6 +1362,9 @@ + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; ++ i*86:AROS:*:*) ++ echo ${UNAME_MACHINE}-pc-aros ++ exit ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 +@@ -1456,9 +1525,9 @@ + the operating system you are using. It is advised that you + download the most up to date version of the config scripts from + +- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess ++ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + and +- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub ++ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + + If the version you run ($0) is already up to date, please + send the following data and any information you think might be +--- a/scripts/config.sub ++++ b/scripts/config.sub +@@ -1,10 +1,10 @@ + #! /bin/sh + # Configuration validation subroutine script. + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +-# Inc. ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 ++# Free Software Foundation, Inc. + +-timestamp='2006-02-27' ++timestamp='2009-04-17' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -72,8 +72,8 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +-Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006, 2007, 2008 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." +@@ -122,6 +122,7 @@ + case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ ++ kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` +@@ -241,20 +242,24 @@ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ +- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ ++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ +- | fr30 | frv \ ++ | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ +- | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ ++ | lm32 \ ++ | m32c | m32r | m32rle | m68000 | m68k | m88k \ ++ | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +- | mips64vr | mips64vrel \ ++ | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ +@@ -267,6 +272,7 @@ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ ++ | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ +@@ -275,19 +281,17 @@ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ +- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ ++ | score \ ++ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ +- | sparc | sparc64 | sparc64b | sparc64v | sparc64v2 | sparc86x | sparclet | sparclite \ +- | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sparcv9v2 \ +- | strongarm \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ ++ | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ +- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ +- | z8k) +- basic_machine=$basic_machine-unknown +- ;; +- m32c) ++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ ++ | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) +@@ -319,25 +323,28 @@ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ +- | avr-* \ ++ | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ +- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ ++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ +- | m32r-* | m32rle-* \ ++ | lm32-* \ ++ | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ +- | mips64vr-* | mips64vrel-* \ ++ | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ ++ | mips64r5900-* | mips64r5900el-* \ ++ | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ +@@ -359,22 +366,24 @@ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc64v2-* | sparc86x-* | sparclet-* \ ++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ +- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sparcv9v2-* | strongarm-* | sv1-* | sx?-* \ ++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ +- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ +- | xstormy16-* | xtensa-* \ ++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ ++ | xstormy16-* | xtensa*-* \ + | ymp-* \ +- | z8k-*) ++ | z8k-* | z80-*) + ;; +- m32c-*) ++ # Recognize the basic CPU types without company name, with glob match. ++ xtensa*) ++ basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. +@@ -438,6 +447,10 @@ + basic_machine=m68k-apollo + os=-bsd + ;; ++ aros) ++ basic_machine=i386-pc ++ os=-aros ++ ;; + aux) + basic_machine=m68k-apple + os=-aux +@@ -446,10 +459,22 @@ + basic_machine=ns32k-sequent + os=-dynix + ;; ++ blackfin) ++ basic_machine=bfin-unknown ++ os=-linux ++ ;; ++ blackfin-*) ++ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=-linux ++ ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; ++ cegcc) ++ basic_machine=arm-unknown ++ os=-cegcc ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -478,8 +503,8 @@ + basic_machine=craynv-cray + os=-unicosmp + ;; +- cr16c) +- basic_machine=cr16c-unknown ++ cr16) ++ basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) +@@ -517,6 +542,10 @@ + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ dicos) ++ basic_machine=i686-pc ++ os=-dicos ++ ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp +@@ -671,6 +700,14 @@ + basic_machine=m68k-isi + os=-sysv + ;; ++ m68knommu) ++ basic_machine=m68k-unknown ++ os=-linux ++ ;; ++ m68knommu-*) ++ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=-linux ++ ;; + m88k-omron*) + basic_machine=m88k-omron + ;; +@@ -686,6 +723,10 @@ + basic_machine=i386-pc + os=-mingw32 + ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ os=-mingw32ce ++ ;; + miniframe) + basic_machine=m68000-convergent + ;; +@@ -812,6 +853,14 @@ + basic_machine=i860-intel + os=-osf + ;; ++ parisc) ++ basic_machine=hppa-unknown ++ os=-linux ++ ;; ++ parisc-*) ++ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` ++ os=-linux ++ ;; + pbd) + basic_machine=sparc-tti + ;; +@@ -913,6 +962,10 @@ + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; ++ sde) ++ basic_machine=mipsisa32-sde ++ os=-elf ++ ;; + sei) + basic_machine=mips-sei + os=-seiux +@@ -924,6 +977,9 @@ + basic_machine=sh-hitachi + os=-hms + ;; ++ sh5el) ++ basic_machine=sh5le-unknown ++ ;; + sh64) + basic_machine=sh64-unknown + ;; +@@ -1013,6 +1069,10 @@ + basic_machine=tic6x-unknown + os=-coff + ;; ++ tile*) ++ basic_machine=tile-unknown ++ os=-linux-gnu ++ ;; + tx39) + basic_machine=mipstx39-unknown + ;; +@@ -1088,6 +1148,10 @@ + basic_machine=z8k-unknown + os=-sim + ;; ++ z80-*-coff) ++ basic_machine=z80-unknown ++ os=-sim ++ ;; + none) + basic_machine=none-none + os=-none +@@ -1126,10 +1190,10 @@ + we32k) + basic_machine=we32k-att + ;; +- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) ++ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sparcv9v2) ++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) +@@ -1198,8 +1262,9 @@ + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ ++ | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ +- | -aos* \ ++ | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +@@ -1208,7 +1273,7 @@ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ +- | -chorusos* | -chorusrdb* \ ++ | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ +@@ -1218,7 +1283,7 @@ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos*) ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1348,6 +1413,9 @@ + -zvmoe) + os=-zvmoe + ;; ++ -dicos*) ++ os=-dicos ++ ;; + -none) + ;; + *) +@@ -1370,6 +1438,12 @@ + # system, and we'll never get to this point. + + case $basic_machine in ++ score-*) ++ os=-elf ++ ;; ++ spu-*) ++ os=-elf ++ ;; + *-acorn) + os=-riscix1.2 + ;; +@@ -1379,9 +1453,9 @@ + arm*-semi) + os=-aout + ;; +- c4x-* | tic4x-*) +- os=-coff +- ;; ++ c4x-* | tic4x-*) ++ os=-coff ++ ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 +@@ -1407,6 +1481,9 @@ + m68*-cisco) + os=-aout + ;; ++ mep-*) ++ os=-elf ++ ;; + mips*-cisco) + os=-elf + ;; --- eglibc-2.13.orig/debian/patches/any/local-o_cloexec.diff +++ eglibc-2.13/debian/patches/any/local-o_cloexec.diff @@ -0,0 +1,22 @@ +--- + sysdeps/unix/opendir.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sysdeps/unix/opendir.c ++++ b/sysdeps/unix/opendir.c +@@ -146,6 +146,7 @@ + #ifdef __ASSUME_O_CLOEXEC + # define check_have_o_cloexec(fd) 1 + #else ++#ifdef O_CLOEXEC + static int + check_have_o_cloexec (int fd) + { +@@ -154,6 +155,7 @@ + return __have_o_cloexec > 0; + } + #endif ++#endif + + + DIR * --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-fatalprepare.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-fatalprepare.diff @@ -0,0 +1,46 @@ +--- + linuxthreads/sysdeps/unix/sysv/linux/fatal-prepare.h | 39 +++++++++++++++++++ + 1 file changed, 39 insertions(+) + +--- /dev/null ++++ b/linuxthreads/sysdeps/unix/sysv/linux/fatal-prepare.h +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2003, 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* We have to completely disable cancellation. assert() must not be a ++ cancellation point but the implementation uses write() etc. */ ++#ifdef SHARED ++# include ++# define FATAL_PREPARE \ ++ { \ ++ int (*fp) (int, int *); \ ++ fp = __libc_pthread_functions.ptr_pthread_setcancelstate; \ ++ if (fp != NULL) \ ++ fp (PTHREAD_CANCEL_DISABLE, NULL); \ ++ } ++#else ++# pragma weak pthread_setcancelstate ++# define FATAL_PREPARE \ ++ { \ ++ if (pthread_setcancelstate != NULL) \ ++ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL); \ ++ } ++#endif --- eglibc-2.13.orig/debian/patches/any/submitted-futex_robust_pi.diff +++ eglibc-2.13/debian/patches/any/submitted-futex_robust_pi.diff @@ -0,0 +1,107 @@ +2009-09-27 Aurelien Jarno + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_SET_ROBUST_LIST): Update per-arch conditions when + each feature was introduced. (__ASSUME_FUTEX_LOCK_PI): Ditto. + +--- + ports/sysdeps/unix/sysv/linux/arm/kernel-features.h | 10 +++++++ + ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h | 10 +++++++ + ports/sysdeps/unix/sysv/linux/mips/kernel-features.h | 11 ++++++++ + sysdeps/unix/sysv/linux/kernel-features.h | 26 +++++++++++++------ + 4 files changed, 50 insertions(+), 7 deletions(-) + +--- a/sysdeps/unix/sysv/linux/kernel-features.h ++++ b/sysdeps/unix/sysv/linux/kernel-features.h +@@ -436,9 +436,16 @@ + # define __ASSUME_ATFCTS 1 + #endif + +-/* Support for inter-process robust mutexes was added in 2.6.17. */ +-#if __LINUX_KERNEL_VERSION >= 0x020611 \ +- && (!defined __sh__ || __LINUX_KERNEL_VERSION >= 0x020613) ++/* Support for inter-process robust mutexes was added in 2.6.17 on i386, ++ powerpc and s390. It was added in 2.6.18 on s390 and sparc64, 2.6.19 on ++ ia64 and 2.6.23 on sh. */ ++#if (__LINUX_KERNEL_VERSION >= 0x020611 && defined __i386__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020611 && defined __powerpc__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020612 && defined __s390__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020612 && defined __sparc__ && __arch64__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020611 && defined __x86_64__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020613 && defined __ia64__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020617 && defined __sh__) + # define __ASSUME_SET_ROBUST_LIST 1 + #endif + +@@ -469,8 +474,15 @@ + # define __ASSUME_COMPLETE_READV_WRITEV 1 + #endif + +-/* Support for PI futexes was added in 2.6.18. */ +-#if __LINUX_KERNEL_VERSION >= 0x020612 ++/* Support for PI futexes was added in 2.6.18 on i386, powerpc, s390, sparc64 ++ x86_64. It was added in 2.6.19 on ia64 and in 2.6.23 on sh. */ ++#if (__LINUX_KERNEL_VERSION >= 0x020612 && defined __i386__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020612 && defined __powerpc__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020612 && defined __s390__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020612 && defined __sparc__ && __arch64__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020612 && defined __x86_64__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020613 && defined __ia64__) \ ++ || (__LINUX_KERNEL_VERSION >= 0x020617 && defined __sh__) + # define __ASSUME_FUTEX_LOCK_PI 1 + #endif + +--- a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h ++++ b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h +@@ -51,6 +51,16 @@ + # define __ASSUME_SIGFRAME_V2 1 + #endif + ++/* Support for inter-process robust mutexes was added in 2.6.28. */ ++#if __LINUX_KERNEL_VERSION >= 132636 ++ # define __ASSUME_SET_ROBUST_LIST 1 ++#endif ++ ++/* Support for PI futexes was added in 2.6.28. */ ++#if __LINUX_KERNEL_VERSION >= 132636 ++ # define __ASSUME_FUTEX_LOCK_PI 1 ++#endif ++ + #include_next + + /* These syscalls are not implemented yet for ARM. */ +--- a/ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h ++++ b/ports/sysdeps/unix/sysv/linux/hppa/kernel-features.h +@@ -36,4 +36,14 @@ + # define __ASSUME_LWS_CAS 1 + #endif + ++/* Support for inter-process robust mutexes was added in 2.6.19 */ ++#if __LINUX_KERNEL_VERSION >= 0x020613 ++ # define __ASSUME_SET_ROBUST_LIST 1 ++#endif ++ ++/* Support for PI futexes was added in 2.6.19 */ ++#if __LINUX_KERNEL_VERSION >= 0x020613 ++ # define __ASSUME_FUTEX_LOCK_PI 1 ++#endif ++ + #include_next +--- a/ports/sysdeps/unix/sysv/linux/mips/kernel-features.h ++++ b/ports/sysdeps/unix/sysv/linux/mips/kernel-features.h +@@ -31,4 +31,15 @@ + # define __ASSUME_FCNTL64 1 + #endif + ++/* Support for inter-process robust mutexes was added in 2.6.18. */ ++#if __LINUX_KERNEL_VERSION >= 132626 ++ # define __ASSUME_SET_ROBUST_LIST 1 ++#endif ++ ++ ++/* Support for PI futexes was added in 2.6.18. */ ++#if __LINUX_KERNEL_VERSION >= 132626 ++ # define __ASSUME_FUTEX_LOCK_PI 1 ++#endif ++ + #include_next --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-signals.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-signals.diff @@ -0,0 +1,18 @@ +--- + linuxthreads/signals.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/linuxthreads/signals.c ++++ b/linuxthreads/signals.c +@@ -99,9 +99,11 @@ + if (act->sa_handler != SIG_IGN && act->sa_handler != SIG_DFL + && sig > 0 && sig < NSIG) + { ++#if !defined(__FreeBSD_kernel__) + if (act->sa_flags & SA_SIGINFO) + newact.sa_handler = (__sighandler_t) __pthread_sighandler_rt; + else ++#endif + newact.sa_handler = (__sighandler_t) __pthread_sighandler; + if (old == SIG_IGN || old == SIG_DFL || old == SIG_ERR) + __sighandler[sig].old = (arch_sighandler_t) act->sa_handler; --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-tst-sighandler.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-tst-sighandler.diff @@ -0,0 +1,15 @@ +--- + linuxthreads/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/linuxthreads/Makefile ++++ b/linuxthreads/Makefile +@@ -111,7 +111,7 @@ + ex17 ex18 tst-cancel tst-context bug-sleep \ + tst-cancel1 tst-cancel2 tst-cancel3 tst-cancel4 tst-cancel5 \ + tst-cancel6 tst-cancel7 tst-cancel8 tst-popen tst-popen2 tst-attr1 \ +- tst-stack1 tst-align tst-tsd1 tst-sighandler1 tst-sighandler2 ++ tst-stack1 tst-align tst-tsd1 + test-srcs = tst-signal + # These tests are linked with libc before libpthread + tests-reverse += tst-cancel5 --- eglibc-2.13.orig/debian/patches/any/submitted-bits-fcntl_h-at.diff +++ eglibc-2.13/debian/patches/any/submitted-bits-fcntl_h-at.diff @@ -0,0 +1,427 @@ +2009-11-19 Aurelien Jarno + + * io/fcntl.h: Move AT_* defines to... + * sysdeps/mach/hurd/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: ...here. + * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: ...here. + +2009-11-19 Aurelien Jarno + + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Define AT_* + constants. + * sysdeps/unix/sysv/linux/am33/bits/fcntl.h: Define AT_* + constants. + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Define AT_* + constants. + * sysdeps/unix/sysv/linux/cris/bits/fcntl.h: Define AT_* + constants. + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Define AT_* + constants. + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Define AT_* + constants. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Define AT_* + constants. + +--- + io/fcntl.h | 14 -------------- + ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h | 15 +++++++++++++++ + ports/sysdeps/unix/sysv/linux/am33/bits/fcntl.h | 17 +++++++++++++++++ + ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h | 15 +++++++++++++++ + ports/sysdeps/unix/sysv/linux/cris/bits/fcntl.h | 15 +++++++++++++++ + ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h | 15 +++++++++++++++ + ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h | 15 +++++++++++++++ + ports/sysdeps/unix/sysv/linux/mips/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/mach/hurd/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/i386/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/ia64/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/s390/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/sh/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/sparc/bits/fcntl.h | 15 +++++++++++++++ + sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h | 15 +++++++++++++++ + 16 files changed, 227 insertions(+), 14 deletions(-) + +--- a/io/fcntl.h ++++ b/io/fcntl.h +@@ -102,20 +102,6 @@ + # define SEEK_END 2 /* Seek from end of file. */ + #endif /* XPG */ + +-#ifdef __USE_ATFILE +-# define AT_FDCWD -100 /* Special value used to indicate +- the *at functions should use the +- current working directory. */ +-# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ +-# define AT_REMOVEDIR 0x200 /* Remove directory instead of +- unlinking file. */ +-# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ +-# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount +- traversal. */ +-# define AT_EACCESS 0x200 /* Test access permitted for +- effective IDs, not real IDs. */ +-#endif +- + /* Do the file control operation described by CMD on FD. + The remaining arguments are interpreted depending on CMD. + +--- a/sysdeps/mach/hurd/bits/fcntl.h ++++ b/sysdeps/mach/hurd/bits/fcntl.h +@@ -219,3 +219,18 @@ + # define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ + # define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ + #endif ++ ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif +--- a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h +@@ -234,6 +234,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h +@@ -229,6 +229,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h +@@ -234,6 +234,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h +@@ -255,6 +255,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h +@@ -235,6 +235,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h +@@ -245,6 +245,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h ++++ b/sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h +@@ -249,6 +249,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h +@@ -223,6 +223,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/ports/sysdeps/unix/sysv/linux/am33/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/am33/bits/fcntl.h +@@ -179,3 +179,20 @@ + # define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ + # define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ + #endif ++ ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ ++ +--- a/ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h +@@ -234,6 +234,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/ports/sysdeps/unix/sysv/linux/cris/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/cris/bits/fcntl.h +@@ -182,6 +182,21 @@ + # define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + /* Provide kernel hint to read ahead. */ +--- a/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h +@@ -229,6 +229,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h +@@ -233,6 +233,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU +--- a/ports/sysdeps/unix/sysv/linux/mips/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/mips/bits/fcntl.h +@@ -247,6 +247,21 @@ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ + #endif + ++/* Values for `*at' functions. */ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ ++# define AT_REMOVEDIR 0x200 /* Remove directory instead of ++ unlinking file. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount ++ traversal. */ ++# define AT_EACCESS 0x200 /* Test access permitted for ++ effective IDs, not real IDs. */ ++#endif ++ + __BEGIN_DECLS + + #ifdef __USE_GNU --- eglibc-2.13.orig/debian/patches/any/cvs-getaddrinfo-single-lookup.diff +++ eglibc-2.13/debian/patches/any/cvs-getaddrinfo-single-lookup.diff @@ -0,0 +1,48 @@ +2011-06-27 Ulrich Drepper + + [BZ #12350] + * nscd/aicache.c (addhstaiX): Restore only RES_USE_INET6 + bit from old_res_options. + +2011-05-29 Ulrich Drepper + + [BZ #12350] + * sysdeps/posix/getaddrinfo.c (gethosts): Restore only RES_USE_IENT6 + bit from old_res_options. + (gaih_inet): Likewise. + +diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +index 5ddda88..1e017b2 100644 +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -207,7 +207,7 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp, + if (herrno == NETDB_INTERNAL) \ + { \ + __set_h_errno (herrno); \ +- _res.options = old_res_options; \ ++ _res.options |= old_res_options & RES_USE_INET6; \ + return -EAI_SYSTEM; \ + } \ + if (herrno == TRY_AGAIN) \ +@@ -1015,7 +1015,7 @@ gaih_inet (const char *name, const struct gaih_service *service, + nip = nip->next; + } + +- _res.options = old_res_options; ++ _res.options |= old_res_options & RES_USE_INET6; + + if (no_data != 0 && no_inet6_data != 0) + { +diff --git a/nscd/aicache.c b/nscd/aicache.c +index 3190a13..6c8d83a 100644 +--- a/nscd/aicache.c ++++ b/nscd/aicache.c +@@ -534,7 +534,7 @@ next_nip: + } + + out: +- _res.options = old_res_options; ++ _res.options |= old_res_options & RES_USE_INET6; + + if (dataset != NULL && !alloca_used) + { --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-thread_self.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-thread_self.diff @@ -0,0 +1,22 @@ +2009-01-21 Aurelien Jarno + + * linuxthreads/descr.h (thread_self): Remove static to prevent + warning. + +--- + linuxthreads/descr.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/linuxthreads/descr.h ++++ b/linuxthreads/descr.h +@@ -260,8 +260,8 @@ + + extern pthread_descr __pthread_find_self (void) __attribute__ ((pure)); + +-static inline pthread_descr thread_self (void) __attribute__ ((pure)); +-static inline pthread_descr thread_self (void) ++extern inline pthread_descr thread_self (void) __attribute__ ((pure)); ++extern inline pthread_descr thread_self (void) + { + #ifdef THREAD_SELF + return THREAD_SELF; --- eglibc-2.13.orig/debian/patches/any/submitted-nptl-invalid-td.patch +++ eglibc-2.13/debian/patches/any/submitted-nptl-invalid-td.patch @@ -0,0 +1,22 @@ +2010-02-27 Aurelien Jarno + + * pthreadP.h(INVALID_TD_P, INVALID_NOT_TERMINATED_TD_P): detect + NULL pointers. + +--- + nptl/pthreadP.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/nptl/pthreadP.h ++++ b/nptl/pthreadP.h +@@ -207,8 +207,8 @@ + /* Simplified test. This will not catch all invalid descriptors but + is better than nothing. And if the test triggers the thread + descriptor is guaranteed to be invalid. */ +-# define INVALID_TD_P(pd) __builtin_expect ((pd)->tid <= 0, 0) +-# define INVALID_NOT_TERMINATED_TD_P(pd) __builtin_expect ((pd)->tid < 0, 0) ++# define INVALID_TD_P(pd) __builtin_expect (!pd || ((pd)->tid <= 0), 0) ++# define INVALID_NOT_TERMINATED_TD_P(pd) __builtin_expect (!pd || ((pd)->tid < 0), 0) + #endif + + --- eglibc-2.13.orig/debian/patches/any/submitted-glob_h-ifdef.diff +++ eglibc-2.13/debian/patches/any/submitted-glob_h-ifdef.diff @@ -0,0 +1,18 @@ +2011-08-30 Aurelien Jarno + + * posix/glob.h: Use #if defined to not receive warnings about + undefined symbols. + +diff --git a/posix/glob.h b/posix/glob.h +index 89a1886..632ea91 100644 +--- a/posix/glob.h ++++ b/posix/glob.h +@@ -143,7 +143,7 @@ typedef struct + } glob64_t; + #endif + +-#if __USE_FILE_OFFSET64 && __GNUC__ < 2 ++#if defined __USE_FILE_OFFSET64 && __GNUC__ < 2 + # define glob glob64 + # define globfree globfree64 + #endif --- eglibc-2.13.orig/debian/patches/any/local-fhs-nscd.diff +++ eglibc-2.13/debian/patches/any/local-fhs-nscd.diff @@ -0,0 +1,21 @@ +--- + nscd/nscd.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/nscd/nscd.h ++++ b/nscd/nscd.h +@@ -103,10 +103,10 @@ + + + /* Paths of the file for the persistent storage. */ +-#define _PATH_NSCD_PASSWD_DB "/var/db/nscd/passwd" +-#define _PATH_NSCD_GROUP_DB "/var/db/nscd/group" +-#define _PATH_NSCD_HOSTS_DB "/var/db/nscd/hosts" +-#define _PATH_NSCD_SERVICES_DB "/var/db/nscd/services" ++#define _PATH_NSCD_PASSWD_DB "/var/cache/nscd/passwd" ++#define _PATH_NSCD_GROUP_DB "/var/cache/nscd/group" ++#define _PATH_NSCD_HOSTS_DB "/var/cache/nscd/hosts" ++#define _PATH_NSCD_SERVICES_DB "/var/cache/nscd/services" + + /* Path used when not using persistent storage. */ + #define _PATH_NSCD_XYZ_DB_TMP "/var/run/nscd/dbXXXXXX" --- eglibc-2.13.orig/debian/patches/any/local-disable-test-tgmath2.diff +++ eglibc-2.13/debian/patches/any/local-disable-test-tgmath2.diff @@ -0,0 +1,15 @@ +--- + math/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/math/Makefile ++++ b/math/Makefile +@@ -92,7 +92,7 @@ + # Rules for the test suite. + tests = test-matherr test-fenv basic-test \ + test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret \ +- bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int test-tgmath2 \ ++ bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int \ + test-dbl-wrap + tests-$(OPTION_EGLIBC_LIBM_BIG) += atest-exp atest-sincos atest-exp2 + # We do the `long double' tests only if this data type is available and --- eglibc-2.13.orig/debian/patches/any/local-sysctl.diff +++ eglibc-2.13/debian/patches/any/local-sysctl.diff @@ -0,0 +1,81 @@ +--- linuxthreads/sysdeps/unix/sysv/linux/smp.h.orig ++++ linuxthreads/sysdeps/unix/sysv/linux/smp.h +@@ -25,24 +25,6 @@ + static inline int + is_smp_system (void) + { +- static const int sysctl_args[] = { CTL_KERN, KERN_VERSION }; +- char buf[512]; +- size_t reslen = sizeof (buf); +- +- /* Try reading the number using `sysctl' first. */ +- if (__sysctl ((int *) sysctl_args, +- sizeof (sysctl_args) / sizeof (sysctl_args[0]), +- buf, &reslen, NULL, 0) < 0) +- { +- /* This was not successful. Now try reading the /proc filesystem. */ +- int fd = __open ("/proc/sys/kernel/version", O_RDONLY); +- if (__builtin_expect (fd, 0) == -1 +- || (reslen = __read (fd, buf, sizeof (buf))) <= 0) +- /* This also didn't work. We give up and say it's a UP machine. */ +- buf[0] = '\0'; +- +- __close (fd); +- } +- +- return strstr (buf, "SMP") != NULL; ++ /* Assume all machines are SMP and/or CMT and/or SMT. */ ++ return 1; + } +--- ports/sysdeps/unix/sysv/linux/arm/ioperm.c.orig ++++ ports/sysdeps/unix/sysv/linux/arm/ioperm.c +@@ -49,6 +49,8 @@ + + #define PATH_ARM_SYSTYPE "/etc/arm_systype" + #define PATH_CPUINFO "/proc/cpuinfo" ++#define PATH_PORTBASE "/proc/bus/isa/portbase" ++#define PATH_PORTSHIFT "/proc/bus/isa/portshift" + + #define MAX_PORT 0x10000 + +@@ -100,15 +102,25 @@ + { + char systype[256]; + int i, n; +- static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; +- static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; ++ FILE * fp; ++ + size_t len = sizeof(io.base); + +- if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) +- && ! sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0)) ++ if ((fp = fopen (PATH_PORTBASE, "r"))) + { +- io.initdone = 1; +- return 0; ++ n = fscanf (fp, "%li", &io.io_base); ++ fclose(fp); ++ ++ if (n == 1 && (fp = fopen(PATH_PORTSHIFT, "r"))) ++ { ++ n = fscanf (fp, "%i", &io.shift); ++ fclose(fp); ++ if (n == 1) ++ { ++ io.initdone = 1; ++ return 0; ++ } ++ } + } + + n = readlink (PATH_ARM_SYSTYPE, systype, sizeof (systype) - 1); +@@ -127,8 +139,6 @@ + } + else + { +- FILE * fp; +- + fp = fopen (PATH_CPUINFO, "r"); + if (! fp) + return -1; --- eglibc-2.13.orig/debian/patches/any/local-linuxthreads-stacksize.diff +++ eglibc-2.13/debian/patches/any/local-linuxthreads-stacksize.diff @@ -0,0 +1,15 @@ +--- + linuxthreads/pthread.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/linuxthreads/pthread.c ++++ b/linuxthreads/pthread.c +@@ -429,6 +429,8 @@ + #ifdef FLOATING_STACKS + if (limit.rlim_cur == RLIM_INFINITY) + limit.rlim_cur = ARCH_STACK_MAX_SIZE; ++ if (limit.rlim_cur > 4 * ARCH_STACK_MAX_SIZE) ++ limit.rlim_cur = 4 * ARCH_STACK_MAX_SIZE; + # ifdef NEED_SEPARATE_REGISTER_STACK + max_stack = limit.rlim_cur / 2; + # else --- eglibc-2.13.orig/debian/patches/ia64/submitted-libm.diff +++ eglibc-2.13/debian/patches/ia64/submitted-libm.diff @@ -0,0 +1,738 @@ +2009-08-01 Aurelien Jarno + + * sysdeps/ia64/fpu/libm_error_codes.h: Add error codes for + fmodl_infinity, fmod_infinity, fmodf_infinity, cosl_infinity, + cos_infinity, cosf_infinity, sinl_infinity, sin_infinity, + sinf_infinity, tanl_infinity, tan_infinity, and tanf_infinity. + * sysdeps/ia64/fpu/libm_error.c(__libm_error_support): Pole errors + for lgamma and pow should set errno to ERANGE, not EDOM. Add code + to handle fmodl_infinity, fmod_infinity, fmodf_infinity, + cosl_infinity, cos_infinity, cosf_infinity, sinl_infinity, + sin_infinity,sinf_infinity, tanl_infinity, tan_infinity, and + tanf_infinity. + * sysdeps/ia64/fpu/e_fmod.S: check for fmod(inf, y). + * sysdeps/ia64/fpu/e_fmodf.S: check for fmodf(inf, y). + * sysdeps/ia64/fpu/e_fmodl.S: check for fmodl(inf, y). + * sysdeps/ia64/fpu/s_fcos.S: check for fcos(inf) and fsin(inf). + * sysdeps/ia64/fpu/s_fcosf.S: check for fcosf(inf) and fsinf(inf). + * sysdeps/ia64/fpu/s_fcosl.S: check for fcosl(inf) and fsinl(inf). + * sysdeps/ia64/fpu/s_tan.S: check for ftan(inf). + * sysdeps/ia64/fpu/s_tanf.S: check for ftanf(inf). + * sysdeps/ia64/fpu/s_tanl.S: check for ftanl(inf). + +--- + sysdeps/ia64/fpu/e_fmod.S | 8 +-- + sysdeps/ia64/fpu/e_fmodf.S | 8 +-- + sysdeps/ia64/fpu/e_fmodl.S | 12 ++++- + sysdeps/ia64/fpu/libm_error.c | 75 +++++++++++++++++++++++++++++-- + sysdeps/ia64/fpu/libm_error_codes.h | 6 ++ + sysdeps/ia64/fpu/s_cos.S | 82 +++++++++++++++++++++++++++++++++- + sysdeps/ia64/fpu/s_cosf.S | 85 +++++++++++++++++++++++++++++++++--- + sysdeps/ia64/fpu/s_cosl.S | 80 ++++++++++++++++++++++++++++++++- + sysdeps/ia64/fpu/s_tan.S | 15 +++--- + sysdeps/ia64/fpu/s_tanf.S | 6 +- + sysdeps/ia64/fpu/s_tanl.S | 21 ++++++-- + 11 files changed, 355 insertions(+), 43 deletions(-) + +--- a/sysdeps/ia64/fpu/e_fmod.S ++++ b/sysdeps/ia64/fpu/e_fmod.S +@@ -75,8 +75,8 @@ + // + // Special cases + //==================================================================== +-// b=+/-0: return NaN, call libm_error_support +-// a=+/-Inf, a=NaN or b=NaN: return NaN ++// a=+/-Inf or b=+/-0: return NaN, call libm_error_support ++// a=NaN or b=NaN: return NaN + // + // Registers used + //==================================================================== +@@ -407,13 +407,13 @@ + nop.m 999 + // also set Denormal flag if necessary + (p8) fma.s0 f9=f9,f1,f0 +- nop.i 999 ;; ++(p8) mov GR_Parameter_TAG=274 ;; + } + + { .mfb + nop.m 999 + (p8) fma.d.s0 f8=f8,f1,f0 +- nop.b 999 ;; ++(p8) br.spnt __libm_error_region;; + } + + { .mfb +--- a/sysdeps/ia64/fpu/e_fmodf.S ++++ b/sysdeps/ia64/fpu/e_fmodf.S +@@ -75,8 +75,8 @@ + + // Special cases + //==================================================================== +-// b=+/-0: return NaN, call libm_error_support +-// a=+/-Inf, a=NaN or b=NaN: return NaN ++// a=+/-Inf or b=+/-0: return NaN, call libm_error_support ++// a=NaN or b=NaN: return NaN + + // Registers used + //==================================================================== +@@ -413,13 +413,13 @@ + nop.m 999 + // also set Denormal flag if necessary + (p8) fma.s0 f9=f9,f1,f0 +- nop.i 999 ;; ++(p8) mov GR_Parameter_TAG=275 ;; + } + + { .mfb + nop.m 999 + (p8) fma.s.s0 f8=f8,f1,f0 +- nop.b 999 ;; ++(p8) br.spnt __libm_error_region;; + } + + { .mfb +--- a/sysdeps/ia64/fpu/e_fmodl.S ++++ b/sysdeps/ia64/fpu/e_fmodl.S +@@ -484,6 +484,11 @@ + (p8) cmp.ne p7, p0 = GR_SIG_B, r0 + nop.i 0 + } ++{ .mfi ++ nop.m 0 ++ fmerge.s FR_X = f8, f8 ++ nop.i 0 ++} + ;; + + { .mfi +@@ -509,7 +514,12 @@ + { .mfb + nop.m 0 + (p9) frcpa.s0 f8, p7 = f8, f9 +- br.ret.sptk b0 ++ (p9) br.ret.sptk b0 ++} ++{ .mmb ++ alloc GR_ARPFS = ar.pfs, 1, 4, 4, 0 ++ mov GR_Parameter_TAG = 273 ++ br.sptk __libm_error_region + } + ;; + +--- a/sysdeps/ia64/fpu/libm_error.c ++++ b/sysdeps/ia64/fpu/libm_error.c +@@ -708,15 +708,18 @@ + case gammal_negative: + case gamma_negative: + case gammaf_negative: +- case lgammal_negative: +- case lgamma_negative: +- case lgammaf_negative: + case tgammal_negative: + case tgamma_negative: + case tgammaf_negative: + { + ERRNO_DOMAIN; break; + } ++ case lgammal_negative: ++ case lgamma_negative: ++ case lgammaf_negative: ++ { ++ ERRNO_RANGE; break; ++ } + case ldexpl_overflow: + case ldexpl_underflow: + case ldexp_overflow: +@@ -1081,17 +1084,17 @@ + case powl_zero_to_negative: + /* 0**neg */ + { +- ERRNO_DOMAIN; break; ++ ERRNO_RANGE; break; + } + case pow_zero_to_negative: + /* 0**neg */ + { +- ERRNO_DOMAIN; break; ++ ERRNO_RANGE; break; + } + case powf_zero_to_negative: + /* 0**neg */ + { +- ERRNO_DOMAIN; break; ++ ERRNO_RANGE; break; + } + case powl_neg_to_non_integer: + /* neg**non_integral */ +@@ -1307,6 +1310,21 @@ + { + ERRNO_DOMAIN; break; + } ++ case fmodl_infinity: ++ /* fmodl(inf,y) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case fmod_infinity: ++ /* fmod(inf,y) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case fmodf_infinity: ++ /* fmodf(inf,y) */ ++ { ++ ERRNO_DOMAIN; break; ++ } + case coshl_overflow: + /* coshl overflows */ + { +@@ -1373,6 +1391,51 @@ + { + ERRNO_RANGE; break; + } ++ case cosl_infinity: ++ /* cosl(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case cos_infinity: ++ /* cos(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case cosf_infinity: ++ /* cosf(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case sinl_infinity: ++ /* sinl(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case sin_infinity: ++ /* sin(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case sinf_infinity: ++ /* sinf(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case tanl_infinity: ++ /* tanl(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case tan_infinity: ++ /* tan(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } ++ case tanf_infinity: ++ /* tanf(inf) */ ++ { ++ ERRNO_DOMAIN; break; ++ } + default: + break; + } +--- a/sysdeps/ia64/fpu/libm_error_codes.h ++++ b/sysdeps/ia64/fpu/libm_error_codes.h +@@ -195,7 +195,11 @@ + nextafterl_underflow, nextafter_underflow, + nextafterf_underflow, /* 267, 268, 269 */ + nexttowardl_underflow, nexttoward_underflow, +- nexttowardf_underflow /* 270, 271, 272 */ ++ nexttowardf_underflow, /* 270, 271, 272 */ ++ fmodl_infinity, fmod_infinity, fmodf_infinity, /* 273, 274, 275 */ ++ cosl_infinity, cos_infinity, cosf_infinity, /* 276, 277, 278 */ ++ sinl_infinity, sin_infinity, sinf_infinity, /* 279, 280, 281 */ ++ tanl_infinity, tan_infinity, tanf_infinity, /* 282, 283, 284 */ + } error_types; + + #define LIBM_ERROR __libm_error_support +--- a/sysdeps/ia64/fpu/s_cos.S ++++ b/sysdeps/ia64/fpu/s_cos.S +@@ -174,7 +174,7 @@ + //============================================================== + // general input registers: + // r14 -> r26 +-// r32 -> r35 ++// r32 -> r36 + + // predicate registers used: + // p6 -> p11 +@@ -260,6 +260,10 @@ + GR_SAVE_GP = r35 + GR_SAVE_r_sincos = r36 + ++GR_Parameter_X = r37 ++GR_Parameter_Y = r38 ++GR_Parameter_RESULT = r39 ++GR_Parameter_TAG = r40 + + RODATA + +@@ -474,7 +478,7 @@ + // 0x1001a is register_bias + 27. + // So if f8 >= 2^27, go to large argument routines + { .mfi +- alloc r32 = ar.pfs, 1, 4, 0, 0 ++ alloc r32 = ar.pfs, 1, 4, 4, 0 + fclass.m p11,p0 = f8, 0x0b // Test for x=unorm + mov sincos_GR_all_ones = -1 // For "inexect" constant create + } +@@ -681,20 +685,39 @@ + ////////// x = 0/Inf/NaN path ////////////////// + _SINCOS_SPECIAL_ARGS: + .pred.rel "mutex",p8,p9 ++ ++{ .mfi ++ nop.m 999 ++ fclass.m.unc p7,p0 = f8, 0x23 // is x +/- inf? ++ nop.i 999;; ++} ++ ++{ .mfi ++ nop.m 999 ++(p7) fmerge.s f9 = f8,f8 ++ nop.i 999 ++} ++ + // sin(+/-0) = +/-0 + // sin(Inf) = NaN + // sin(NaN) = NaN + { .mfi + nop.m 999 + (p8) fma.d.s0 f8 = f8, f0, f0 // sin(+/-0,NaN,Inf) +- nop.i 999 ++(p8) mov GR_Parameter_TAG = 280 + } + // cos(+/-0) = 1.0 + // cos(Inf) = NaN + // cos(NaN) = NaN +-{ .mfb ++{ .mfi + nop.m 999 + (p9) fma.d.s0 f8 = f8, f0, f1 // cos(+/-0,NaN,Inf) ++(p9) mov GR_Parameter_TAG = 277 ++} ++ ++{ .mbb ++ nop.m 999 ++(p7) br.cond.spnt __libm_error_region + br.ret.sptk b0 // Exit for x = 0/Inf/NaN path + };; + +@@ -766,3 +789,54 @@ + .type __libm_cos_large#,@function + .global __libm_cos_large# + ++LOCAL_LIBM_ENTRY(__libm_error_region) ++.prologue ++{ .mfi ++ add GR_Parameter_Y=-32,sp // Parameter 2 value ++ nop.f 0 ++.save ar.pfs,GR_SAVE_PFS ++ mov GR_SAVE_PFS=ar.pfs // Save ar.pfs ++} ++{ .mfi ++.fframe 64 ++ add sp=-64,sp // Create new stack ++ nop.f 0 ++ mov GR_SAVE_GP=gp // Save gp ++};; ++{ .mmi ++ stfd [GR_Parameter_Y] = f1,16 // STORE Parameter 2 on stack ++ add GR_Parameter_X = 16,sp // Parameter 1 address ++.save b0, GR_SAVE_B0 ++ mov GR_SAVE_B0=b0 // Save b0 ++};; ++.body ++{ .mib ++ stfd [GR_Parameter_X] = f9 // STORE Parameter 1 on stack ++ add GR_Parameter_RESULT = 0,GR_Parameter_Y // Parameter 3 address ++ nop.b 0 ++} ++{ .mib ++ stfd [GR_Parameter_Y] = f8 // STORE Parameter 3 on stack ++ add GR_Parameter_Y = -16,GR_Parameter_Y ++ br.call.sptk b0=__libm_error_support# // Call error handling function ++};; ++{ .mmi ++ add GR_Parameter_RESULT = 48,sp ++ nop.m 0 ++ nop.i 0 ++};; ++{ .mmi ++ ldfd f8 = [GR_Parameter_RESULT] // Get return result off stack ++.restore sp ++ add sp = 64,sp // Restore stack pointer ++ mov b0 = GR_SAVE_B0 // Restore return address ++};; ++{ .mib ++ mov gp = GR_SAVE_GP // Restore gp ++ mov ar.pfs = GR_SAVE_PFS // Restore ar.pfs ++ br.ret.sptk b0 // Return ++};; ++ ++LOCAL_LIBM_END(__libm_error_region) ++.type __libm_error_support#,@function ++.global __libm_error_support# +--- a/sysdeps/ia64/fpu/s_cosf.S ++++ b/sysdeps/ia64/fpu/s_cosf.S +@@ -171,7 +171,7 @@ + //============================================================== + // general input registers: + // r14 -> r19 +-// r32 -> r45 ++// r32 -> r43 + + // predicate registers used: + // p6 -> p14 +@@ -260,6 +260,11 @@ + GR_SAVE_B0 = r42 + GR_SAVE_GP = r43 + ++GR_Parameter_X = r44 ++GR_Parameter_Y = r45 ++GR_Parameter_RESULT = r46 ++GR_Parameter_TAG = r47 ++ + RODATA + .align 16 + +@@ -389,7 +394,7 @@ + GLOBAL_IEEE754_ENTRY(sinf) + + { .mlx +- alloc r32 = ar.pfs,1,13,0,0 ++ alloc r32 = ar.pfs,1,11,4,0 + movl sincosf_GR_sig_inv_pi_by_16 = 0xA2F9836E4E44152A //signd of 16/pi + } + { .mlx +@@ -413,7 +418,7 @@ + GLOBAL_IEEE754_ENTRY(cosf) + + { .mlx +- alloc r32 = ar.pfs,1,13,0,0 ++ alloc r32 = ar.pfs,1,11,4,0 + movl sincosf_GR_sig_inv_pi_by_16 = 0xA2F9836E4E44152A //signd of 16/pi + } + { .mlx +@@ -641,20 +646,39 @@ + ////////// x = 0/Inf/NaN path ////////////////// + _SINCOSF_SPECIAL_ARGS: + .pred.rel "mutex",p8,p9 ++ ++{ .mfi ++ nop.m 999 ++ fclass.m.unc p7,p0 = f8, 0x23 // is x +/- inf? ++ nop.i 999;; ++} ++ ++{ .mfi ++ nop.m 999 ++(p7) fmerge.s f9 = f8,f8 ++ nop.i 999 ++} ++ + // sinf(+/-0) = +/-0 + // sinf(Inf) = NaN + // sinf(NaN) = NaN + { .mfi + nop.m 999 + (p8) fma.s.s0 f8 = f8, f0, f0 // sinf(+/-0,NaN,Inf) +- nop.i 999 ++(p8) mov GR_Parameter_TAG = 281 + } + // cosf(+/-0) = 1.0 + // cosf(Inf) = NaN + // cosf(NaN) = NaN +-{ .mfb ++{ .mfi + nop.m 999 + (p9) fma.s.s0 f8 = f8, f0, f1 // cosf(+/-0,NaN,Inf) ++(p9) mov GR_Parameter_TAG = 278 ++};; ++ ++{ .mbb ++ nop.m 999 ++(p7) br.cond.spnt __libm_error_region + br.ret.sptk b0 // Exit for x = 0/Inf/NaN path + };; + +@@ -715,3 +739,54 @@ + .type __libm_cos_large#, @function + .global __libm_cos_large# + ++LOCAL_LIBM_ENTRY(__libm_error_region) ++.prologue ++{ .mfi ++ add GR_Parameter_Y=-32,sp // Parameter 2 value ++ nop.f 0 ++.save ar.pfs,GR_SAVE_PFS ++ mov GR_SAVE_PFS=ar.pfs // Save ar.pfs ++} ++{ .mfi ++.fframe 64 ++ add sp=-64,sp // Create new stack ++ nop.f 0 ++ mov GR_SAVE_GP=gp // Save gp ++};; ++{ .mmi ++ stfd [GR_Parameter_Y] = f1,16 // STORE Parameter 2 on stack ++ add GR_Parameter_X = 16,sp // Parameter 1 address ++.save b0, GR_SAVE_B0 ++ mov GR_SAVE_B0=b0 // Save b0 ++};; ++.body ++{ .mib ++ stfd [GR_Parameter_X] = f9 // STORE Parameter 1 on stack ++ add GR_Parameter_RESULT = 0,GR_Parameter_Y // Parameter 3 address ++ nop.b 0 ++} ++{ .mib ++ stfd [GR_Parameter_Y] = f8 // STORE Parameter 3 on stack ++ add GR_Parameter_Y = -16,GR_Parameter_Y ++ br.call.sptk b0=__libm_error_support# // Call error handling function ++};; ++{ .mmi ++ add GR_Parameter_RESULT = 48,sp ++ nop.m 0 ++ nop.i 0 ++};; ++{ .mmi ++ ldfd f8 = [GR_Parameter_RESULT] // Get return result off stack ++.restore sp ++ add sp = 64,sp // Restore stack pointer ++ mov b0 = GR_SAVE_B0 // Restore return address ++};; ++{ .mib ++ mov gp = GR_SAVE_GP // Restore gp ++ mov ar.pfs = GR_SAVE_PFS // Restore ar.pfs ++ br.ret.sptk b0 // Return ++};; ++ ++LOCAL_LIBM_END(__libm_error_region) ++.type __libm_error_support#,@function ++.global __libm_error_support# +--- a/sysdeps/ia64/fpu/s_cosl.S ++++ b/sysdeps/ia64/fpu/s_cosl.S +@@ -747,12 +747,16 @@ + GR_SAVE_GP = r40 + GR_SAVE_PFS = r41 + ++GR_Parameter_X = r59 ++GR_Parameter_Y = r60 ++GR_Parameter_RESULT = r61 ++GR_Parameter_TAG = r62 + + .section .text + + GLOBAL_IEEE754_ENTRY(sinl) + { .mlx +- alloc r32 = ar.pfs,0,27,2,0 ++ alloc r32 = ar.pfs,1,26,4,0 + movl GR_sig_inv_pi = 0xa2f9836e4e44152a // significand of 1/pi + } + { .mlx +@@ -777,7 +781,7 @@ + + GLOBAL_IEEE754_ENTRY(cosl) + { .mlx +- alloc r32 = ar.pfs,0,27,2,0 ++ alloc r32 = ar.pfs,1,26,4,0 + movl GR_sig_inv_pi = 0xa2f9836e4e44152a // significand of 1/pi + } + { .mlx +@@ -2278,13 +2282,31 @@ + SINCOSL_SPECIAL: + { .mfb + nop.m 999 ++ fclass.m.unc p6,p0 = f8, 0x23 // is x +/- inf? ++ nop.b 999;; ++} ++ ++{ .mfi ++ nop.m 999 ++(p6) fmerge.s f9 = f8,f8 ++(p6) cmp.eq.unc p7, p8 = 0x1, GR_Sin_or_Cos;; ++} ++ ++{ .mmf ++(p7) mov GR_Parameter_TAG = 276 // (cosl) ++(p8) mov GR_Parameter_TAG = 279 // (sinl) + // + // Path for Arg = +/- QNaN, SNaN, Inf + // Invalid can be raised. SNaNs + // become QNaNs + // + fmpy.s0 FR_Result = FR_Input_X, f0 +- br.ret.sptk b0 ;; ++} ++ ++{ .mbb ++ nop.m 999 ++(p6) br.cond.spnt __libm_error_region ++ br.ret.sptk b0 ;; + } + + GLOBAL_IEEE754_END(cosl) +@@ -2363,3 +2385,55 @@ + LOCAL_LIBM_END(__libm_callout) + .type __libm_pi_by_2_reduce#,@function + .global __libm_pi_by_2_reduce# ++ ++LOCAL_LIBM_ENTRY(__libm_error_region) ++.prologue ++{ .mfi ++ add GR_Parameter_Y=-32,sp // Parameter 2 value ++ nop.f 0 ++.save ar.pfs,GR_SAVE_PFS ++ mov GR_SAVE_PFS=ar.pfs // Save ar.pfs ++} ++{ .mfi ++.fframe 64 ++ add sp=-64,sp // Create new stack ++ nop.f 0 ++ mov GR_SAVE_GP=gp // Save gp ++};; ++{ .mmi ++ stfd [GR_Parameter_Y] = f1,16 // STORE Parameter 2 on stack ++ add GR_Parameter_X = 16,sp // Parameter 1 address ++.save b0, GR_SAVE_B0 ++ mov GR_SAVE_B0=b0 // Save b0 ++};; ++.body ++{ .mib ++ stfd [GR_Parameter_X] = f9 // STORE Parameter 1 on stack ++ add GR_Parameter_RESULT = 0,GR_Parameter_Y // Parameter 3 address ++ nop.b 0 ++} ++{ .mib ++ stfd [GR_Parameter_Y] = f8 // STORE Parameter 3 on stack ++ add GR_Parameter_Y = -16,GR_Parameter_Y ++ br.call.sptk b0=__libm_error_support# // Call error handling function ++};; ++{ .mmi ++ add GR_Parameter_RESULT = 48,sp ++ nop.m 0 ++ nop.i 0 ++};; ++{ .mmi ++ ldfd f8 = [GR_Parameter_RESULT] // Get return result off stack ++.restore sp ++ add sp = 64,sp // Restore stack pointer ++ mov b0 = GR_SAVE_B0 // Restore return address ++};; ++{ .mib ++ mov gp = GR_SAVE_GP // Restore gp ++ mov ar.pfs = GR_SAVE_PFS // Restore ar.pfs ++ br.ret.sptk b0 // Return ++};; ++ ++LOCAL_LIBM_END(__libm_error_region) ++.type __libm_error_support#,@function ++.global __libm_error_support# +--- a/sysdeps/ia64/fpu/s_tan.S ++++ b/sysdeps/ia64/fpu/s_tan.S +@@ -348,15 +348,10 @@ + (p6) br.ret.spnt b0 ;; // Exit for x=0 (tan only) + } + +-{ .mfi ++{ .mmi + ldfpd tan_P14,tan_P15 = [tan_AD],16 +-(p7) frcpa.s0 f8,p9=f0,f0 // Set qnan indef if x=inf +- mov tan_GR_10009 = 0x10009 +-} +-{ .mib + ldfpd tan_Q8,tan_Q9 = [tan_ADQ],16 +- nop.i 999 +-(p7) br.ret.spnt b0 ;; // Exit for x=inf ++ mov tan_GR_10009 = 0x10009;; + } + + { .mfi +@@ -384,6 +379,12 @@ + fma.s1 TAN_W_2TO64_RSH = tan_NORM_f8,TAN_INV_PI_BY_2_2TO64,TAN_RSHF_2TO64 + };; + ++{ .mfb ++(p7) mov GR_Parameter_Tag = 283 // (tan) ++(p7) frcpa.s0 f8,p9=f0,f0 // Set qnan indef if x=inf ++(p7) br.cond.spnt __libm_error_region ;; // call error support if tan(+-inf) ++} ++ + { .mmf + ldfpd tan_P10,tan_P11 = [tan_AD],16 + and tan_exp = tan_GR_17_ones, tan_signexp +--- a/sysdeps/ia64/fpu/s_tanf.S ++++ b/sysdeps/ia64/fpu/s_tanf.S +@@ -301,11 +301,11 @@ + { .mfi + cmp.ge p6, p0 = rSignMask, rExpCut // p6 = (E => 0x10009) + (p8) frcpa.s0 f8, p0 = f0, f0 // Set qnan indef if x=inf +- mov GR_Parameter_Tag = 227 // (cotf) ++ mov GR_Parameter_Tag = 284 // (tanf) + } + { .mbb + ldfe fPiby2 = [rCoeffB], 16 +-(p8) br.ret.spnt b0 // Exit for x=inf ++(p8) br.cond.spnt __libm_error_region // call error support if tanf(+-0) + (p6) br.cond.spnt Huge_Argument // Branch if |x|>=2^10 + } + ;; +@@ -313,7 +313,7 @@ + { .mfi + nop.m 0 + (p11) fclass.m.unc p6, p0 = f8, 0x07 // Test for x=0 (for cotf) +- nop.i 0 ++ mov GR_Parameter_Tag = 227 // (cotf) + } + { .mfb + nop.m 0 +--- a/sysdeps/ia64/fpu/s_tanl.S ++++ b/sysdeps/ia64/fpu/s_tanl.S +@@ -3072,21 +3072,32 @@ + + { .mfi + nop.m 999 +-(p6) fclass.m p6, p7 = f8, 0x7 // Test for zero (cotl only) ++(p6) fclass.m.unc p6, p0 = f8, 0x7 // Test for zero (cotl only) ++ nop.i 999 ++} ++;; ++{ .mfi ++ nop.m 999 ++(p7) fclass.m.unc p7, p0 = f8, 0x23 // Test for inf (tanl only) + nop.i 999 + } + ;; + + .pred.rel "mutex", p6, p7 +-{ .mfi ++{ .mfb + (p6) mov GR_Parameter_Tag = 225 // (cotl) + (p6) frcpa.s0 f8, p0 = f1, f8 // cotl(+-0) = +-Inf +- nop.i 999 ++(p6) br.cond.spnt __libm_error_region;; ++} ++{ .mfb ++(p7) mov GR_Parameter_Tag = 282 // (tanl) ++ fmpy.s0 f8 = f8, f0 ++(p7) br.cond.spnt __libm_error_region;; + } + { .mfb + nop.m 999 +-(p7) fmpy.s0 f8 = f8, f0 +-(p7) br.ret.sptk b0 ++ nop.f 999 ++ br.ret.sptk b0 + } + ;; + --- eglibc-2.13.orig/debian/patches/ia64/submitted-sysconf.diff +++ eglibc-2.13/debian/patches/ia64/submitted-sysconf.diff @@ -0,0 +1,20 @@ +2009-05-16 Aurelien Jarno + + * sysdeps/unix/sysv/linux/ia64/sysconf.c (__sysconf): use + _POSIX_VERSION instead of 200112L. + +--- + sysdeps/unix/sysv/linux/ia64/sysconf.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/unix/sysv/linux/ia64/sysconf.c ++++ b/sysdeps/unix/sysv/linux/ia64/sysconf.c +@@ -33,7 +33,7 @@ + __sysconf (int name) + { + if (name == _SC_CPUTIME || name == _SC_THREAD_CPUTIME) +- return has_cpuclock () ? 200112L : -1; ++ return has_cpuclock () ? _POSIX_VERSION : -1; + + /* Everything else is handled by the more general code. */ + return linux_sysconf (name); --- eglibc-2.13.orig/debian/patches/ia64/local-dlfptr.diff +++ eglibc-2.13/debian/patches/ia64/local-dlfptr.diff @@ -0,0 +1,16 @@ +--- + sysdeps/ia64/dl-machine.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/sysdeps/ia64/dl-machine.h ++++ b/sysdeps/ia64/dl-machine.h +@@ -46,7 +46,8 @@ + } + + #define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \ +- __ia64_init_bootstrap_fdesc_table (&bootstrap_map); ++ __ia64_init_bootstrap_fdesc_table (&bootstrap_map); \ ++ _dl_fptr_init(); + + /* Return nonzero iff ELF header is compatible with the running host. */ + static inline int __attribute__ ((unused)) --- eglibc-2.13.orig/debian/patches/i386/cvs-cacheinfo.diff +++ eglibc-2.13/debian/patches/i386/cvs-cacheinfo.diff @@ -0,0 +1,262 @@ +2011-04-03 Ulrich Drepper + + * sysdeps/x86_64/cacheinfo.c (intel_02_known): Fix typo in table. + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_02_known): Likewise. + +2011-03-22 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Increment + round counter. + * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. + +2011-03-20 Ulrich Drepper + + [BZ #12587] + * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): + Handle cache information in CPU leaf 4. + * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. + +Index: eglibc-2.13/sysdeps/unix/sysv/linux/i386/sysconf.c +=================================================================== +--- eglibc-2.13.orig/sysdeps/unix/sysv/linux/i386/sysconf.c 2009-07-29 15:58:14.000000000 +0000 ++++ eglibc-2.13/sysdeps/unix/sysv/linux/i386/sysconf.c 2011-04-26 12:33:52.051506436 +0000 +@@ -135,7 +135,7 @@ + { 0xdc, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 }, + { 0xdd, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 }, + { 0xde, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 }, +- { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 }, ++ { 0xe2, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 }, + { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 }, + { 0xe4, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 }, + { 0xea, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 12582912 }, +@@ -186,6 +186,108 @@ + /* No need to look further. */ + break; + } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } + else + { + if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) +Index: eglibc-2.13/sysdeps/x86_64/cacheinfo.c +=================================================================== +--- eglibc-2.13.orig/sysdeps/x86_64/cacheinfo.c 2011-04-26 12:33:45.801489642 +0000 ++++ eglibc-2.13/sysdeps/x86_64/cacheinfo.c 2011-04-26 12:33:52.071506492 +0000 +@@ -130,7 +130,7 @@ + { 0xdc, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 }, + { 0xdd, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 }, + { 0xde, 12, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 }, +- { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 }, ++ { 0xe2, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 2097152 }, + { 0xe3, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 4194304 }, + { 0xe4, 16, 64, M(_SC_LEVEL3_CACHE_SIZE), 8388608 }, + { 0xea, 24, 64, M(_SC_LEVEL3_CACHE_SIZE), 12582912 }, +@@ -181,6 +181,108 @@ + /* No need to look further. */ + break; + } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } ++ else if (byte == 0xff) ++ { ++ /* CPUID leaf 0x4 contains all the information. We need to ++ iterate over it. */ ++ unsigned int eax; ++ unsigned int ebx; ++ unsigned int ecx; ++ unsigned int edx; ++ ++ unsigned int round = 0; ++ while (1) ++ { ++ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" ++ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) ++ : "0" (4), "2" (round)); ++ ++ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; ++ if (type == null) ++ /* That was the end. */ ++ break; ++ ++ unsigned int level = (eax >> 5) & 0x7; ++ ++ if ((level == 1 && type == data ++ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) ++ || (level == 1 && type == inst ++ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) ++ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) ++ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) ++ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) ++ { ++ unsigned int offset = M(name) - folded_rel_name; ++ ++ if (offset == 0) ++ /* Cache size. */ ++ return (((ebx >> 22) + 1) ++ * (((ebx >> 12) & 0x3ff) + 1) ++ * ((ebx & 0xfff) + 1) ++ * (ecx + 1)); ++ if (offset == 1) ++ return (ebx >> 22) + 1; ++ ++ assert (offset == 2); ++ return (ebx & 0xfff) + 1; ++ } ++ ++ ++round; ++ } ++ /* There is no other cache information anywhere else. */ ++ break; ++ } + else + { + if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) --- eglibc-2.13.orig/debian/patches/i386/local-linuxthreads-gscope.diff +++ eglibc-2.13/debian/patches/i386/local-linuxthreads-gscope.diff @@ -0,0 +1,44 @@ +--- + linuxthreads/sysdeps/i386/tls.h | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +--- a/linuxthreads/sysdeps/i386/tls.h ++++ b/linuxthreads/sysdeps/i386/tls.h +@@ -50,6 +50,11 @@ + uintptr_t sysinfo; + uintptr_t stack_guard; + uintptr_t pointer_guard; ++#ifdef __FreeBSD_kernel__ ++ long gscope_flag; ++# else ++ int gscope_flag; ++# endif + } tcbhead_t; + + #else /* __ASSEMBLER__ */ +@@ -240,6 +245,25 @@ + ((descr)->p_header.data.pointer_guard \ + = THREAD_GETMEM (THREAD_SELF, p_header.data.pointer_guard)) + ++/* Get and set the global scope generation counter in the TCB head. */ ++#define THREAD_GSCOPE_FLAG_UNUSED 0 ++#define THREAD_GSCOPE_FLAG_USED 1 ++#define THREAD_GSCOPE_FLAG_WAIT 2 ++#define THREAD_GSCOPE_RESET_FLAG() \ ++ do \ ++ { int __res; \ ++ asm volatile ("xchgl %0, %%gs:%P1" \ ++ : "=r" (__res) \ ++ : "i" (offsetof (struct _pthread_descr_struct, p_gscope_flag)), \ ++ "0" (THREAD_GSCOPE_FLAG_UNUSED)); \ ++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \ ++ lll_futex_wake (&THREAD_SELF->p_gscope_flag, 1); \ ++ } \ ++ while (0) ++#define THREAD_GSCOPE_SET_FLAG() \ ++ THREAD_SETMEM (THREAD_SELF, p_gscope_flag, THREAD_GSCOPE_FLAG_USED) ++#define THREAD_GSCOPE_WAIT() \ ++ do { /* GL(dl_wait_lookup_done) () */ } while (0) + + # endif /* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ + #endif /* __ASSEMBLER__ */ --- eglibc-2.13.orig/debian/patches/i386/local-cpuid-level2.diff +++ eglibc-2.13/debian/patches/i386/local-cpuid-level2.diff @@ -0,0 +1,21 @@ +--- + sysdeps/x86_64/cacheinfo.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/sysdeps/x86_64/cacheinfo.c ++++ b/sysdeps/x86_64/cacheinfo.c +@@ -254,7 +254,13 @@ + static long int __attribute__ ((noinline)) + handle_intel (int name, unsigned int maxidx) + { +- assert (maxidx >= 2); ++ if (maxidx < 2) ++ { ++ /* This should never happen as all Intel i686 CPU support a CPUID ++ level of 2 minimum. However valgrind sometimes load the i686 ++ library with a P55C CPUID. Return 0 in that case. */ ++ return 0; ++ } + + /* OK, we can use the CPUID instruction to get all info about the + caches. */ --- eglibc-2.13.orig/debian/patches/i386/local-cmov.diff +++ eglibc-2.13/debian/patches/i386/local-cmov.diff @@ -0,0 +1,30 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add CMOV to hwcap, for VIA C3 which is i686 class processor, +# DP: but does not have 686 optional instruction CMOV. +# DP: Author: GOTO Masanori +# DP: Upstream status: Not submitted +# DP: Status Details: Not submitted +# DP: Date: 2003-02-21 +# DP: Updated 2003-10-12 by dan@debian.org for TLS +# DP: Updated 2004-01-02 to fix building with newer patches by jb. +# DP: Updated 2005-01-02 to fix building with newer patches by gotom. + +2005-01-02 GOTO Masanori + + * sysdeps/i386/dl-procinfo.h: Update to add CMOV for VIA C3 chip. + +--- + sysdeps/i386/dl-procinfo.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/i386/dl-procinfo.h ++++ b/sysdeps/i386/dl-procinfo.h +@@ -57,7 +57,7 @@ + HWCAP_I386_AMD3D = 1 << 31, + + /* XXX Which others to add here? */ +- HWCAP_IMPORTANT = (HWCAP_I386_XMM2) ++ HWCAP_IMPORTANT = (HWCAP_I386_CMOV | HWCAP_I386_XMM2) + + }; + --- eglibc-2.13.orig/debian/patches/i386/local-pthread_cond_wait.diff +++ eglibc-2.13/debian/patches/i386/local-pthread_cond_wait.diff @@ -0,0 +1,647 @@ +--- + nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S | 592 ------------- + nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S | 20 + nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S | 20 + 3 files changed, 632 deletions(-) + +--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S ++++ /dev/null +@@ -1,592 +0,0 @@ +-/* Copyright (C) 2002-2004,2006-2007,2009,2010 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 2002. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +- +- .text +- +-/* int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex) */ +- .globl __pthread_cond_wait +- .type __pthread_cond_wait, @function +- .align 16 +-__pthread_cond_wait: +-.LSTARTCODE: +- cfi_startproc +-#ifdef SHARED +- cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect, +- DW.ref.__gcc_personality_v0) +- cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART) +-#else +- cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0) +- cfi_lsda(DW_EH_PE_udata4, .LexceptSTART) +-#endif +- +- pushl %ebp +- cfi_adjust_cfa_offset(4) +- cfi_rel_offset(%ebp, 0) +- pushl %edi +- cfi_adjust_cfa_offset(4) +- cfi_rel_offset(%edi, 0) +- pushl %esi +- cfi_adjust_cfa_offset(4) +- cfi_rel_offset(%esi, 0) +- pushl %ebx +- cfi_adjust_cfa_offset(4) +- cfi_rel_offset(%ebx, 0) +- +- xorl %esi, %esi +- movl 20(%esp), %ebx +- +- /* Get internal lock. */ +- movl $1, %edx +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %edx, (%ebx) +-#else +- cmpxchgl %edx, cond_lock(%ebx) +-#endif +- jnz 1f +- +- /* Store the reference to the mutex. If there is already a +- different value in there this is a bad user bug. */ +-2: cmpl $-1, dep_mutex(%ebx) +- movl 24(%esp), %eax +- je 15f +- movl %eax, dep_mutex(%ebx) +- +- /* Unlock the mutex. */ +-15: xorl %edx, %edx +- call __pthread_mutex_unlock_usercnt +- +- testl %eax, %eax +- jne 12f +- +- addl $1, total_seq(%ebx) +- adcl $0, total_seq+4(%ebx) +- addl $1, cond_futex(%ebx) +- addl $(1 << nwaiters_shift), cond_nwaiters(%ebx) +- +-#define FRAME_SIZE 20 +- subl $FRAME_SIZE, %esp +- cfi_adjust_cfa_offset(FRAME_SIZE) +- cfi_remember_state +- +- /* Get and store current wakeup_seq value. */ +- movl wakeup_seq(%ebx), %edi +- movl wakeup_seq+4(%ebx), %edx +- movl broadcast_seq(%ebx), %eax +- movl %edi, 4(%esp) +- movl %edx, 8(%esp) +- movl %eax, 12(%esp) +- +- /* Reset the pi-requeued flag. */ +-8: movl $0, 16(%esp) +- movl cond_futex(%ebx), %ebp +- +- /* Unlock. */ +- LOCK +-#if cond_lock == 0 +- subl $1, (%ebx) +-#else +- subl $1, cond_lock(%ebx) +-#endif +- jne 3f +- +-.LcleanupSTART: +-4: call __pthread_enable_asynccancel +- movl %eax, (%esp) +- +- xorl %ecx, %ecx +- cmpl $-1, dep_mutex(%ebx) +- sete %cl +- je 18f +- +- movl dep_mutex(%ebx), %edi +- /* Requeue to a non-robust PI mutex if the PI bit is set and +- the robust bit is not set. */ +- movl MUTEX_KIND(%edi), %eax +- andl $(ROBUST_BIT|PI_BIT), %eax +- cmpl $PI_BIT, %eax +- jne 18f +- +- movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx +- movl %ebp, %edx +- xorl %esi, %esi +- addl $cond_futex, %ebx +- movl $SYS_futex, %eax +- ENTER_KERNEL +- subl $cond_futex, %ebx +- /* Set the pi-requeued flag only if the kernel has returned 0. The +- kernel does not hold the mutex on error. */ +- cmpl $0, %eax +- sete 16(%esp) +- je 19f +- +- /* Normal and PI futexes dont mix. Use normal futex functions only +- if the kernel does not support the PI futex functions. */ +- cmpl $-ENOSYS, %eax +- jne 19f +- xorl %ecx, %ecx +- +-18: subl $1, %ecx +-#ifdef __ASSUME_PRIVATE_FUTEX +- andl $FUTEX_PRIVATE_FLAG, %ecx +-#else +- andl %gs:PRIVATE_FUTEX, %ecx +-#endif +-#if FUTEX_WAIT != 0 +- addl $FUTEX_WAIT, %ecx +-#endif +- movl %ebp, %edx +- addl $cond_futex, %ebx +-.Ladd_cond_futex: +- movl $SYS_futex, %eax +- ENTER_KERNEL +- subl $cond_futex, %ebx +-.Lsub_cond_futex: +- +-19: movl (%esp), %eax +- call __pthread_disable_asynccancel +-.LcleanupEND: +- +- /* Lock. */ +- movl $1, %edx +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %edx, (%ebx) +-#else +- cmpxchgl %edx, cond_lock(%ebx) +-#endif +- jnz 5f +- +-6: movl broadcast_seq(%ebx), %eax +- cmpl 12(%esp), %eax +- jne 16f +- +- movl woken_seq(%ebx), %eax +- movl woken_seq+4(%ebx), %ecx +- +- movl wakeup_seq(%ebx), %edi +- movl wakeup_seq+4(%ebx), %edx +- +- cmpl 8(%esp), %edx +- jne 7f +- cmpl 4(%esp), %edi +- je 8b +- +-7: cmpl %ecx, %edx +- jne 9f +- cmp %eax, %edi +- je 8b +- +-9: addl $1, woken_seq(%ebx) +- adcl $0, woken_seq+4(%ebx) +- +- /* Unlock */ +-16: subl $(1 << nwaiters_shift), cond_nwaiters(%ebx) +- +- /* Wake up a thread which wants to destroy the condvar object. */ +- movl total_seq(%ebx), %eax +- andl total_seq+4(%ebx), %eax +- cmpl $0xffffffff, %eax +- jne 17f +- movl cond_nwaiters(%ebx), %eax +- andl $~((1 << nwaiters_shift) - 1), %eax +- jne 17f +- +- addl $cond_nwaiters, %ebx +- movl $SYS_futex, %eax +-#if FUTEX_PRIVATE_FLAG > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex-cond_nwaiters(%ebx) +- sete %cl +- subl $1, %ecx +-#ifdef __ASSUME_PRIVATE_FUTEX +- andl $FUTEX_PRIVATE_FLAG, %ecx +-#else +- andl %gs:PRIVATE_FUTEX, %ecx +-#endif +- addl $FUTEX_WAKE, %ecx +- movl $1, %edx +- ENTER_KERNEL +- subl $cond_nwaiters, %ebx +- +-17: LOCK +-#if cond_lock == 0 +- subl $1, (%ebx) +-#else +- subl $1, cond_lock(%ebx) +-#endif +- jne 10f +- +- /* With requeue_pi, the mutex lock is held in the kernel. */ +-11: movl 24+FRAME_SIZE(%esp), %eax +- movl 16(%esp), %ecx +- testl %ecx, %ecx +- jnz 21f +- +- call __pthread_mutex_cond_lock +-20: addl $FRAME_SIZE, %esp +- cfi_adjust_cfa_offset(-FRAME_SIZE); +- +-14: popl %ebx +- cfi_adjust_cfa_offset(-4) +- cfi_restore(%ebx) +- popl %esi +- cfi_adjust_cfa_offset(-4) +- cfi_restore(%esi) +- popl %edi +- cfi_adjust_cfa_offset(-4) +- cfi_restore(%edi) +- popl %ebp +- cfi_adjust_cfa_offset(-4) +- cfi_restore(%ebp) +- +- /* We return the result of the mutex_lock operation. */ +- ret +- +- cfi_restore_state +- +-21: call __pthread_mutex_cond_lock_adjust +- xorl %eax, %eax +- jmp 20b +- +- cfi_adjust_cfa_offset(-FRAME_SIZE); +- /* Initial locking failed. */ +-1: +-#if cond_lock == 0 +- movl %ebx, %edx +-#else +- leal cond_lock(%ebx), %edx +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_lock_wait +- jmp 2b +- +- /* The initial unlocking of the mutex failed. */ +-12: +- LOCK +-#if cond_lock == 0 +- subl $1, (%ebx) +-#else +- subl $1, cond_lock(%ebx) +-#endif +- jne 14b +- +- movl %eax, %esi +-#if cond_lock == 0 +- movl %ebx, %eax +-#else +- leal cond_lock(%ebx), %eax +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_unlock_wake +- +- movl %esi, %eax +- jmp 14b +- +- cfi_adjust_cfa_offset(FRAME_SIZE) +- +- /* Unlock in loop requires wakeup. */ +-3: +-#if cond_lock == 0 +- movl %ebx, %eax +-#else +- leal cond_lock(%ebx), %eax +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_unlock_wake +- jmp 4b +- +- /* Locking in loop failed. */ +-5: +-#if cond_lock == 0 +- movl %ebx, %edx +-#else +- leal cond_lock(%ebx), %edx +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_lock_wait +- jmp 6b +- +- /* Unlock after loop requires wakeup. */ +-10: +-#if cond_lock == 0 +- movl %ebx, %eax +-#else +- leal cond_lock(%ebx), %eax +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_unlock_wake +- jmp 11b +- .size __pthread_cond_wait, .-__pthread_cond_wait +-versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, +- GLIBC_2_3_2) +- +- +- .type __condvar_w_cleanup2, @function +-__condvar_w_cleanup2: +- subl $cond_futex, %ebx +- .size __condvar_w_cleanup2, .-__condvar_w_cleanup2 +-.LSbl4: +- .type __condvar_w_cleanup, @function +-__condvar_w_cleanup: +- movl %eax, %esi +- +- /* Get internal lock. */ +- movl $1, %edx +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %edx, (%ebx) +-#else +- cmpxchgl %edx, cond_lock(%ebx) +-#endif +- jz 1f +- +-#if cond_lock == 0 +- movl %ebx, %edx +-#else +- leal cond_lock(%ebx), %edx +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_lock_wait +- +-1: movl broadcast_seq(%ebx), %eax +- cmpl 12(%esp), %eax +- jne 3f +- +- /* We increment the wakeup_seq counter only if it is lower than +- total_seq. If this is not the case the thread was woken and +- then canceled. In this case we ignore the signal. */ +- movl total_seq(%ebx), %eax +- movl total_seq+4(%ebx), %edi +- cmpl wakeup_seq+4(%ebx), %edi +- jb 6f +- ja 7f +- cmpl wakeup_seq(%ebx), %eax +- jbe 7f +- +-6: addl $1, wakeup_seq(%ebx) +- adcl $0, wakeup_seq+4(%ebx) +- addl $1, cond_futex(%ebx) +- +-7: addl $1, woken_seq(%ebx) +- adcl $0, woken_seq+4(%ebx) +- +-3: subl $(1 << nwaiters_shift), cond_nwaiters(%ebx) +- +- /* Wake up a thread which wants to destroy the condvar object. */ +- xorl %edi, %edi +- movl total_seq(%ebx), %eax +- andl total_seq+4(%ebx), %eax +- cmpl $0xffffffff, %eax +- jne 4f +- movl cond_nwaiters(%ebx), %eax +- andl $~((1 << nwaiters_shift) - 1), %eax +- jne 4f +- +- addl $cond_nwaiters, %ebx +- movl $SYS_futex, %eax +-#if FUTEX_PRIVATE_FLAG > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex-cond_nwaiters(%ebx) +- sete %cl +- subl $1, %ecx +-#ifdef __ASSUME_PRIVATE_FUTEX +- andl $FUTEX_PRIVATE_FLAG, %ecx +-#else +- andl %gs:PRIVATE_FUTEX, %ecx +-#endif +- addl $FUTEX_WAKE, %ecx +- movl $1, %edx +- ENTER_KERNEL +- subl $cond_nwaiters, %ebx +- movl $1, %edi +- +-4: LOCK +-#if cond_lock == 0 +- subl $1, (%ebx) +-#else +- subl $1, cond_lock(%ebx) +-#endif +- je 2f +- +-#if cond_lock == 0 +- movl %ebx, %eax +-#else +- leal cond_lock(%ebx), %eax +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_unlock_wake +- +- /* Wake up all waiters to make sure no signal gets lost. */ +-2: testl %edi, %edi +- jnz 5f +- addl $cond_futex, %ebx +-#if FUTEX_PRIVATE_FLAG > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex-cond_futex(%ebx) +- sete %cl +- subl $1, %ecx +-#ifdef __ASSUME_PRIVATE_FUTEX +- andl $FUTEX_PRIVATE_FLAG, %ecx +-#else +- andl %gs:PRIVATE_FUTEX, %ecx +-#endif +- addl $FUTEX_WAKE, %ecx +- movl $SYS_futex, %eax +- movl $0x7fffffff, %edx +- ENTER_KERNEL +- +-5: movl 24+FRAME_SIZE(%esp), %eax +- call __pthread_mutex_cond_lock +- +- movl %esi, (%esp) +-.LcallUR: +- call _Unwind_Resume +- hlt +-.LENDCODE: +- cfi_endproc +- .size __condvar_w_cleanup, .-__condvar_w_cleanup +- +- +- .section .gcc_except_table,"a",@progbits +-.LexceptSTART: +- .byte DW_EH_PE_omit # @LPStart format (omit) +- .byte DW_EH_PE_omit # @TType format (omit) +- .byte DW_EH_PE_sdata4 # call-site format +- # DW_EH_PE_sdata4 +- .uleb128 .Lcstend-.Lcstbegin +-.Lcstbegin: +- .long .LcleanupSTART-.LSTARTCODE +- .long .Ladd_cond_futex-.LcleanupSTART +- .long __condvar_w_cleanup-.LSTARTCODE +- .uleb128 0 +- .long .Ladd_cond_futex-.LSTARTCODE +- .long .Lsub_cond_futex-.Ladd_cond_futex +- .long __condvar_w_cleanup2-.LSTARTCODE +- .uleb128 0 +- .long .Lsub_cond_futex-.LSTARTCODE +- .long .LcleanupEND-.Lsub_cond_futex +- .long __condvar_w_cleanup-.LSTARTCODE +- .uleb128 0 +- .long .LcallUR-.LSTARTCODE +- .long .LENDCODE-.LcallUR +- .long 0 +- .uleb128 0 +-.Lcstend: +- +-#ifdef PIC +- .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits +- .globl __i686.get_pc_thunk.cx +- .hidden __i686.get_pc_thunk.cx +- .type __i686.get_pc_thunk.cx,@function +-__i686.get_pc_thunk.cx: +- movl (%esp), %ecx; +- ret +- .size __i686.get_pc_thunk.cx,.-__i686.get_pc_thunk.cx +-#endif +- +-#ifdef SHARED +- .hidden DW.ref.__gcc_personality_v0 +- .weak DW.ref.__gcc_personality_v0 +- .section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits +- .align 4 +- .type DW.ref.__gcc_personality_v0, @object +- .size DW.ref.__gcc_personality_v0, 4 +-DW.ref.__gcc_personality_v0: +- .long __gcc_personality_v0 +-#endif +--- a/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* Copyright (C) 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 2003. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include "../i486/pthread_cond_wait.S" +--- a/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* Copyright (C) 2003 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 2003. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include "../i486/pthread_cond_wait.S" --- eglibc-2.13.orig/debian/patches/i386/local-clone.diff +++ eglibc-2.13/debian/patches/i386/local-clone.diff @@ -0,0 +1,29 @@ +2006-11-30 Jan Kratochvil + + * sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost + `clone' function to ensure proper unwinding stop of gdb. + +--- + sysdeps/unix/sysv/linux/i386/clone.S | 4 ---- + 1 file changed, 4 deletions(-) + +--- a/sysdeps/unix/sysv/linux/i386/clone.S ++++ b/sysdeps/unix/sysv/linux/i386/clone.S +@@ -120,9 +120,6 @@ + ret + + L(thread_start): +- cfi_startproc; +- /* Clearing frame pointer is insufficient, use CFI. */ +- cfi_undefined (eip); + /* Note: %esi is zero. */ + movl %esi,%ebp /* terminate the stack frame */ + #ifdef RESET_PID +@@ -155,7 +152,6 @@ + jmp L(haspid) + .previous + #endif +- cfi_endproc; + + cfi_startproc + PSEUDO_END (BP_SYM (__clone)) --- eglibc-2.13.orig/debian/patches/i386/local-biarch.diff +++ eglibc-2.13/debian/patches/i386/local-biarch.diff @@ -0,0 +1,16 @@ +# DP: Description: Allow ldconfig to work on i386/x86-64 biarch systems +# DP: Related bugs: +# DP: Dpatch author: Daniel Jacobowitz +# DP: Patch author: Daniel Jacobowitz +# DP: Upstream status: Debian-Specific +# DP: Status Details: based on Ubuntu change by Jeff Bailey +# DP: Date: 2005-10-13 + +--- + sysdeps/unix/sysv/linux/i386/dl-cache.h | 1 + + 1 file changed, 1 insertion(+) + +--- /dev/null ++++ b/sysdeps/unix/sysv/linux/i386/dl-cache.h +@@ -0,0 +1 @@ ++#include --- eglibc-2.13.orig/debian/patches/i386/submitted-i686-timing.diff +++ eglibc-2.13/debian/patches/i386/submitted-i686-timing.diff @@ -0,0 +1,158 @@ +# DP: Description: i386 ld.so gets sigsegv when i686 optimized library is used, +# because the structure size of rtld_global and rtld_global_ro +# are different due to HP_TIMING_AVAIL availability. +# This patch aligns those sizes for using i686 optimized library. +# DP: Author: Daniel Jacobowitz +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2003-10-03 (Updated 2003-10-12), (Updated 2005-01-02, 2005-03-03 gotom) + +2005-03-03 GOTO Masanori + + * sysdeps/generic/ldsodefs.h (struct rtld_global, rtld_global_ro): + Include timing members if HP_TIMING_PAD is defined. + +2005-01-02 GOTO Masanori + + * elf/Makefile: Regenerate. + +2003-10-12 Daniel Jacobowitz + + * sysdeps/generic/ldsodefs.h (struct rtld_global): Include timing + members if HP_TIMING_PAD is defined. + * sysdeps/i386/hp-timing.h: New file. + * elf/Makefile: Add dl-altinit to routines, shared-only-routines. + * elf/dl-altinit.c: New file. + +--- + elf/Makefile | 6 +++++- + elf/dl-altinit.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + sysdeps/generic/ldsodefs.h | 4 ++-- + sysdeps/i386/hp-timing.h | 34 ++++++++++++++++++++++++++++++++++ + 4 files changed, 84 insertions(+), 3 deletions(-) + +--- a/sysdeps/generic/ldsodefs.h ++++ b/sysdeps/generic/ldsodefs.h +@@ -427,7 +427,7 @@ + /* The object to be initialized first. */ + EXTERN struct link_map *_dl_initfirst; + +-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL || HP_TIMING_PAD + /* Start time on CPU clock. */ + EXTERN hp_timing_t _dl_cpuclock_offset; + #endif +@@ -641,7 +641,7 @@ + /* All search directories defined at startup. */ + EXTERN struct r_search_path_elem *_dl_init_all_dirs; + +-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL || HP_TIMING_PAD + /* Overhead of a high-precision timing measurement. */ + EXTERN hp_timing_t _dl_hp_timing_overhead; + #endif +--- /dev/null ++++ b/sysdeps/i386/hp-timing.h +@@ -0,0 +1,34 @@ ++/* High precision, low overhead timing functions. i386 version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _i386_HP_TIMING_H ++#define _i386_HP_TIMING_H 1 ++ ++#define hp_timing_t hp_timing_t__ ++#include ++#undef hp_timing_t ++ ++/* We don't use high-precision timers, but we might load an i686 libpthread ++ which does. */ ++#define HP_TIMING_PAD 1 ++ ++/* i686 uses 64bit values for the times. */ ++typedef unsigned long long int hp_timing_t; ++ ++#endif /* hp-timing.h */ +--- /dev/null ++++ b/elf/dl-altinit.c +@@ -0,0 +1,43 @@ ++/* Extra initializers for shared libc. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* This file is used from the shared libc, to initialize anything which ++ ld.so should have initialized but didn't - for instance, if ld.so ++ is built for a machine without HP_TIMING but libc.so is built for ++ a machine with HP_TIMING, clock_gettime will expect dl_cpuclock_offset ++ to be initialized. */ ++ ++static void ++dlinit_hptiming (void) ++{ ++#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++ if (GL(dl_cpuclock_offset) == 0) ++ HP_TIMING_NOW (GL(dl_cpuclock_offset)); ++#endif ++} ++ ++static void dlinit_alt (void) __attribute__((constructor)); ++static void ++dlinit_alt (void) ++{ ++ dlinit_hptiming (); ++} +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -23,7 +23,7 @@ + headers = elf.h bits/elfclass.h link.h bits/link.h + routines = $(dl-routines) dl-support dl-iteratephdr \ + dl-addr enbl-secure dl-profstub \ +- dl-origin dl-libc dl-sym dl-tsd dl-sysdep ++ dl-origin dl-libc dl-sym dl-tsd dl-sysdep dl-altinit + + # The core dynamic linking functions are in libc for the static and + # profiled libraries. +@@ -42,6 +42,10 @@ + rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal + all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines) + ++# We only need to re-run initializers if ld.so and libc.so might be built ++# for different machines, so only shared libraries need dl-altinit. ++shared-only-routines = dl-altinit ++ + distribute := rtld-Rules \ + $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ + dl-cache.h dl-hash.h soinit.c sofini.c ldd.bash.in \ --- eglibc-2.13.orig/debian/patches/all/local-nis-shadow.diff +++ eglibc-2.13/debian/patches/all/local-nis-shadow.diff @@ -0,0 +1,12 @@ +--- + nis/nss | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/nis/nss ++++ b/nis/nss +@@ -34,4 +34,4 @@ + # server cannot be trusted to send the passwd.adjuct table only to + # privileged clients. Instead the passwd.adjunct.byname table is + # used to synthesize the shadow.byname table if it does not exist. +-#ADJUNCT_AS_SHADOW=TRUE ++ADJUNCT_AS_SHADOW=TRUE --- eglibc-2.13.orig/debian/patches/all/local-remove-manual.diff +++ eglibc-2.13/debian/patches/all/local-remove-manual.diff @@ -0,0 +1,290 @@ +The GNU Libc Reference manual has to be removed for licensing reasons. +But some files have a dependency on manual/errno.texi; the easiest +solution is to drop those dependencies and make sure that MAKEINFO=: +so that no target depends on manual/*.texi files. + +--- + manual/Makefile | 254 +++++++++++++++++++++++++++++++++++++++++++++ + sysdeps/gnu/Makefile | 2 + sysdeps/mach/hurd/Makefile | 2 + 3 files changed, 256 insertions(+), 2 deletions(-) + +--- /dev/null ++++ b/manual/Makefile +@@ -0,0 +1,254 @@ ++# Copyright (C) 1992-1999,2000,2001,2002,2003,2004,2006 ++# Free Software Foundation, Inc. ++# This file is part of the GNU C Library. ++ ++# The GNU C Library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++ ++# The GNU C Library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++ ++# You should have received a copy of the GNU Lesser General Public ++# License along with the GNU C Library; if not, write to the Free ++# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++# 02111-1307 USA. ++ ++# Makefile for the GNU C Library manual. ++ ++subdir := manual ++export subdir := $(subdir) ++ ++# Allow override ++INSTALL_INFO = install-info ++ ++.PHONY: all dvi pdf info html ++all: dvi ++dvi: libc.dvi ++pdf: libc.pdf ++ ++# Get glibc's configuration info. ++ifneq (,$(wildcard ../Makeconfig)) ++include ../Makeconfig ++else ++MAKEINFO = makeinfo ++TEXI2DVI = texi2dvi ++AWK = gawk ++endif ++ ++TEXI2PDF = texi2dvi --pdf ++ ++ifneq ($(strip $(MAKEINFO)),:) ++all: info ++info: libc.info ++endif ++ ++# scripts we use ++ifndef move-if-change ++move-if-change = ./move-if-change ++endif ++mkinstalldirs = $(..)scripts/mkinstalldirs ++ ++chapters = $(addsuffix .texi, \ ++ intro errno memory ctype string charset locale \ ++ message search pattern io stdio llio filesys \ ++ pipe socket terminal syslog math arith time \ ++ resource setjmp signal startup process job nss \ ++ users sysinfo conf crypt debug) ++add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi)) ++appendices = lang.texi header.texi install.texi maint.texi contrib.texi \ ++ freemanuals.texi ++ ++-include texis ++texis: texis.awk $(chapters) $(add-chapters) $(appendices) lesser.texi fdl.texi ++ $(AWK) -f $^ > $@.T ++ mv -f $@.T $@ ++ ++nonexamples = $(filter-out $(add-chapters) %.c.texi, $(texis)) ++examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \ ++ $(filter %.c.texi, $(texis))) ++ ++# Kludge: implicit rule so Make knows the one command does it all. ++chapters.% top-menu.%: libc-texinfo.sh $(texis) Makefile ++ AWK=$(AWK) $(SHELL) $< '$(chapters)' '$(add-chapters)' '$(appendices)' ++ ++libc.dvi libc.pdf libc.info: chapters.texi top-menu.texi dir-add.texi \ ++ libm-err.texi ++libc.dvi libc.pdf: texinfo.tex ++ ++html: libc/index.html ++libc/index.html: chapters.texi top-menu.texi dir-add.texi libm-err.texi ++ $(MAKEINFO) --html libc.texinfo ++ ++# Generate the summary from the Texinfo source files for each chapter. ++summary.texi: stamp-summary ; ++stamp-summary: summary.awk $(filter-out summary.texi, $(texis)) ++ $(AWK) -f $^ | sort -t' ' -df -k 1,1 | tr '\014' '\012' > summary-tmp ++ $(move-if-change) summary-tmp summary.texi ++ touch $@ ++ ++# Generate a file which can be added to the `dir' content to provide direct ++# access to the documentation of the function, variables, and other ++# definitions. ++dir-add.texi: xtract-typefun.awk $(texis) ++ (echo "@dircategory GNU C library functions and macros"; \ ++ echo "@direntry"; \ ++ $(AWK) -f $^ | sort; \ ++ echo "@end direntry") > $@.new ++ mv -f $@.new $@ ++ ++# The table with the math errors is generated. ++libm-err.texi: stamp-libm-err ++stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\ ++ $(dir)/libm-test-ulps)) ++ pwd=`pwd`; \ ++ $(PERL) $< $$pwd/.. > libm-err-tmp ++ $(move-if-change) libm-err-tmp libm-err.texi ++ touch $@ ++ ++# Generate Texinfo files from the C source for the example programs. ++%.c.texi: examples/%.c ++ sed -e 's,[{}],@&,g' \ ++ -e 's,/\*\(@.*\)\*/,\1,g' \ ++ -e 's,/\* *,/* @r{,g' -e 's, *\*/,} */,' \ ++ -e 's/\(@[a-z][a-z]*\)@{\([^}]*\)@}/\1{\2}/g'\ ++ $< | expand > $@.new ++ mv -f $@.new $@ ++ ++%.info: %.texinfo ++ LANGUAGE=C LC_ALL=C $(MAKEINFO) $< ++ ++%.dvi: %.texinfo ++ $(TEXI2DVI) $< ++ ++%.pdf: %.texinfo ++ $(TEXI2PDF) $< ++ ++# Distribution. ++minimal-dist = summary.awk texis.awk tsort.awk libc-texinfo.sh libc.texinfo \ ++ libm-err.texi stamp-libm-err \ ++ $(filter-out summary.texi, $(nonexamples)) \ ++ $(patsubst %.c.texi,examples/%.c, $(examples)) ++ ++doc-only-dist = Makefile COPYING.LIB ++distribute = $(minimal-dist) $(examples) stdio-fp.c \ ++ libc.info* libc.?? libc.??s texinfo.tex \ ++ xtract-typefun.awk dir-add.texi dir libm-err-tab.pl ++export distribute := $(distribute) ++ ++tar-it = tar chovf $@ $^ ++ ++manual.tar: $(doc-only-dist) $(minimal-dist) ; $(tar-it) ++mandist.tar: $(doc-only-dist) $(distribute) ; $(tar-it) ++ ++edition := $(shell sed -n 's/^@set EDITION \([0-9][0-9.]*\)[^0-9.]*.*$$/\1/p' \ ++ libc.texinfo) ++ ++glibc-doc-$(edition).tar: $(doc-only-dist) $(distribute) ++ @rm -f glibc-doc-$(edition) ++ ln -s . glibc-doc-$(edition) ++ tar chovf $@ $(addprefix glibc-doc-$(edition)/,$^) ++ rm -f glibc-doc-$(edition) ++ ++%.Z: % ++ compress -c $< > $@.new ++ mv -f $@.new $@ ++%.gz: % ++ gzip -9 -c $< > $@.new ++ mv -f $@.new $@ ++%.uu: % ++ uuencode $< < $< > $@.new ++ mv -f $@.new $@ ++ ++.PHONY: mostlyclean distclean realclean clean ++mostlyclean: ++ -rm -f libc.dvi libc.pdf libc.tmp libc.info* ++ -rm -f $(objpfx)stubs ++ -rm -f $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) ++clean: mostlyclean ++distclean: clean ++indices = cp fn pg tp vr ky ++realclean: distclean ++ -rm -f texis summary.texi stamp-summary *.c.texi dir-add.texi ++ -rm -f $(foreach index,$(indices),libc.$(index) libc.$(index)s) ++ -rm -f libc.log libc.aux libc.toc dir-add.texinfo ++ -rm -f top-menu.texi chapters.texi ++ ++.PHONY: install subdir_install installdirs install-data ++install-data subdir_install: install ++ifneq ($(strip $(MAKEINFO)),:) ++install: $(inst_infodir)/libc.info ++ @if $(SHELL) -c '$(INSTALL_INFO) --version' >/dev/null 2>&1; then \ ++ test -f $(inst_infodir)/dir || $(INSTALL_DATA) dir $(inst_infodir);\ ++ $(INSTALL_INFO) --info-dir=$(inst_infodir) $(inst_infodir)/libc.info;\ ++ else : ; fi ++endif ++# Catchall implicit rule for other installation targets from the parent. ++install-%: ; ++ ++$(inst_infodir)/libc.info: libc.info installdirs ++ for file in $<*; do \ ++ $(INSTALL_DATA) $$file $(@D)/$$file; \ ++ done ++ ++installdirs: ++ $(mkinstalldirs) $(inst_infodir) ++ ++.PHONY: dist ++dist: # glibc-doc-$(edition).tar.gz ++ ++ifneq (,$(wildcard ../Make-dist)) ++dist: ../Make-dist ++ $(MAKE) -f $< $(Make-dist-args) ++endif ++ ++ifndef ETAGS ++ETAGS = etags -T ++endif ++TAGS: $(minimal-dist) ++ $(ETAGS) -o $@ $^ ++ ++# The parent makefile sometimes invokes us with targets `subdir_REAL-TARGET'. ++subdir_%: % ; ++# For targets we don't define, do nothing. ++subdir_%: ; ++ ++# These are targets that each glibc subdirectory is expected to understand. ++# ../Rules defines them for code subdirectories; for us, they are no-ops. ++# None of these should be `subdir_TARGET'; those targets are transformed ++# by the implicit rule above into `TARGET' deps. ++glibc-targets := lib objects objs others tests xtests lint.out echo-headers ++.PHONY: $(glibc-targets) ++$(glibc-targets): ++ ++# Create stamp files if they don't exist, so the parent makefile's rules for ++# updating the library archives are happy with us, and never think we have ++# changed the library. ++lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) ++ifdef objpfx ++.PHONY: stubs ++stubs: $(objpfx)stubs ++endif ++$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: ++ $(make-target-directory) ++ touch $@ ++ ++# Make the target directory if it doesn't exist, using the `mkinstalldirs' ++# script that does `mkdir -p' even if `mkdir' doesn't support that flag. ++define make-target-directory ++$(addprefix $(mkinstalldirs) ,\ ++ $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%))) ++endef ++ ++# The top-level glibc Makefile expects subdir_install to update the stubs file. ++subdir_install: stubs ++ ++# Get rid of these variables if they came from the parent. ++routines = ++aux = ++sources = ++objects = ++headers = +--- a/sysdeps/gnu/Makefile ++++ b/sysdeps/gnu/Makefile +@@ -20,7 +20,7 @@ + # Generate the list of strings for errno codes from the section of the + # manual which documents the codes. + +-$(..)sysdeps/gnu/errlist.c: $(..)sysdeps/gnu/errlist.awk \ ++$(..)sysdeps/gnu/errlist-disabled.c: $(..)sysdeps/gnu/errlist.awk \ + $(..)manual/errno.texi + $(AWK) -f $^ > $@-tmp + # Make it unwritable so noone will edit it by mistake. +--- a/sysdeps/mach/hurd/Makefile ++++ b/sysdeps/mach/hurd/Makefile +@@ -87,7 +87,7 @@ + -e 's, \.\./, $(..),g' > $@t + mv -f $@t $@ + +-$(hurd)/bits/errno.h: $(common-objpfx)stamp-errnos ; ++$(hurd)/bits/errno-disabled.h: $(common-objpfx)stamp-errnos ; + $(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \ + $(mach-errnos-deps) $(common-objpfx)errnos.d + $(AWK) -f $^ > $(hurd)/bits/errno.h-tmp --- eglibc-2.13.orig/debian/patches/all/local-pthread-manpages.diff +++ eglibc-2.13/debian/patches/all/local-pthread-manpages.diff @@ -0,0 +1,2093 @@ +--- + linuxthreads/man/pthread_atfork.man | 36 ++--- + linuxthreads/man/pthread_attr_init.man | 132 ++++++++++----------- + linuxthreads/man/pthread_cancel.man | 98 +++++++-------- + linuxthreads/man/pthread_cleanup_push.man | 66 +++++----- + linuxthreads/man/pthread_cond_init.man | 114 +++++++++--------- + linuxthreads/man/pthread_condattr_init.man | 14 +- + linuxthreads/man/pthread_create.man | 36 ++--- + linuxthreads/man/pthread_detach.man | 34 ++--- + linuxthreads/man/pthread_equal.man | 6 + linuxthreads/man/pthread_exit.man | 18 +- + linuxthreads/man/pthread_join.man | 64 +++++----- + linuxthreads/man/pthread_key_create.man | 62 ++++----- + linuxthreads/man/pthread_kill_other_threads_np.man | 22 +-- + linuxthreads/man/pthread_mutex_init.man | 94 +++++++------- + linuxthreads/man/pthread_mutexattr_init.man | 62 ++++----- + linuxthreads/man/pthread_mutexattr_setkind_np.man | 20 +-- + linuxthreads/man/pthread_once.man | 18 +- + linuxthreads/man/pthread_self.man | 12 - + linuxthreads/man/pthread_setschedparam.man | 62 ++++----- + linuxthreads/man/pthread_sigmask.man | 86 ++++++------- + linuxthreads/man/sem_init.man | 88 +++++++------- + 21 files changed, 572 insertions(+), 572 deletions(-) + +--- a/linuxthreads/man/pthread_atfork.man ++++ b/linuxthreads/man/pthread_atfork.man +@@ -10,44 +10,44 @@ + + .SH DESCRIPTION + +-!pthread_atfork! registers handler functions to be called just before +-and just after a new process is created with !fork!(2). The |prepare| ++\fBpthread_atfork\fP registers handler functions to be called just before ++and just after a new process is created with \fBfork\fP(2). The \fIprepare\fP + handler will be called from the parent process, just before the new +-process is created. The |parent| handler will be called from the parent +-process, just before !fork!(2) returns. The |child| handler will be +-called from the child process, just before !fork!(2) returns. ++process is created. The \fIparent\fP handler will be called from the parent ++process, just before \fBfork\fP(2) returns. The \fIchild\fP handler will be ++called from the child process, just before \fBfork\fP(2) returns. + +-One or several of the three handlers |prepare|, |parent| and |child| +-can be given as !NULL!, meaning that no handler needs to be called at ++One or several of the three handlers \fIprepare\fP, \fIparent\fP and \fIchild\fP ++can be given as \fBNULL\fP, meaning that no handler needs to be called at + the corresponding point. + +-!pthread_atfork! can be called several times to install several sets +-of handlers. At !fork!(2) time, the |prepare| handlers are called in +-LIFO order (last added with !pthread_atfork!, first called before !fork!), +-while the |parent| and |child| handlers are called in FIFO order ++\fBpthread_atfork\fP can be called several times to install several sets ++of handlers. At \fBfork\fP(2) time, the \fIprepare\fP handlers are called in ++LIFO order (last added with \fBpthread_atfork\fP, first called before \fBfork\fP), ++while the \fIparent\fP and \fIchild\fP handlers are called in FIFO order + (first added, first called). + +-To understand the purpose of !pthread_atfork!, recall that !fork!(2) ++To understand the purpose of \fBpthread_atfork\fP, recall that \fBfork\fP(2) + duplicates the whole memory space, including mutexes in their current + locking state, but only the calling thread: other threads are not + running in the child process. The mutexes are not usable after the +-!fork! and must be initialized with |pthread_mutex_init| in the child ++\fBfork\fP and must be initialized with \fIpthread_mutex_init\fP in the child + process. This is a limitation of the current implementation and might + or might not be present in future versions. + + .SH "RETURN VALUE" + +-!pthread_atfork! returns 0 on success and a non-zero error code on error. ++\fBpthread_atfork\fP returns 0 on success and a non-zero error code on error. + + .SH ERRORS + .TP +-!ENOMEM! ++\fBENOMEM\fP + insufficient memory available to register the handlers. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!fork!(2), +-!pthread_mutex_lock!(3), +-!pthread_mutex_unlock!(3). ++\fBfork\fP(2), ++\fBpthread_mutex_lock\fP(3), ++\fBpthread_mutex_unlock\fP(3). +--- a/linuxthreads/man/pthread_attr_init.man ++++ b/linuxthreads/man/pthread_attr_init.man +@@ -45,27 +45,27 @@ + .SH DESCRIPTION + + Setting attributes for threads is achieved by filling a +-thread attribute object |attr| of type !pthread_attr_t!, then passing it as +-second argument to !pthread_create!(3). Passing !NULL! is equivalent to ++thread attribute object \fIattr\fP of type \fBpthread_attr_t\fP, then passing it as ++second argument to \fBpthread_create\fP(3). Passing \fBNULL\fP is equivalent to + passing a thread attribute object with all attributes set to their + default values. + +-!pthread_attr_init! initializes the thread attribute object |attr| and ++\fBpthread_attr_init\fP initializes the thread attribute object \fIattr\fP and + fills it with default values for the attributes. (The default values + are listed below for each attribute.) + +-Each attribute |attrname| (see below for a list of all attributes) can +-be individually set using the function !pthread_attr_set!|attrname| +-and retrieved using the function !pthread_attr_get!|attrname|. ++Each attribute \fIattrname\fP (see below for a list of all attributes) can ++be individually set using the function \fBpthread_attr_set\fP\fIattrname\fP ++and retrieved using the function \fBpthread_attr_get\fP\fIattrname\fP. + +-!pthread_attr_destroy! destroys a thread attribute object, which +-must not be reused until it is reinitialized. !pthread_attr_destroy! ++\fBpthread_attr_destroy\fP destroys a thread attribute object, which ++must not be reused until it is reinitialized. \fBpthread_attr_destroy\fP + does nothing in the LinuxThreads implementation. + + Attribute objects are consulted only when creating a new thread. The + same attribute object can be used for creating several + threads. Modifying an attribute object after a call to +-!pthread_create! does not change the attributes of the thread ++\fBpthread_create\fP does not change the attributes of the thread + previously created. + + The following thread attributes are supported: +@@ -73,149 +73,149 @@ + .SS detachstate + + Control whether the thread is created in the joinable state (value +-!PTHREAD_CREATE_JOINABLE!) or in the detached state +-(!PTHREAD_CREATE_DETACHED!). ++\fBPTHREAD_CREATE_JOINABLE\fP) or in the detached state ++(\fBPTHREAD_CREATE_DETACHED\fP). + +-Default value: !PTHREAD_CREATE_JOINABLE!. ++Default value: \fBPTHREAD_CREATE_JOINABLE\fP. + + In the joinable state, another thread can synchronize on the thread +-termination and recover its termination code using !pthread_join!(3), ++termination and recover its termination code using \fBpthread_join\fP(3), + but some of the thread resources are kept allocated after the thread + terminates, and reclaimed only when another thread performs +-!pthread_join!(3) on that thread. ++\fBpthread_join\fP(3) on that thread. + + In the detached state, the thread resources are immediately freed when +-it terminates, but !pthread_join!(3) cannot be used to synchronize on ++it terminates, but \fBpthread_join\fP(3) cannot be used to synchronize on + the thread termination. + + A thread created in the joinable state can later be put in the +-detached thread using !pthread_detach!(3). ++detached state using \fBpthread_detach\fP(3). + + .SS schedpolicy + + Select the scheduling policy for the thread: one of +-!SCHED_OTHER! (regular, non-realtime scheduling), +-!SCHED_RR! (realtime, round-robin) or +-!SCHED_FIFO! (realtime, first-in first-out). See +-!sched_setpolicy!(2) for more information on scheduling policies. ++\fBSCHED_OTHER\fP (regular, non-realtime scheduling), ++\fBSCHED_RR\fP (realtime, round-robin) or ++\fBSCHED_FIFO\fP (realtime, first-in first-out). See ++\fBsched_setpolicy\fP(2) for more information on scheduling policies. + +-Default value: !SCHED_OTHER!. ++Default value: \fBSCHED_OTHER\fP. + +-The realtime scheduling policies !SCHED_RR! and !SCHED_FIFO! are ++The realtime scheduling policies \fBSCHED_RR\fP and \fBSCHED_FIFO\fP are + available only to processes with superuser privileges. + + The scheduling policy of a thread can be changed after creation with +-!pthread_setschedparam!(3). ++\fBpthread_setschedparam\fP(3). + + .SS schedparam + + Contain the scheduling parameters (essentially, the scheduling +-priority) for the thread. See !sched_setparam!(2) for more information ++priority) for the thread. See \fBsched_setparam\fP(2) for more information + on scheduling parameters. + + Default value: priority is 0. + +-This attribute is not significant if the scheduling policy is !SCHED_OTHER!; +-it only matters for the realtime policies !SCHED_RR! and !SCHED_FIFO!. ++This attribute is not significant if the scheduling policy is \fBSCHED_OTHER\fP; ++it only matters for the realtime policies \fBSCHED_RR\fP and \fBSCHED_FIFO\fP. + + The scheduling priority of a thread can be changed after creation with +-!pthread_setschedparam!(3). ++\fBpthread_setschedparam\fP(3). + + .SS inheritsched + + Indicate whether the scheduling policy and scheduling parameters for + the newly created thread are determined by the values of the +-|schedpolicy| and |schedparam| attributes (value +-!PTHREAD_EXPLICIT_SCHED!) or are inherited from the parent thread +-(value !PTHREAD_INHERIT_SCHED!). ++\fIschedpolicy\fP and \fIschedparam\fP attributes (value ++\fBPTHREAD_EXPLICIT_SCHED\fP) or are inherited from the parent thread ++(value \fBPTHREAD_INHERIT_SCHED\fP). + +-Default value: !PTHREAD_EXPLICIT_SCHED!. ++Default value: \fBPTHREAD_EXPLICIT_SCHED\fP. + + .SS scope + + Define the scheduling contention scope for the created thread. The + only value supported in the LinuxThreads implementation is +-!PTHREAD_SCOPE_SYSTEM!, meaning that the threads contend for CPU time ++\fBPTHREAD_SCOPE_SYSTEM\fP, meaning that the threads contend for CPU time + with all processes running on the machine. In particular, thread + priorities are interpreted relative to the priorities of all other + processes on the machine. The other value specified by the standard, +-!PTHREAD_SCOPE_PROCESS!, means that scheduling contention occurs only ++\fBPTHREAD_SCOPE_PROCESS\fP, means that scheduling contention occurs only + between the threads of the running process: thread priorities are + interpreted relative to the priorities of the other threads of the + process, regardless of the priorities of other processes. +-!PTHREAD_SCOPE_PROCESS! is not supported in LinuxThreads. ++\fBPTHREAD_SCOPE_PROCESS\fP is not supported in LinuxThreads. + +-Default value: !PTHREAD_SCOPE_SYSTEM!. ++Default value: \fBPTHREAD_SCOPE_SYSTEM\fP. + + .SH "RETURN VALUE" + + All functions return 0 on success and a non-zero error code on error. +-On success, the !pthread_attr_get!|attrname| functions also store the +-current value of the attribute |attrname| in the location pointed to ++On success, the \fBpthread_attr_get\fP\fIattrname\fP functions also store the ++current value of the attribute \fIattrname\fP in the location pointed to + by their second argument. + + .SH ERRORS + +-The !pthread_attr_setdetachstate! function returns the following error ++The \fBpthread_attr_setdetachstate\fP function returns the following error + codes on error: + .RS + .TP +-!EINVAL! +-the specified |detachstate| is not one of !PTHREAD_CREATE_JOINABLE! or +-!PTHREAD_CREATE_DETACHED!. ++\fBEINVAL\fP ++the specified \fIdetachstate\fP is not one of \fBPTHREAD_CREATE_JOINABLE\fP or ++\fBPTHREAD_CREATE_DETACHED\fP. + .RE + +-The !pthread_attr_setschedparam! function returns the following error ++The \fBpthread_attr_setschedparam\fP function returns the following error + codes on error: + .RS + .TP +-!EINVAL! +-the priority specified in |param| is outside the range of allowed +-priorities for the scheduling policy currently in |attr| +-(1 to 99 for !SCHED_FIFO! and !SCHED_RR!; 0 for !SCHED_OTHER!). ++\fBEINVAL\fP ++the priority specified in \fIparam\fP is outside the range of allowed ++priorities for the scheduling policy currently in \fIattr\fP ++(1 to 99 for \fBSCHED_FIFO\fP and \fBSCHED_RR\fP; 0 for \fBSCHED_OTHER\fP). + .RE + +-The !pthread_attr_setschedpolicy! function returns the following error ++The \fBpthread_attr_setschedpolicy\fP function returns the following error + codes on error: + .RS + .TP +-!EINVAL! +-the specified |policy| is not one of !SCHED_OTHER!, !SCHED_FIFO!, or +-!SCHED_RR!. ++\fBEINVAL\fP ++the specified \fIpolicy\fP is not one of \fBSCHED_OTHER\fP, \fBSCHED_FIFO\fP, or ++\fBSCHED_RR\fP. + + .TP +-!ENOTSUP! +-|policy| is !SCHED_FIFO! or !SCHED_RR!, and the effective user of the ++\fBENOTSUP\fP ++\fIpolicy\fP is \fBSCHED_FIFO\fP or \fBSCHED_RR\fP, and the effective user of the + calling process is not super-user. + .RE + +-The !pthread_attr_setinheritsched! function returns the following error ++The \fBpthread_attr_setinheritsched\fP function returns the following error + codes on error: + .RS + .TP +-!EINVAL! +-the specified |inherit| is not one of !PTHREAD_INHERIT_SCHED! or +-!PTHREAD_EXPLICIT_SCHED!. ++\fBEINVAL\fP ++the specified \fIinherit\fP is not one of \fBPTHREAD_INHERIT_SCHED\fP or ++\fBPTHREAD_EXPLICIT_SCHED\fP. + .RE + +-The !pthread_attr_setscope! function returns the following error ++The \fBpthread_attr_setscope\fP function returns the following error + codes on error: + .RS + .TP +-!EINVAL! +-the specified |scope| is not one of !PTHREAD_SCOPE_SYSTEM! or +-!PTHREAD_SCOPE_PROCESS!. ++\fBEINVAL\fP ++the specified \fIscope\fP is not one of \fBPTHREAD_SCOPE_SYSTEM\fP or ++\fBPTHREAD_SCOPE_PROCESS\fP. + + .TP +-!ENOTSUP! +-the specified |scope| is !PTHREAD_SCOPE_PROCESS! (not supported). ++\fBENOTSUP\fP ++the specified \fIscope\fP is \fBPTHREAD_SCOPE_PROCESS\fP (not supported). + .RE + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_create!(3), +-!pthread_join!(3), +-!pthread_detach!(3), +-!pthread_setschedparam!(3). ++\fBpthread_create\fP(3), ++\fBpthread_join\fP(3), ++\fBpthread_detach\fP(3), ++\fBpthread_setschedparam\fP(3). +--- a/linuxthreads/man/pthread_cancel.man ++++ b/linuxthreads/man/pthread_cancel.man +@@ -27,119 +27,119 @@ + immediately, or defer it till it reaches a cancellation point. + + When a thread eventually honors a cancellation request, it performs as +-if !pthread_exit(PTHREAD_CANCELED)! has been called at that point: ++if \fBpthread_exit(PTHREAD_CANCELED)\fP has been called at that point: + all cleanup handlers are executed in reverse order, finalization + functions for thread-specific data are called, and finally the thread +-stops executing with the return value !PTHREAD_CANCELED!. See +-!pthread_exit!(3) for more information. ++stops executing with the return value \fBPTHREAD_CANCELED\fP. See ++\fBpthread_exit\fP(3) for more information. + +-!pthread_cancel! sends a cancellation request to the thread denoted +-by the |thread| argument. ++\fBpthread_cancel\fP sends a cancellation request to the thread denoted ++by the \fIthread\fP argument. + +-!pthread_setcancelstate! changes the cancellation state for the ++\fBpthread_setcancelstate\fP changes the cancellation state for the + calling thread -- that is, whether cancellation requests are ignored +-or not. The |state| argument is the new cancellation state: either +-!PTHREAD_CANCEL_ENABLE! to enable cancellation, or +-!PTHREAD_CANCEL_DISABLE! to disable cancellation (cancellation +-requests are ignored). If |oldstate| is not !NULL!, the previous +-cancellation state is stored in the location pointed to by |oldstate|, ++or not. The \fIstate\fP argument is the new cancellation state: either ++\fBPTHREAD_CANCEL_ENABLE\fP to enable cancellation, or ++\fBPTHREAD_CANCEL_DISABLE\fP to disable cancellation (cancellation ++requests are ignored). If \fIoldstate\fP is not \fBNULL\fP, the previous ++cancellation state is stored in the location pointed to by \fIoldstate\fP, + and can thus be restored later by another call to +-!pthread_setcancelstate!. ++\fBpthread_setcancelstate\fP. + +-!pthread_setcanceltype! changes the type of responses to cancellation ++\fBpthread_setcanceltype\fP changes the type of responses to cancellation + requests for the calling thread: asynchronous (immediate) or deferred. +-The |type| argument is the new cancellation type: either +-!PTHREAD_CANCEL_ASYNCHRONOUS! to cancel the calling thread as soon as +-the cancellation request is received, or !PTHREAD_CANCEL_DEFERRED! to ++The \fItype\fP argument is the new cancellation type: either ++\fBPTHREAD_CANCEL_ASYNCHRONOUS\fP to cancel the calling thread as soon as ++the cancellation request is received, or \fBPTHREAD_CANCEL_DEFERRED\fP to + keep the cancellation request pending until the next cancellation +-point. If |oldtype| is not !NULL!, the previous +-cancellation state is stored in the location pointed to by |oldtype|, ++point. If \fIoldtype\fP is not \fBNULL\fP, the previous ++cancellation state is stored in the location pointed to by \fIoldtype\fP, + and can thus be restored later by another call to +-!pthread_setcanceltype!. ++\fBpthread_setcanceltype\fP. + +-Threads are always created by !pthread_create!(3) with cancellation ++Threads are always created by \fBpthread_create\fP(3) with cancellation + enabled and deferred. That is, the initial cancellation state is +-!PTHREAD_CANCEL_ENABLE! and the initial type is +-!PTHREAD_CANCEL_DEFERRED!. ++\fBPTHREAD_CANCEL_ENABLE\fP and the initial type is ++\fBPTHREAD_CANCEL_DEFERRED\fP. + + Cancellation points are those points in the program execution where a + test for pending cancellation requests is performed and cancellation + is executed if positive. The following POSIX threads functions + are cancellation points: + +-!pthread_join!(3) ++\fBpthread_join\fP(3) + .br +-!pthread_cond_wait!(3) ++\fBpthread_cond_wait\fP(3) + .br +-!pthread_cond_timedwait!(3) ++\fBpthread_cond_timedwait\fP(3) + .br +-!pthread_testcancel!(3) ++\fBpthread_testcancel\fP(3) + .br +-!sem_wait!(3) ++\fBsem_wait\fP(3) + .br +-!sigwait!(3) ++\fBsigwait\fP(3) + + All other POSIX threads functions are guaranteed not to be + cancellation points. That is, they never perform cancellation in + deferred cancellation mode. + +-!pthread_testcancel! does nothing except testing for pending ++\fBpthread_testcancel\fP does nothing except testing for pending + cancellation and executing it. Its purpose is to introduce explicit + checks for cancellation in long sequences of code that do not call + cancellation point functions otherwise. + + .SH "RETURN VALUE" + +-!pthread_cancel!, !pthread_setcancelstate! and +-!pthread_setcanceltype! return 0 on success and a non-zero error code ++\fBpthread_cancel\fP, \fBpthread_setcancelstate\fP and ++\fBpthread_setcanceltype\fP return 0 on success and a non-zero error code + on error. + + .SH ERRORS +-!pthread_cancel! returns the following error code on error: ++\fBpthread_cancel\fP returns the following error code on error: + .RS + .TP +-!ESRCH! +-no thread could be found corresponding to that specified by the |thread| ID. ++\fBESRCH\fP ++no thread could be found corresponding to that specified by the \fIthread\fP ID. + .RE + +-!pthread_setcancelstate! returns the following error code on error: ++\fBpthread_setcancelstate\fP returns the following error code on error: + .RS + .TP +-!EINVAL! +-the |state| argument is not !PTHREAD_CANCEL_ENABLE! nor +-!PTHREAD_CANCEL_DISABLE! ++\fBEINVAL\fP ++the \fIstate\fP argument is not \fBPTHREAD_CANCEL_ENABLE\fP nor ++\fBPTHREAD_CANCEL_DISABLE\fP + .RE + +-!pthread_setcanceltype! returns the following error code on error: ++\fBpthread_setcanceltype\fP returns the following error code on error: + .RS + .TP +-!EINVAL! +-the |type| argument is not !PTHREAD_CANCEL_DEFERRED! nor +-!PTHREAD_CANCEL_ASYNCHRONOUS! ++\fBEINVAL\fP ++the \fItype\fP argument is not \fBPTHREAD_CANCEL_DEFERRED\fP nor ++\fBPTHREAD_CANCEL_ASYNCHRONOUS\fP + .RE + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_exit!(3), +-!pthread_cleanup_push!(3), +-!pthread_cleanup_pop!(3). ++\fBpthread_exit\fP(3), ++\fBpthread_cleanup_push\fP(3), ++\fBpthread_cleanup_pop\fP(3). + + .SH BUGS + + POSIX specifies that a number of system calls (basically, all +-system calls that may block, such as !read!(2), !write!(2), !wait!(2), ++system calls that may block, such as \fBread\fP(2), \fBwrite\fP(2), \fBwait\fP(2), + etc.) and library functions that may call these system calls (e.g. +-!fprintf!(3)) are cancellation points. LinuxThreads is not yet ++\fBfprintf\fP(3)) are cancellation points. LinuxThreads is not yet + integrated enough with the C library to implement this, and thus none + of the C library functions is a cancellation point. + + For system calls at least, there is a workaround. Cancellation + requests are transmitted to the target thread by sending it a + signal. That signal will interrupt all blocking system calls, causing +-them to return immediately with the !EINTR! error. So, checking for +-cancellation during a !read! system call, for instance, can be ++them to return immediately with the \fBEINTR\fP error. So, checking for ++cancellation during a \fBread\fP system call, for instance, can be + achieved as follows: + + .RS +--- a/linuxthreads/man/pthread_cleanup_push.man ++++ b/linuxthreads/man/pthread_cleanup_push.man +@@ -21,7 +21,7 @@ + .SH DESCRIPTION + + Cleanup handlers are functions that get called when a thread +-terminates, either by calling !pthread_exit!(3) or because of ++terminates, either by calling \fBpthread_exit\fP(3) or because of + cancellation. Cleanup handlers are installed and removed following a + stack-like discipline. + +@@ -32,41 +32,41 @@ + normally. The best way to avoid this is, just before locking the + mutex, to install a cleanup handler whose effect is to unlock the + mutex. Cleanup handlers can be used similarly to free blocks allocated +-with !malloc!(3) or close file descriptors on thread termination. ++with \fBmalloc\fP(3) or close file descriptors on thread termination. + +-!pthread_cleanup_push! installs the |routine| function with argument +-|arg| as a cleanup handler. From this point on to the matching +-!pthread_cleanup_pop!, the function |routine| will be called with +-arguments |arg| when the thread terminates, either through !pthread_exit!(3) ++\fBpthread_cleanup_push\fP installs the \fIroutine\fP function with argument ++\fIarg\fP as a cleanup handler. From this point on to the matching ++\fBpthread_cleanup_pop\fP, the function \fIroutine\fP will be called with ++arguments \fIarg\fP when the thread terminates, either through \fBpthread_exit\fP(3) + or by cancellation. If several cleanup handlers are active at that + point, they are called in LIFO order: the most recently installed + handler is called first. + +-!pthread_cleanup_pop! removes the most recently installed cleanup +-handler. If the |execute| argument is not 0, it also executes the +-handler, by calling the |routine| function with arguments |arg|. If +-the |execute| argument is 0, the handler is only removed but not ++\fBpthread_cleanup_pop\fP removes the most recently installed cleanup ++handler. If the \fIexecute\fP argument is not 0, it also executes the ++handler, by calling the \fIroutine\fP function with arguments \fIarg\fP. If ++the \fIexecute\fP argument is 0, the handler is only removed but not + executed. + +-Matching pairs of !pthread_cleanup_push! and !pthread_cleanup_pop! ++Matching pairs of \fBpthread_cleanup_push\fP and \fBpthread_cleanup_pop\fP + must occur in the same function, at the same level of block nesting. +-Actually, !pthread_cleanup_push! and !pthread_cleanup_pop! are macros, +-and the expansion of !pthread_cleanup_push! introduces an open brace !{! +-with the matching closing brace !}! being introduced by the expansion +-of the matching !pthread_cleanup_pop!. +- +-!pthread_cleanup_push_defer_np! is a non-portable extension that +-combines !pthread_cleanup_push! and !pthread_setcanceltype!(3). +-It pushes a cleanup handler just as !pthread_cleanup_push! does, but ++Actually, \fBpthread_cleanup_push\fP and \fBpthread_cleanup_pop\fP are macros, ++and the expansion of \fBpthread_cleanup_push\fP introduces an open brace \fB{\fP ++with the matching closing brace \fB}\fP being introduced by the expansion ++of the matching \fBpthread_cleanup_pop\fP. ++ ++\fBpthread_cleanup_push_defer_np\fP is a non-portable extension that ++combines \fBpthread_cleanup_push\fP and \fBpthread_setcanceltype\fP(3). ++It pushes a cleanup handler just as \fBpthread_cleanup_push\fP does, but + also saves the current cancellation type and sets it to deferred + cancellation. This ensures that the cleanup mechanism is effective + even if the thread was initially in asynchronous cancellation mode. + +-!pthread_cleanup_pop_restore_np! pops a cleanup handler introduced by +-!pthread_cleanup_push_defer_np!, and restores the cancellation type to +-its value at the time !pthread_cleanup_push_defer_np! was called. ++\fBpthread_cleanup_pop_restore_np\fP pops a cleanup handler introduced by ++\fBpthread_cleanup_push_defer_np\fP, and restores the cancellation type to ++its value at the time \fBpthread_cleanup_push_defer_np\fP was called. + +-!pthread_cleanup_push_defer_np! and !pthread_cleanup_pop_restore_np! ++\fBpthread_cleanup_push_defer_np\fP and \fBpthread_cleanup_pop_restore_np\fP + must occur in matching pairs, at the same level of block nesting. + + The following sequence +@@ -113,14 +113,14 @@ + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_exit!(3), +-!pthread_cancel!(3), +-!pthread_setcanceltype!(3). ++\fBpthread_exit\fP(3), ++\fBpthread_cancel\fP(3), ++\fBpthread_setcanceltype\fP(3). + + .SH EXAMPLE + +-Here is how to lock a mutex |mut| in such a way that it will be +-unlocked if the thread is canceled while |mut| is locked: ++Here is how to lock a mutex \fImut\fP in such a way that it will be ++unlocked if the thread is canceled while \fImut\fP is locked: + + .RS + .ft 3 +@@ -149,10 +149,10 @@ + .fi + + Notice that the code above is safe only in deferred cancellation mode +-(see !pthread_setcanceltype!(3)). In asynchronous cancellation mode, +-a cancellation can occur between !pthread_cleanup_push! and +-!pthread_mutex_lock!, or between !pthread_mutex_unlock! and +-!pthread_cleanup_pop!, resulting in both cases in the thread trying to ++(see \fBpthread_setcanceltype\fP(3)). In asynchronous cancellation mode, ++a cancellation can occur between \fBpthread_cleanup_push\fP and ++\fBpthread_mutex_lock\fP, or between \fBpthread_mutex_unlock\fP and ++\fBpthread_cleanup_pop\fP, resulting in both cases in the thread trying to + unlock a mutex not locked by the current thread. This is the main + reason why asynchronous cancellation is difficult to use. + +@@ -177,7 +177,7 @@ + + The code above can be rewritten in a more compact and more + efficient way, using the non-portable functions +-!pthread_cleanup_push_defer_np! and !pthread_cleanup_pop_restore_np!: ++\fBpthread_cleanup_push_defer_np\fP and \fBpthread_cleanup_pop_restore_np\fP: + + .RS + .ft 3 +--- a/linuxthreads/man/pthread_condattr_init.man ++++ b/linuxthreads/man/pthread_condattr_init.man +@@ -15,25 +15,25 @@ + .SH DESCRIPTION + + Condition attributes can be specified at condition creation time, by passing a +-condition attribute object as second argument to !pthread_cond_init!(3). +-Passing !NULL! is equivalent to passing a condition attribute object with ++condition attribute object as second argument to \fBpthread_cond_init\fP(3). ++Passing \fBNULL\fP is equivalent to passing a condition attribute object with + all attributes set to their default values. + + The LinuxThreads implementation supports no attributes for + conditions. The functions on condition attributes are included only + for compliance with the POSIX standard. + +-!pthread_condattr_init! initializes the condition attribute object +-|attr| and fills it with default values for the attributes. +-!pthread_condattr_destroy! destroys a condition attribute object, ++\fBpthread_condattr_init\fP initializes the condition attribute object ++\fIattr\fP and fills it with default values for the attributes. ++\fBpthread_condattr_destroy\fP destroys a condition attribute object, + which must not be reused until it is reinitialized. Both functions do + nothing in the LinuxThreads implementation. + + .SH "RETURN VALUE" +-!pthread_condattr_init! and !pthread_condattr_destroy! always return 0. ++\fBpthread_condattr_init\fP and \fBpthread_condattr_destroy\fP always return 0. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_cond_init!(3). ++\fBpthread_cond_init\fP(3). +--- a/linuxthreads/man/pthread_cond_init.man ++++ b/linuxthreads/man/pthread_cond_init.man +@@ -40,31 +40,31 @@ + variable and another thread signals the condition just before the + first thread actually waits on it. + +-!pthread_cond_init! initializes the condition variable |cond|, using the +-condition attributes specified in |cond_attr|, or default attributes +-if |cond_attr| is !NULL!. The LinuxThreads implementation supports no +-attributes for conditions, hence the |cond_attr| parameter is actually ++\fBpthread_cond_init\fP initializes the condition variable \fIcond\fP, using the ++condition attributes specified in \fIcond_attr\fP, or default attributes ++if \fIcond_attr\fP is \fBNULL\fP. The LinuxThreads implementation supports no ++attributes for conditions, hence the \fIcond_attr\fP parameter is actually + ignored. + +-Variables of type !pthread_cond_t! can also be initialized +-statically, using the constant !PTHREAD_COND_INITIALIZER!. ++Variables of type \fBpthread_cond_t\fP can also be initialized ++statically, using the constant \fBPTHREAD_COND_INITIALIZER\fP. + +-!pthread_cond_signal! restarts one of the threads that are waiting on +-the condition variable |cond|. If no threads are waiting on |cond|, +-nothing happens. If several threads are waiting on |cond|, exactly one ++\fBpthread_cond_signal\fP restarts one of the threads that are waiting on ++the condition variable \fIcond\fP. If no threads are waiting on \fIcond\fP, ++nothing happens. If several threads are waiting on \fIcond\fP, exactly one + is restarted, but it is not specified which. + +-!pthread_cond_broadcast! restarts all the threads that are waiting on +-the condition variable |cond|. Nothing happens if no threads are +-waiting on |cond|. ++\fBpthread_cond_broadcast\fP restarts all the threads that are waiting on ++the condition variable \fIcond\fP. Nothing happens if no threads are ++waiting on \fIcond\fP. + +-!pthread_cond_wait! atomically unlocks the |mutex| (as per +-!pthread_unlock_mutex!) and waits for the condition variable |cond| to ++\fBpthread_cond_wait\fP atomically unlocks the \fImutex\fP (as per ++\fBpthread_unlock_mutex\fP) and waits for the condition variable \fIcond\fP to + be signaled. The thread execution is suspended and does not consume +-any CPU time until the condition variable is signaled. The |mutex| ++any CPU time until the condition variable is signaled. The \fImutex\fP + must be locked by the calling thread on entrance to +-!pthread_cond_wait!. Before returning to the calling thread, +-!pthread_cond_wait! re-acquires |mutex| (as per !pthread_lock_mutex!). ++\fBpthread_cond_wait\fP. Before returning to the calling thread, ++\fBpthread_cond_wait\fP re-acquires \fImutex\fP (as per \fBpthread_lock_mutex\fP). + + Unlocking the mutex and suspending on the condition variable is done + atomically. Thus, if all threads always acquire the mutex before +@@ -72,37 +72,37 @@ + signaled (and thus ignored) between the time a thread locks the mutex + and the time it waits on the condition variable. + +-!pthread_cond_timedwait! atomically unlocks |mutex| and waits on +-|cond|, as !pthread_cond_wait! does, but it also bounds the duration +-of the wait. If |cond| has not been signaled within the amount of time +-specified by |abstime|, the mutex |mutex| is re-acquired and +-!pthread_cond_timedwait! returns the error !ETIMEDOUT!. +-The |abstime| parameter specifies an absolute time, with the same +-origin as !time!(2) and !gettimeofday!(2): an |abstime| of 0 ++\fBpthread_cond_timedwait\fP atomically unlocks \fImutex\fP and waits on ++\fIcond\fP, as \fBpthread_cond_wait\fP does, but it also bounds the duration ++of the wait. If \fIcond\fP has not been signaled within the amount of time ++specified by \fIabstime\fP, the mutex \fImutex\fP is re-acquired and ++\fBpthread_cond_timedwait\fP returns the error \fBETIMEDOUT\fP. ++The \fIabstime\fP parameter specifies an absolute time, with the same ++origin as \fBtime\fP(2) and \fBgettimeofday\fP(2): an \fIabstime\fP of 0 + corresponds to 00:00:00 GMT, January 1, 1970. + +-!pthread_cond_destroy! destroys a condition variable, freeing the ++\fBpthread_cond_destroy\fP destroys a condition variable, freeing the + resources it might hold. No threads must be waiting on the condition +-variable on entrance to !pthread_cond_destroy!. In the LinuxThreads ++variable on entrance to \fBpthread_cond_destroy\fP. In the LinuxThreads + implementation, no resources are associated with condition variables, +-thus !pthread_cond_destroy! actually does nothing except checking that ++thus \fBpthread_cond_destroy\fP actually does nothing except checking that + the condition has no waiting threads. + + .SH CANCELLATION + +-!pthread_cond_wait! and !pthread_cond_timedwait! are cancellation ++\fBpthread_cond_wait\fP and \fBpthread_cond_timedwait\fP are cancellation + points. If a thread is cancelled while suspended in one of these + functions, the thread immediately resumes execution, then locks again +-the |mutex| argument to !pthread_cond_wait! and +-!pthread_cond_timedwait!, and finally executes the cancellation. +-Consequently, cleanup handlers are assured that |mutex| is locked when ++the \fImutex\fP argument to \fBpthread_cond_wait\fP and ++\fBpthread_cond_timedwait\fP, and finally executes the cancellation. ++Consequently, cleanup handlers are assured that \fImutex\fP is locked when + they are called. + + .SH "ASYNC-SIGNAL SAFETY" + + The condition functions are not async-signal safe, and should not be + called from a signal handler. In particular, calling +-!pthread_cond_signal! or !pthread_cond_broadcast! from a signal ++\fBpthread_cond_signal\fP or \fBpthread_cond_broadcast\fP from a signal + handler may deadlock the calling thread. + + .SH "RETURN VALUE" +@@ -112,45 +112,45 @@ + + .SH ERRORS + +-!pthread_cond_init!, !pthread_cond_signal!, !pthread_cond_broadcast!, +-and !pthread_cond_wait! never return an error code. ++\fBpthread_cond_init\fP, \fBpthread_cond_signal\fP, \fBpthread_cond_broadcast\fP, ++and \fBpthread_cond_wait\fP never return an error code. + +-The !pthread_cond_timedwait! function returns the following error codes ++The \fBpthread_cond_timedwait\fP function returns the following error codes + on error: + .RS + .TP +-!ETIMEDOUT! ++\fBETIMEDOUT\fP + the condition variable was not signaled until the timeout specified by +-|abstime| ++\fIabstime\fP + + .TP +-!EINTR! +-!pthread_cond_timedwait! was interrupted by a signal ++\fBEINTR\fP ++\fBpthread_cond_timedwait\fP was interrupted by a signal + .RE + +-The !pthread_cond_destroy! function returns the following error code ++The \fBpthread_cond_destroy\fP function returns the following error code + on error: + .RS + .TP +-!EBUSY! +-some threads are currently waiting on |cond|. ++\fBEBUSY\fP ++some threads are currently waiting on \fIcond\fP. + .RE + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_condattr_init!(3), +-!pthread_mutex_lock!(3), +-!pthread_mutex_unlock!(3), +-!gettimeofday!(2), +-!nanosleep!(2). ++\fBpthread_condattr_init\fP(3), ++\fBpthread_mutex_lock\fP(3), ++\fBpthread_mutex_unlock\fP(3), ++\fBgettimeofday\fP(2), ++\fBnanosleep\fP(2). + + .SH EXAMPLE + +-Consider two shared variables |x| and |y|, protected by the mutex |mut|, +-and a condition variable |cond| that is to be signaled whenever |x| +-becomes greater than |y|. ++Consider two shared variables \fIx\fP and \fIy\fP, protected by the mutex \fImut\fP, ++and a condition variable \fIcond\fP that is to be signaled whenever \fIx\fP ++becomes greater than \fIy\fP. + + .RS + .ft 3 +@@ -164,7 +164,7 @@ + .RE + .fi + +-Waiting until |x| is greater than |y| is performed as follows: ++Waiting until \fIx\fP is greater than \fIy\fP is performed as follows: + + .RS + .ft 3 +@@ -181,8 +181,8 @@ + .RE + .fi + +-Modifications on |x| and |y| that may cause |x| to become greater than +-|y| should signal the condition if needed: ++Modifications on \fIx\fP and \fIy\fP that may cause \fIx\fP to become greater than ++\fIy\fP should signal the condition if needed: + + .RS + .ft 3 +@@ -199,11 +199,11 @@ + + If it can be proved that at most one waiting thread needs to be waken + up (for instance, if there are only two threads communicating through +-|x| and |y|), !pthread_cond_signal! can be used as a slightly more +-efficient alternative to !pthread_cond_broadcast!. In doubt, use +-!pthread_cond_broadcast!. ++\fIx\fP and \fIy\fP), \fBpthread_cond_signal\fP can be used as a slightly more ++efficient alternative to \fBpthread_cond_broadcast\fP. In doubt, use ++\fBpthread_cond_broadcast\fP. + +-To wait for |x| to becomes greater than |y| with a timeout of 5 ++To wait for \fIx\fP to becomes greater than \fIy\fP with a timeout of 5 + seconds, do: + + .RS +--- a/linuxthreads/man/pthread_create.man ++++ b/linuxthreads/man/pthread_create.man +@@ -9,38 +9,38 @@ + int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg); + + .SH DESCRIPTION +-!pthread_create! creates a new thread of control that executes ++\fBpthread_create\fP creates a new thread of control that executes + concurrently with the calling thread. The new thread applies the +-function |start_routine| passing it |arg| as first argument. The new +-thread terminates either explicitly, by calling !pthread_exit!(3), +-or implicitly, by returning from the |start_routine| function. The +-latter case is equivalent to calling !pthread_exit!(3) with the result +-returned by |start_routine| as exit code. +- +-The |attr| argument specifies thread attributes to be applied to the +-new thread. See !pthread_attr_init!(3) for a complete list of thread +-attributes. The |attr| argument can also be !NULL!, in which case ++function \fIstart_routine\fP passing it \fIarg\fP as first argument. The new ++thread terminates either explicitly, by calling \fBpthread_exit\fP(3), ++or implicitly, by returning from the \fIstart_routine\fP function. The ++latter case is equivalent to calling \fBpthread_exit\fP(3) with the result ++returned by \fIstart_routine\fP as exit code. ++ ++The \fIattr\fP argument specifies thread attributes to be applied to the ++new thread. See \fBpthread_attr_init\fP(3) for a complete list of thread ++attributes. The \fIattr\fP argument can also be \fBNULL\fP, in which case + default attributes are used: the created thread is joinable (not + detached) and has default (non real-time) scheduling policy. + + .SH "RETURN VALUE" + On success, the identifier of the newly created thread is stored in +-the location pointed by the |thread| argument, and a 0 is returned. On ++the location pointed by the \fIthread\fP argument, and a 0 is returned. On + error, a non-zero error code is returned. + + .SH ERRORS + .TP +-!EAGAIN! ++\fBEAGAIN\fP + not enough system resources to create a process for the new thread. + .TP +-!EAGAIN! +-more than !PTHREAD_THREADS_MAX! threads are already active. ++\fBEAGAIN\fP ++more than \fBPTHREAD_THREADS_MAX\fP threads are already active. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_exit!(3), +-!pthread_join!(3), +-!pthread_detach!(3), +-!pthread_attr_init!(3). ++\fBpthread_exit\fP(3), ++\fBpthread_join\fP(3), ++\fBpthread_detach\fP(3), ++\fBpthread_attr_init\fP(3). +--- a/linuxthreads/man/pthread_detach.man ++++ b/linuxthreads/man/pthread_detach.man +@@ -9,36 +9,36 @@ + int pthread_detach(pthread_t th); + + .SH DESCRIPTION +-!pthread_detach! put the thread |th| in the detached state. This +-guarantees that the memory resources consumed by |th| will be freed +-immediately when |th| terminates. However, this prevents other threads +-from synchronizing on the termination of |th| using !pthread_join!. ++\fBpthread_detach\fP put the thread \fIth\fP in the detached state. This ++guarantees that the memory resources consumed by \fIth\fP will be freed ++immediately when \fIth\fP terminates. However, this prevents other threads ++from synchronizing on the termination of \fIth\fP using \fBpthread_join\fP. + + A thread can be created initially in the detached state, using the +-!detachstate! attribute to !pthread_create!(3). In contrast, +-!pthread_detach! applies to threads created in the joinable state, and ++\fBdetachstate\fP attribute to \fBpthread_create\fP(3). In contrast, ++\fBpthread_detach\fP applies to threads created in the joinable state, and + which need to be put in the detached state later. + +-After !pthread_detach! completes, subsequent attempts to perform +-!pthread_join! on |th| will fail. If another thread is already joining +-the thread |th| at the time !pthread_detach! is called, +-!pthread_detach! does nothing and leaves |th| in the joinable state. ++After \fBpthread_detach\fP completes, subsequent attempts to perform ++\fBpthread_join\fP on \fIth\fP will fail. If another thread is already joining ++the thread \fIth\fP at the time \fBpthread_detach\fP is called, ++\fBpthread_detach\fP does nothing and leaves \fIth\fP in the joinable state. + + .SH "RETURN VALUE" + On success, 0 is returned. On error, a non-zero error code is returned. + + .SH ERRORS + .TP +-!ESRCH! +-No thread could be found corresponding to that specified by |th| ++\fBESRCH\fP ++No thread could be found corresponding to that specified by \fIth\fP + .TP +-!EINVAL! +-the thread |th| is already in the detached state ++\fBEINVAL\fP ++the thread \fIth\fP is already in the detached state + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_create!(3), +-!pthread_join!(3), +-!pthread_attr_setdetachstate!(3). +\ No newline at end of file ++\fBpthread_create\fP(3), ++\fBpthread_join\fP(3), ++\fBpthread_attr_setdetachstate\fP(3). +\ No newline at end of file +--- a/linuxthreads/man/pthread_equal.man ++++ b/linuxthreads/man/pthread_equal.man +@@ -9,15 +9,15 @@ + int pthread_equal(pthread_t thread1, pthread_t thread2); + + .SH DESCRIPTION +-!pthread_equal! determines if two thread identifiers refer to the same ++\fBpthread_equal\fP determines if two thread identifiers refer to the same + thread. + + .SH "RETURN VALUE" +-A non-zero value is returned if |thread1| and |thread2| refer to the ++A non-zero value is returned if \fIthread1\fP and \fIthread2\fP refer to the + same thread. Otherwise, 0 is returned. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_self!(3). ++\fBpthread_self\fP(3). +--- a/linuxthreads/man/pthread_exit.man ++++ b/linuxthreads/man/pthread_exit.man +@@ -9,24 +9,24 @@ + void pthread_exit(void *retval); + + .SH DESCRIPTION +-!pthread_exit! terminates the execution of the calling thread. ++\fBpthread_exit\fP terminates the execution of the calling thread. + All cleanup handlers that have been set for the calling thread with +-!pthread_cleanup_push!(3) are executed in reverse order (the most ++\fBpthread_cleanup_push\fP(3) are executed in reverse order (the most + recently pushed handler is executed first). Finalization functions for +-thread-specific data are then called for all keys that have non-!NULL! ++thread-specific data are then called for all keys that have non-\fBNULL\fP + values associated with them in the calling thread (see +-!pthread_key_create!(3)). Finally, execution of the calling thread is ++\fBpthread_key_create\fP(3)). Finally, execution of the calling thread is + stopped. + +-The |retval| argument is the return value of the thread. It can be +-consulted from another thread using !pthread_join!(3). ++The \fIretval\fP argument is the return value of the thread. It can be ++consulted from another thread using \fBpthread_join\fP(3). + + .SH "RETURN VALUE" +-The !pthread_exit! function never returns. ++The \fBpthread_exit\fP function never returns. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_create!(3), +-!pthread_join!(3). ++\fBpthread_create\fP(3), ++\fBpthread_join\fP(3). +--- a/linuxthreads/man/pthread_join.man ++++ b/linuxthreads/man/pthread_join.man +@@ -9,62 +9,62 @@ + int pthread_join(pthread_t th, void **thread_return); + + .SH DESCRIPTION +-!pthread_join! suspends the execution of the calling thread until the +-thread identified by |th| terminates, either by calling !pthread_exit!(3) ++\fBpthread_join\fP suspends the execution of the calling thread until the ++thread identified by \fIth\fP terminates, either by calling \fBpthread_exit\fP(3) + or by being cancelled. + +-If |thread_return| is not !NULL!, the return value of |th| is stored +-in the location pointed to by |thread_return|. The return value of +-|th| is either the argument it gave to !pthread_exit!(3), or +-!PTHREAD_CANCELED! if |th| was cancelled. +- +-The joined thread !th! must be in the joinable state: it must not have +-been detached using !pthread_detach!(3) or the +-!PTHREAD_CREATE_DETACHED! attribute to !pthread_create!(3). ++If \fIthread_return\fP is not \fBNULL\fP, the return value of \fIth\fP is stored ++in the location pointed to by \fIthread_return\fP. The return value of ++\fIth\fP is either the argument it gave to \fBpthread_exit\fP(3), or ++\fBPTHREAD_CANCELED\fP if \fIth\fP was cancelled. ++ ++The joined thread \fBth\fP must be in the joinable state: it must not have ++been detached using \fBpthread_detach\fP(3) or the ++\fBPTHREAD_CREATE_DETACHED\fP attribute to \fBpthread_create\fP(3). + + When a joinable thread terminates, its memory resources (thread + descriptor and stack) are not deallocated until another thread +-performs !pthread_join! on it. Therefore, !pthread_join! must be ++performs \fBpthread_join\fP on it. Therefore, \fBpthread_join\fP must be + called once for each joinable thread created to avoid memory leaks. + + At most one thread can wait for the termination of a given +-thread. Calling !pthread_join! on a thread |th| on which another ++thread. Calling \fBpthread_join\fP on a thread \fIth\fP on which another + thread is already waiting for termination returns an error. + + .SH CANCELLATION + +-!pthread_join! is a cancellation point. If a thread is canceled while +-suspended in !pthread_join!, the thread execution resumes immediately +-and the cancellation is executed without waiting for the |th| thread +-to terminate. If cancellation occurs during !pthread_join!, the |th| ++\fBpthread_join\fP is a cancellation point. If a thread is canceled while ++suspended in \fBpthread_join\fP, the thread execution resumes immediately ++and the cancellation is executed without waiting for the \fIth\fP thread ++to terminate. If cancellation occurs during \fBpthread_join\fP, the \fIth\fP + thread remains not joined. + + .SH "RETURN VALUE" +-On success, the return value of |th| is stored in the location pointed +-to by |thread_return|, and 0 is returned. On error, a non-zero error ++On success, the return value of \fIth\fP is stored in the location pointed ++to by \fIthread_return\fP, and 0 is returned. On error, a non-zero error + code is returned. + + .SH ERRORS + .TP +-!ESRCH! +-No thread could be found corresponding to that specified by |th|. ++\fBESRCH\fP ++No thread could be found corresponding to that specified by \fIth\fP. + .TP +-!EINVAL! +-The |th| thread has been detached. ++\fBEINVAL\fP ++The \fIth\fP thread has been detached. + .TP +-!EINVAL! +-Another thread is already waiting on termination of |th|. ++\fBEINVAL\fP ++Another thread is already waiting on termination of \fIth\fP. + .TP +-!EDEADLK! +-The |th| argument refers to the calling thread. ++\fBEDEADLK\fP ++The \fIth\fP argument refers to the calling thread. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_exit!(3), +-!pthread_detach!(3), +-!pthread_create!(3), +-!pthread_attr_setdetachstate!(3), +-!pthread_cleanup_push!(3), +-!pthread_key_create!(3). ++\fBpthread_exit\fP(3), ++\fBpthread_detach\fP(3), ++\fBpthread_create\fP(3), ++\fBpthread_attr_setdetachstate\fP(3), ++\fBpthread_cleanup_push\fP(3), ++\fBpthread_key_create\fP(3). +--- a/linuxthreads/man/pthread_key_create.man ++++ b/linuxthreads/man/pthread_key_create.man +@@ -23,81 +23,81 @@ + + Each thread possesses a private memory block, the thread-specific data + area, or TSD area for short. This area is indexed by TSD keys. The TSD +-area associates values of type !void *! to TSD keys. TSD keys are ++area associates values of type \fBvoid *\fP to TSD keys. TSD keys are + common to all threads, but the value associated with a given TSD key + can be different in each thread. + +-For concreteness, the TSD areas can be viewed as arrays of !void *! ++For concreteness, the TSD areas can be viewed as arrays of \fBvoid *\fP + pointers, TSD keys as integer indices into these arrays, and the value + of a TSD key as the value of the corresponding array element in the + calling thread. + +-When a thread is created, its TSD area initially associates !NULL! ++When a thread is created, its TSD area initially associates \fBNULL\fP + with all keys. + +-!pthread_key_create! allocates a new TSD key. The key is stored in the +-location pointed to by |key|. There is a limit of !PTHREAD_KEYS_MAX! ++\fBpthread_key_create\fP allocates a new TSD key. The key is stored in the ++location pointed to by \fIkey\fP. There is a limit of \fBPTHREAD_KEYS_MAX\fP + on the number of keys allocated at a given time. The value initially +-associated with the returned key is !NULL! in all currently executing ++associated with the returned key is \fBNULL\fP in all currently executing + threads. + +-The |destr_function| argument, if not !NULL!, specifies a destructor ++The \fIdestr_function\fP argument, if not \fBNULL\fP, specifies a destructor + function associated with the key. When a thread terminates via +-!pthread_exit! or by cancellation, |destr_function| is called with ++\fBpthread_exit\fP or by cancellation, \fIdestr_function\fP is called with + arguments the value associated with the key in that thread. The +-|destr_function| is not called if that value is !NULL!. The order in ++\fIdestr_function\fP is not called if that value is \fBNULL\fP. The order in + which destructor functions are called at thread termination time is + unspecified. + +-Before the destructor function is called, the !NULL! value is ++Before the destructor function is called, the \fBNULL\fP value is + associated with the key in the current thread. A destructor function +-might, however, re-associate non-!NULL! values to that key or some ++might, however, re-associate non-\fBNULL\fP values to that key or some + other key. To deal with this, if after all the destructors have been +-called for all non-!NULL! values, there are still some non-!NULL! ++called for all non-\fBNULL\fP values, there are still some non-\fBNULL\fP + values with associated destructors, then the process is repeated. The + LinuxThreads implementation stops the process after +-!PTHREAD_DESTRUCTOR_ITERATIONS! iterations, even if some non-!NULL! ++\fBPTHREAD_DESTRUCTOR_ITERATIONS\fP iterations, even if some non-\fBNULL\fP + values with associated descriptors remain. Other implementations may + loop indefinitely. + +-!pthread_key_delete! deallocates a TSD key. It does not check whether +-non-!NULL! values are associated with that key in the currently ++\fBpthread_key_delete\fP deallocates a TSD key. It does not check whether ++non-\fBNULL\fP values are associated with that key in the currently + executing threads, nor call the destructor function associated with + the key. + +-!pthread_setspecific! changes the value associated with |key| in the +-calling thread, storing the given |pointer| instead. ++\fBpthread_setspecific\fP changes the value associated with \fIkey\fP in the ++calling thread, storing the given \fIpointer\fP instead. + +-!pthread_getspecific! returns the value currently associated with +-|key| in the calling thread. ++\fBpthread_getspecific\fP returns the value currently associated with ++\fIkey\fP in the calling thread. + + .SH "RETURN VALUE" + +-!pthread_key_create!, !pthread_key_delete!, and !pthread_setspecific! ++\fBpthread_key_create\fP, \fBpthread_key_delete\fP, and \fBpthread_setspecific\fP + return 0 on success and a non-zero error code on failure. If +-successful, !pthread_key_create! stores the newly allocated key in the +-location pointed to by its |key| argument. ++successful, \fBpthread_key_create\fP stores the newly allocated key in the ++location pointed to by its \fIkey\fP argument. + +-!pthread_getspecific! returns the value associated with |key| on +-success, and !NULL! on error. ++\fBpthread_getspecific\fP returns the value associated with \fIkey\fP on ++success, and \fBNULL\fP on error. + + .SH ERRORS +-!pthread_key_create! returns the following error code on error: ++\fBpthread_key_create\fP returns the following error code on error: + .RS + .TP +-!EAGAIN! +-!PTHREAD_KEYS_MAX! keys are already allocated ++\fBEAGAIN\fP ++\fBPTHREAD_KEYS_MAX\fP keys are already allocated + .RE + +-!pthread_key_delete! and !pthread_setspecific! return the following ++\fBpthread_key_delete\fP and \fBpthread_setspecific\fP return the following + error code on error: + .RS + .TP +-!EINVAL! +-|key| is not a valid, allocated TSD key ++\fBEINVAL\fP ++\fIkey\fP is not a valid, allocated TSD key + .RE + +-!pthread_getspecific! returns !NULL! if |key| is not a valid, ++\fBpthread_getspecific\fP returns \fBNULL\fP if \fIkey\fP is not a valid, + allocated TSD key. + + .SH AUTHOR +--- a/linuxthreads/man/pthread_kill_other_threads_np.man ++++ b/linuxthreads/man/pthread_kill_other_threads_np.man +@@ -9,14 +9,14 @@ + void pthread_kill_other_threads_np(void); + + .SH DESCRIPTION +-!pthread_kill_other_threads_np! is a non-portable LinuxThreads extension. ++\fBpthread_kill_other_threads_np\fP is a non-portable LinuxThreads extension. + It causes all threads in the program to terminate immediately, except + the calling thread which proceeds normally. It is intended to be +-called just before a thread calls one of the !exec! functions, +-e.g. !execve!(2). ++called just before a thread calls one of the \fBexec\fP functions, ++e.g. \fBexecve\fP(2). + + Termination of the other threads is not performed through +-!pthread_cancel!(3) and completely bypasses the cancellation ++\fBpthread_cancel\fP(3) and completely bypasses the cancellation + mechanism. Hence, the current settings for cancellation state and + cancellation type are ignored, and the cleanup handlers are not + executed in the terminated threads. +@@ -25,16 +25,16 @@ + Xavier Leroy + + .SH "SEE ALSO" +-!execve!(2), +-!pthread_setcancelstate!(3), +-!pthread_setcanceltype!(3), +-!pthread_cancel!(3). ++\fBexecve\fP(2), ++\fBpthread_setcancelstate\fP(3), ++\fBpthread_setcanceltype\fP(3), ++\fBpthread_cancel\fP(3). + + .SH BUGS + +-According to POSIX 1003.1c, a successful !exec*! in one of the threads ++According to POSIX 1003.1c, a successful \fBexec*\fP in one of the threads + should terminate automatically all other threads in the program. + This behavior is not yet implemented in LinuxThreads. +-Calling !pthread_kill_other_threads_np! before !exec*! achieves much +-of the same behavior, except that if !exec*! ultimately fails, then ++Calling \fBpthread_kill_other_threads_np\fP before \fBexec*\fP achieves much ++of the same behavior, except that if \fBexec*\fP ultimately fails, then + all other threads are already killed. +--- a/linuxthreads/man/pthread_mutexattr_init.man ++++ b/linuxthreads/man/pthread_mutexattr_init.man +@@ -21,64 +21,64 @@ + .SH DESCRIPTION + + Mutex attributes can be specified at mutex creation time, by passing a +-mutex attribute object as second argument to !pthread_mutex_init!(3). +-Passing !NULL! is equivalent to passing a mutex attribute object with ++mutex attribute object as second argument to \fBpthread_mutex_init\fP(3). ++Passing \fBNULL\fP is equivalent to passing a mutex attribute object with + all attributes set to their default values. + +-!pthread_mutexattr_init! initializes the mutex attribute object |attr| ++\fBpthread_mutexattr_init\fP initializes the mutex attribute object \fIattr\fP + and fills it with default values for the attributes. + +-!pthread_mutexattr_destroy! destroys a mutex attribute object, which +-must not be reused until it is reinitialized. !pthread_mutexattr_destroy! ++\fBpthread_mutexattr_destroy\fP destroys a mutex attribute object, which ++must not be reused until it is reinitialized. \fBpthread_mutexattr_destroy\fP + does nothing in the LinuxThreads implementation. + + LinuxThreads supports only one mutex attribute: the mutex kind, which +-is either !PTHREAD_MUTEX_FAST_NP! for ``fast'' mutexes, +-!PTHREAD_MUTEX_RECURSIVE_NP! for ``recursive'' mutexes, +-or !PTHREAD_MUTEX_ERRORCHECK_NP! for ``error checking'' mutexes. +-As the !NP! suffix indicates, this is a non-portable extension to the ++is either \fBPTHREAD_MUTEX_FAST_NP\fP for ``fast'' mutexes, ++\fBPTHREAD_MUTEX_RECURSIVE_NP\fP for ``recursive'' mutexes, ++or \fBPTHREAD_MUTEX_ERRORCHECK_NP\fP for ``error checking'' mutexes. ++As the \fBNP\fP suffix indicates, this is a non-portable extension to the + POSIX standard and should not be employed in portable programs. + + The mutex kind determines what happens if a thread attempts to lock a +-mutex it already owns with !pthread_mutex_lock!(3). If the mutex is of +-the ``fast'' kind, !pthread_mutex_lock!(3) simply suspends the calling ++mutex it already owns with \fBpthread_mutex_lock\fP(3). If the mutex is of ++the ``fast'' kind, \fBpthread_mutex_lock\fP(3) simply suspends the calling + thread forever. If the mutex is of the ``error checking'' kind, +-!pthread_mutex_lock!(3) returns immediately with the error code +-!EDEADLK!. If the mutex is of the ``recursive'' kind, the call to +-!pthread_mutex_lock!(3) returns immediately with a success return ++\fBpthread_mutex_lock\fP(3) returns immediately with the error code ++\fBEDEADLK\fP. If the mutex is of the ``recursive'' kind, the call to ++\fBpthread_mutex_lock\fP(3) returns immediately with a success return + code. The number of times the thread owning the mutex has locked it is + recorded in the mutex. The owning thread must call +-!pthread_mutex_unlock!(3) the same number of times before the mutex ++\fBpthread_mutex_unlock\fP(3) the same number of times before the mutex + returns to the unlocked state. + +-The default mutex kind is ``fast'', that is, !PTHREAD_MUTEX_FAST_NP!. ++The default mutex kind is ``fast'', that is, \fBPTHREAD_MUTEX_FAST_NP\fP. + +-!pthread_mutexattr_settype! sets the mutex kind attribute in |attr| +-to the value specified by |kind|. ++\fBpthread_mutexattr_settype\fP sets the mutex kind attribute in \fIattr\fP ++to the value specified by \fIkind\fP. + +-!pthread_mutexattr_gettype! retrieves the current value of the +-mutex kind attribute in |attr| and stores it in the location pointed +-to by |kind|. ++\fBpthread_mutexattr_gettype\fP retrieves the current value of the ++mutex kind attribute in \fIattr\fP and stores it in the location pointed ++to by \fIkind\fP. + + .SH "RETURN VALUE" +-!pthread_mutexattr_init!, !pthread_mutexattr_destroy! and +-!pthread_mutexattr_gettype! always return 0. ++\fBpthread_mutexattr_init\fP, \fBpthread_mutexattr_destroy\fP and ++\fBpthread_mutexattr_gettype\fP always return 0. + +-!pthread_mutexattr_settype! returns 0 on success and a non-zero ++\fBpthread_mutexattr_settype\fP returns 0 on success and a non-zero + error code on error. + + .SH ERRORS + +-On error, !pthread_mutexattr_settype! returns the following error code: ++On error, \fBpthread_mutexattr_settype\fP returns the following error code: + .TP +-!EINVAL! +-|kind| is neither !PTHREAD_MUTEX_FAST_NP! nor !PTHREAD_MUTEX_RECURSIVE_NP! +-nor !PTHREAD_MUTEX_ERRORCHECK_NP! ++\fBEINVAL\fP ++\fIkind\fP is neither \fBPTHREAD_MUTEX_FAST_NP\fP nor \fBPTHREAD_MUTEX_RECURSIVE_NP\fP ++nor \fBPTHREAD_MUTEX_ERRORCHECK_NP\fP + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_mutex_init!(3), +-!pthread_mutex_lock!(3), +-!pthread_mutex_unlock!(3). ++\fBpthread_mutex_init\fP(3), ++\fBpthread_mutex_lock\fP(3), ++\fBpthread_mutex_unlock\fP(3). +--- a/linuxthreads/man/pthread_mutexattr_setkind_np.man ++++ b/linuxthreads/man/pthread_mutexattr_setkind_np.man +@@ -14,26 +14,26 @@ + + .SH DESCRIPTION + +-These functions are deprecated, use !pthread_mutexattr_settype!(3) +-and !pthread_mutexattr_gettype!(3) instead. ++These functions are deprecated, use \fBpthread_mutexattr_settype\fP(3) ++and \fBpthread_mutexattr_gettype\fP(3) instead. + + .SH "RETURN VALUE" +-!pthread_mutexattr_getkind_np! always returns 0. ++\fBpthread_mutexattr_getkind_np\fP always returns 0. + +-!pthread_mutexattr_setkind_np! returns 0 on success and a non-zero ++\fBpthread_mutexattr_setkind_np\fP returns 0 on success and a non-zero + error code on error. + + .SH ERRORS + +-On error, !pthread_mutexattr_setkind_np! returns the following error code: ++On error, \fBpthread_mutexattr_setkind_np\fP returns the following error code: + .TP +-!EINVAL! +-|kind| is neither !PTHREAD_MUTEX_FAST_NP! nor !PTHREAD_MUTEX_RECURSIVE_NP! +-nor !PTHREAD_MUTEX_ERRORCHECK_NP! ++\fBEINVAL\fP ++\fIkind\fP is neither \fBPTHREAD_MUTEX_FAST_NP\fP nor \fBPTHREAD_MUTEX_RECURSIVE_NP\fP ++nor \fBPTHREAD_MUTEX_ERRORCHECK_NP\fP + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_mutexattr_settype!(3), +-!pthread_mutexattr_gettype!(3). ++\fBpthread_mutexattr_settype\fP(3), ++\fBpthread_mutexattr_gettype\fP(3). +--- a/linuxthreads/man/pthread_mutex_init.man ++++ b/linuxthreads/man/pthread_mutex_init.man +@@ -38,75 +38,75 @@ + that is already locked by another thread is suspended until the owning + thread unlocks the mutex first. + +-!pthread_mutex_init! initializes the mutex object pointed to by +-|mutex| according to the mutex attributes specified in |mutexattr|. +-If |mutexattr| is !NULL!, default attributes are used instead. ++\fBpthread_mutex_init\fP initializes the mutex object pointed to by ++\fImutex\fP according to the mutex attributes specified in \fImutexattr\fP. ++If \fImutexattr\fP is \fBNULL\fP, default attributes are used instead. + + The LinuxThreads implementation supports only one mutex attributes, +-the |mutex kind|, which is either ``fast'', ``recursive'', or ++the \fImutex kind\fP, which is either ``fast'', ``recursive'', or + ``error checking''. The kind of a mutex determines whether + it can be locked again by a thread that already owns it. +-The default kind is ``fast''. See !pthread_mutexattr_init!(3) for more ++The default kind is ``fast''. See \fBpthread_mutexattr_init\fP(3) for more + information on mutex attributes. + +-Variables of type !pthread_mutex_t! can also be initialized +-statically, using the constants !PTHREAD_MUTEX_INITIALIZER! (for fast +-mutexes), !PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP! (for recursive +-mutexes), and !PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP! (for error checking ++Variables of type \fBpthread_mutex_t\fP can also be initialized ++statically, using the constants \fBPTHREAD_MUTEX_INITIALIZER\fP (for fast ++mutexes), \fBPTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP\fP (for recursive ++mutexes), and \fBPTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP\fP (for error checking + mutexes). + +-!pthread_mutex_lock! locks the given mutex. If the mutex is currently ++\fBpthread_mutex_lock\fP locks the given mutex. If the mutex is currently + unlocked, it becomes locked and owned by the calling thread, and +-!pthread_mutex_lock! returns immediately. If the mutex is already +-locked by another thread, !pthread_mutex_lock! suspends the calling ++\fBpthread_mutex_lock\fP returns immediately. If the mutex is already ++locked by another thread, \fBpthread_mutex_lock\fP suspends the calling + thread until the mutex is unlocked. + + If the mutex is already locked by the calling thread, the behavior of +-!pthread_mutex_lock! depends on the kind of the mutex. If the mutex is ++\fBpthread_mutex_lock\fP depends on the kind of the mutex. If the mutex is + of the ``fast'' kind, the calling thread is suspended until the mutex + is unlocked, thus effectively causing the calling thread to + deadlock. If the mutex is of the ``error checking'' kind, +-!pthread_mutex_lock! returns immediately with the error code !EDEADLK!. +-If the mutex is of the ``recursive'' kind, !pthread_mutex_lock! ++\fBpthread_mutex_lock\fP returns immediately with the error code \fBEDEADLK\fP. ++If the mutex is of the ``recursive'' kind, \fBpthread_mutex_lock\fP + succeeds and returns immediately, recording the number of times the + calling thread has locked the mutex. An equal number of +-!pthread_mutex_unlock! operations must be performed before the mutex ++\fBpthread_mutex_unlock\fP operations must be performed before the mutex + returns to the unlocked state. + +-!pthread_mutex_trylock! behaves identically to !pthread_mutex_lock!, ++\fBpthread_mutex_trylock\fP behaves identically to \fBpthread_mutex_lock\fP, + except that it does not block the calling thread if the mutex is + already locked by another thread (or by the calling thread in the case +-of a ``fast'' mutex). Instead, !pthread_mutex_trylock! returns +-immediately with the error code !EBUSY!. ++of a ``fast'' mutex). Instead, \fBpthread_mutex_trylock\fP returns ++immediately with the error code \fBEBUSY\fP. + +-!pthread_mutex_unlock! unlocks the given mutex. The mutex is assumed ++\fBpthread_mutex_unlock\fP unlocks the given mutex. The mutex is assumed + to be locked and owned by the calling thread on entrance to +-!pthread_mutex_unlock!. If the mutex is of the ``fast'' kind, +-!pthread_mutex_unlock! always returns it to the unlocked state. If it ++\fBpthread_mutex_unlock\fP. If the mutex is of the ``fast'' kind, ++\fBpthread_mutex_unlock\fP always returns it to the unlocked state. If it + is of the ``recursive'' kind, it decrements the locking count of the +-mutex (number of !pthread_mutex_lock! operations performed on it by ++mutex (number of \fBpthread_mutex_lock\fP operations performed on it by + the calling thread), and only when this count reaches zero is the + mutex actually unlocked. + + On ``error checking'' and ``recursive'' mutexes, +-!pthread_mutex_unlock! actually checks at run-time that the mutex is ++\fBpthread_mutex_unlock\fP actually checks at run-time that the mutex is + locked on entrance, and that it was locked by the same thread that is +-now calling !pthread_mutex_unlock!. If these conditions are not met, ++now calling \fBpthread_mutex_unlock\fP. If these conditions are not met, + an error code is returned and the mutex remains unchanged. ``Fast'' + mutexes perform no such checks, thus allowing a locked mutex to be + unlocked by a thread other than its owner. This is non-portable behavior + and must not be relied upon. + +-!pthread_mutex_destroy! destroys a mutex object, freeing the resources ++\fBpthread_mutex_destroy\fP destroys a mutex object, freeing the resources + it might hold. The mutex must be unlocked on entrance. In the + LinuxThreads implementation, no resources are associated with mutex +-objects, thus !pthread_mutex_destroy! actually does nothing except ++objects, thus \fBpthread_mutex_destroy\fP actually does nothing except + checking that the mutex is unlocked. + + .SH CANCELLATION + + None of the mutex functions is a cancellation point, not even +-!pthread_mutex_lock!, in spite of the fact that it can suspend a ++\fBpthread_mutex_lock\fP, in spite of the fact that it can suspend a + thread for arbitrary durations. This way, the status of mutexes at + cancellation points is predictable, allowing cancellation handlers to + unlock precisely those mutexes that need to be unlocked before the +@@ -117,58 +117,58 @@ + + The mutex functions are not async-signal safe. What this means is that + they should not be called from a signal handler. In particular, +-calling !pthread_mutex_lock! or !pthread_mutex_unlock! from a signal ++calling \fBpthread_mutex_lock\fP or \fBpthread_mutex_unlock\fP from a signal + handler may deadlock the calling thread. + + .SH "RETURN VALUE" + +-!pthread_mutex_init! always returns 0. The other mutex functions ++\fBpthread_mutex_init\fP always returns 0. The other mutex functions + return 0 on success and a non-zero error code on error. + + .SH ERRORS + +-The !pthread_mutex_lock! function returns the following error code ++The \fBpthread_mutex_lock\fP function returns the following error code + on error: + .RS + .TP +-!EINVAL! ++\fBEINVAL\fP + the mutex has not been properly initialized. + + .TP +-!EDEADLK! ++\fBEDEADLK\fP + the mutex is already locked by the calling thread + (``error checking'' mutexes only). + .RE + +-The !pthread_mutex_trylock! function returns the following error codes ++The \fBpthread_mutex_trylock\fP function returns the following error codes + on error: + .RS + .TP +-!EBUSY! ++\fBEBUSY\fP + the mutex could not be acquired because it was currently locked. + + .TP +-!EINVAL! ++\fBEINVAL\fP + the mutex has not been properly initialized. + .RE + +-The !pthread_mutex_unlock! function returns the following error code ++The \fBpthread_mutex_unlock\fP function returns the following error code + on error: + .RS + .TP +-!EINVAL! ++\fBEINVAL\fP + the mutex has not been properly initialized. + + .TP +-!EPERM! ++\fBEPERM\fP + the calling thread does not own the mutex (``error checking'' mutexes only). + .RE + +-The !pthread_mutex_destroy! function returns the following error code ++The \fBpthread_mutex_destroy\fP function returns the following error code + on error: + .RS + .TP +-!EBUSY! ++\fBEBUSY\fP + the mutex is currently locked. + .RE + +@@ -176,13 +176,13 @@ + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_mutexattr_init!(3), +-!pthread_mutexattr_setkind_np!(3), +-!pthread_cancel!(3). ++\fBpthread_mutexattr_init\fP(3), ++\fBpthread_mutexattr_setkind_np\fP(3), ++\fBpthread_cancel\fP(3). + + .SH EXAMPLE + +-A shared global variable |x| can be protected by a mutex as follows: ++A shared global variable \fIx\fP can be protected by a mutex as follows: + + .RS + .ft 3 +@@ -195,8 +195,8 @@ + .RE + .fi + +-All accesses and modifications to |x| should be bracketed by calls to +-!pthread_mutex_lock! and !pthread_mutex_unlock! as follows: ++All accesses and modifications to \fIx\fP should be bracketed by calls to ++\fBpthread_mutex_lock\fP and \fBpthread_mutex_unlock\fP as follows: + + .RS + .ft 3 +--- a/linuxthreads/man/pthread_once.man ++++ b/linuxthreads/man/pthread_once.man +@@ -12,19 +12,19 @@ + + .SH DESCRIPTION + +-The purpose of !pthread_once! is to ensure that a piece of +-initialization code is executed at most once. The |once_control| ++The purpose of \fBpthread_once\fP is to ensure that a piece of ++initialization code is executed at most once. The \fIonce_control\fP + argument points to a static or extern variable statically initialized +-to !PTHREAD_ONCE_INIT!. ++to \fBPTHREAD_ONCE_INIT\fP. + +-The first time !pthread_once! is called with a given |once_control| +-argument, it calls |init_routine| with no argument and changes the +-value of the |once_control| variable to record that initialization has +-been performed. Subsequent calls to !pthread_once! with the same +-!once_control! argument do nothing. ++The first time \fBpthread_once\fP is called with a given \fIonce_control\fP ++argument, it calls \fIinit_routine\fP with no argument and changes the ++value of the \fIonce_control\fP variable to record that initialization has ++been performed. Subsequent calls to \fBpthread_once\fP with the same ++\fBonce_control\fP argument do nothing. + + .SH "RETURN VALUE" +-!pthread_once! always returns 0. ++\fBpthread_once\fP always returns 0. + + .SH ERRORS + None. +--- a/linuxthreads/man/pthread_self.man ++++ b/linuxthreads/man/pthread_self.man +@@ -9,15 +9,15 @@ + pthread_t pthread_self(void); + + .SH DESCRIPTION +-!pthread_self! return the thread identifier for the calling thread. ++\fBpthread_self\fP return the thread identifier for the calling thread. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_equal!(3), +-!pthread_join!(3), +-!pthread_detach!(3), +-!pthread_setschedparam!(3), +-!pthread_getschedparam!(3). ++\fBpthread_equal\fP(3), ++\fBpthread_join\fP(3), ++\fBpthread_detach\fP(3), ++\fBpthread_setschedparam\fP(3), ++\fBpthread_getschedparam\fP(3). + +--- a/linuxthreads/man/pthread_setschedparam.man ++++ b/linuxthreads/man/pthread_setschedparam.man +@@ -14,66 +14,66 @@ + + .SH DESCRIPTION + +-!pthread_setschedparam! sets the scheduling parameters for the thread +-|target_thread| as indicated by |policy| and |param|. |policy| can be +-either !SCHED_OTHER! (regular, non-realtime scheduling), !SCHED_RR! +-(realtime, round-robin) or !SCHED_FIFO! (realtime, first-in +-first-out). |param| specifies the scheduling priority for the two +-realtime policies. See !sched_setpolicy!(2) for more information on ++\fBpthread_setschedparam\fP sets the scheduling parameters for the thread ++\fItarget_thread\fP as indicated by \fIpolicy\fP and \fIparam\fP. \fIpolicy\fP can be ++either \fBSCHED_OTHER\fP (regular, non-realtime scheduling), \fBSCHED_RR\fP ++(realtime, round-robin) or \fBSCHED_FIFO\fP (realtime, first-in ++first-out). \fIparam\fP specifies the scheduling priority for the two ++realtime policies. See \fBsched_setpolicy\fP(2) for more information on + scheduling policies. + +-The realtime scheduling policies !SCHED_RR! and !SCHED_FIFO! are ++The realtime scheduling policies \fBSCHED_RR\fP and \fBSCHED_FIFO\fP are + available only to processes with superuser privileges. + +-!pthread_getschedparam! retrieves the scheduling policy and scheduling +-parameters for the thread |target_thread| and store them in the +-locations pointed to by |policy| and |param|, respectively. ++\fBpthread_getschedparam\fP retrieves the scheduling policy and scheduling ++parameters for the thread \fItarget_thread\fP and store them in the ++locations pointed to by \fIpolicy\fP and \fIparam\fP, respectively. + + .SH "RETURN VALUE" +-!pthread_setschedparam! and !pthread_getschedparam! return 0 on ++\fBpthread_setschedparam\fP and \fBpthread_getschedparam\fP return 0 on + success and a non-zero error code on error. + + .SH ERRORS +-On error, !pthread_setschedparam! returns the following error codes: ++On error, \fBpthread_setschedparam\fP returns the following error codes: + .RS + .TP +-!EINVAL! +-|policy| is not one of !SCHED_OTHER!, !SCHED_RR!, !SCHED_FIFO! ++\fBEINVAL\fP ++\fIpolicy\fP is not one of \fBSCHED_OTHER\fP, \fBSCHED_RR\fP, \fBSCHED_FIFO\fP + + .TP +-!EINVAL! +-the priority value specified by |param| is not valid for the specified policy ++\fBEINVAL\fP ++the priority value specified by \fIparam\fP is not valid for the specified policy + + .TP +-!EPERM! ++\fBEPERM\fP + the calling process does not have superuser permissions + + .TP +-!ESRCH! +-the |target_thread| is invalid or has already terminated ++\fBESRCH\fP ++the \fItarget_thread\fP is invalid or has already terminated + + .TP +-!EFAULT! +-|param| points outside the process memory space ++\fBEFAULT\fP ++\fIparam\fP points outside the process memory space + .RE + +-On error, !pthread_getschedparam! returns the following error codes: ++On error, \fBpthread_getschedparam\fP returns the following error codes: + .RS + .TP +-!ESRCH! +-the |target_thread| is invalid or has already terminated ++\fBESRCH\fP ++the \fItarget_thread\fP is invalid or has already terminated + + .TP +-!EFAULT! +-|policy| or |param| point outside the process memory space ++\fBEFAULT\fP ++\fIpolicy\fP or \fIparam\fP point outside the process memory space + .RE + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!sched_setscheduler!(2), +-!sched_getscheduler!(2), +-!sched_getparam!(2), +-!pthread_attr_setschedpolicy!(3), +-!pthread_attr_setschedparam!(3). ++\fBsched_setscheduler\fP(2), ++\fBsched_getscheduler\fP(2), ++\fBsched_getparam\fP(2), ++\fBpthread_attr_setschedpolicy\fP(3), ++\fBpthread_attr_setschedparam\fP(3). +--- a/linuxthreads/man/pthread_sigmask.man ++++ b/linuxthreads/man/pthread_sigmask.man +@@ -19,36 +19,36 @@ + + .SH DESCRIPTION + +-!pthread_sigmask! changes the signal mask for the calling thread as +-described by the |how| and |newmask| arguments. If |oldmask| is not +-!NULL!, the previous signal mask is stored in the location pointed to +-by |oldmask|. +- +-The meaning of the |how| and |newmask| arguments is the same as for +-!sigprocmask!(2). If |how| is !SIG_SETMASK!, the signal mask is set to +-|newmask|. If |how| is !SIG_BLOCK!, the signals specified to |newmask| +-are added to the current signal mask. If |how| is !SIG_UNBLOCK!, the +-signals specified to |newmask| are removed from the current signal ++\fBpthread_sigmask\fP changes the signal mask for the calling thread as ++described by the \fIhow\fP and \fInewmask\fP arguments. If \fIoldmask\fP is not ++\fBNULL\fP, the previous signal mask is stored in the location pointed to ++by \fIoldmask\fP. ++ ++The meaning of the \fIhow\fP and \fInewmask\fP arguments is the same as for ++\fBsigprocmask\fP(2). If \fIhow\fP is \fBSIG_SETMASK\fP, the signal mask is set to ++\fInewmask\fP. If \fIhow\fP is \fBSIG_BLOCK\fP, the signals specified to \fInewmask\fP ++are added to the current signal mask. If \fIhow\fP is \fBSIG_UNBLOCK\fP, the ++signals specified to \fInewmask\fP are removed from the current signal + mask. + + Recall that signal masks are set on a per-thread basis, but signal +-actions and signal handlers, as set with !sigaction!(2), are shared ++actions and signal handlers, as set with \fBsigaction\fP(2), are shared + between all threads. + +-!pthread_kill! send signal number |signo| to the thread +-|thread|. The signal is delivered and handled as described in +-!kill!(2). +- +-!sigwait! suspends the calling thread until one of the signals +-in |set| is delivered to the calling thread. It then stores the number +-of the signal received in the location pointed to by |sig| and +-returns. The signals in |set| must be blocked and not ignored on +-entrance to !sigwait!. If the delivered signal has a signal handler +-function attached, that function is |not| called. ++\fBpthread_kill\fP send signal number \fIsigno\fP to the thread ++\fIthread\fP. The signal is delivered and handled as described in ++\fBkill\fP(2). ++ ++\fBsigwait\fP suspends the calling thread until one of the signals ++in \fIset\fP is delivered to the calling thread. It then stores the number ++of the signal received in the location pointed to by \fIsig\fP and ++returns. The signals in \fIset\fP must be blocked and not ignored on ++entrance to \fBsigwait\fP. If the delivered signal has a signal handler ++function attached, that function is \fInot\fP called. + + .SH CANCELLATION + +-!sigwait! is a cancellation point. ++\fBsigwait\fP is a cancellation point. + + .SH "RETURN VALUE" + +@@ -56,50 +56,50 @@ + + .SH ERRORS + +-The !pthread_sigmask! function returns the following error codes ++The \fBpthread_sigmask\fP function returns the following error codes + on error: + .RS + .TP +-!EINVAL! +-|how| is not one of !SIG_SETMASK!, !SIG_BLOCK!, or !SIG_UNBLOCK! ++\fBEINVAL\fP ++\fIhow\fP is not one of \fBSIG_SETMASK\fP, \fBSIG_BLOCK\fP, or \fBSIG_UNBLOCK\fP + + .TP +-!EFAULT! +-|newmask| or |oldmask| point to invalid addresses ++\fBEFAULT\fP ++\fInewmask\fP or \fIoldmask\fP point to invalid addresses + .RE + +-The !pthread_kill! function returns the following error codes ++The \fBpthread_kill\fP function returns the following error codes + on error: + .RS + .TP +-!EINVAL! +-|signo| is not a valid signal number ++\fBEINVAL\fP ++\fIsigno\fP is not a valid signal number + + .TP +-!ESRCH! +-the thread |thread| does not exist (e.g. it has already terminated) ++\fBESRCH\fP ++the thread \fIthread\fP does not exist (e.g. it has already terminated) + .RE + +-The !sigwait! function never returns an error. ++The \fBsigwait\fP function never returns an error. + + .SH AUTHOR + Xavier Leroy + + .SH "SEE ALSO" +-!sigprocmask!(2), +-!kill!(2), +-!sigaction!(2), +-!sigsuspend!(2). ++\fBsigprocmask\fP(2), ++\fBkill\fP(2), ++\fBsigaction\fP(2), ++\fBsigsuspend\fP(2). + + .SH NOTES + +-For !sigwait! to work reliably, the signals being waited for must be ++For \fBsigwait\fP to work reliably, the signals being waited for must be + blocked in all threads, not only in the calling thread, since + otherwise the POSIX semantics for signal delivery do not guarantee +-that it's the thread doing the !sigwait! that will receive the signal. ++that it's the thread doing the \fBsigwait\fP that will receive the signal. + The best way to achieve this is block those signals before any threads + are created, and never unblock them in the program other than by +-calling !sigwait!. ++calling \fBsigwait\fP. + + .SH BUGS + +@@ -112,11 +112,11 @@ + + In LinuxThreads, each thread is actually a kernel process with its own + PID, so external signals are always directed to one particular thread. +-If, for instance, another thread is blocked in !sigwait! on that ++If, for instance, another thread is blocked in \fBsigwait\fP on that + signal, it will not be restarted. + +-The LinuxThreads implementation of !sigwait! installs dummy signal +-handlers for the signals in |set| for the duration of the wait. Since ++The LinuxThreads implementation of \fBsigwait\fP installs dummy signal ++handlers for the signals in \fIset\fP for the duration of the wait. Since + signal handlers are shared between all threads, other threads must not + attach their own signal handlers to these signals, or alternatively + they should all block these signals (which is recommended anyway -- +--- a/linuxthreads/man/sem_init.man ++++ b/linuxthreads/man/sem_init.man +@@ -26,98 +26,98 @@ + + .SH DESCRIPTION + This manual page documents POSIX 1003.1b semaphores, not to be +-confused with SystemV semaphores as described in !ipc!(5), !semctl!(2) +-and !semop!(2). ++confused with SystemV semaphores as described in \fBipc\fP(5), \fBsemctl\fP(2) ++and \fBsemop\fP(2). + + Semaphores are counters for resources shared between threads. The + basic operations on semaphores are: increment the counter atomically, + and wait until the counter is non-null and decrement it atomically. + +-!sem_init! initializes the semaphore object pointed to by |sem|. The +-count associated with the semaphore is set initially to |value|. The +-|pshared| argument indicates whether the semaphore is local to the +-current process (|pshared| is zero) or is to be shared between several +-processes (|pshared| is not zero). LinuxThreads currently does not +-support process-shared semaphores, thus !sem_init! always returns with +-error !ENOSYS! if |pshared| is not zero. ++\fBsem_init\fP initializes the semaphore object pointed to by \fIsem\fP. The ++count associated with the semaphore is set initially to \fIvalue\fP. The ++\fIpshared\fP argument indicates whether the semaphore is local to the ++current process (\fIpshared\fP is zero) or is to be shared between several ++processes (\fIpshared\fP is not zero). LinuxThreads currently does not ++support process-shared semaphores, thus \fBsem_init\fP always returns with ++error \fBENOSYS\fP if \fIpshared\fP is not zero. + +-!sem_wait! suspends the calling thread until the semaphore pointed to +-by |sem| has non-zero count. It then atomically decreases the ++\fBsem_wait\fP suspends the calling thread until the semaphore pointed to ++by \fIsem\fP has non-zero count. It then atomically decreases the + semaphore count. + +-!sem_trywait! is a non-blocking variant of !sem_wait!. If the +-semaphore pointed to by |sem| has non-zero count, the count is +-atomically decreased and !sem_trywait! immediately returns 0. +-If the semaphore count is zero, !sem_trywait! immediately returns with +-error !EAGAIN!. ++\fBsem_trywait\fP is a non-blocking variant of \fBsem_wait\fP. If the ++semaphore pointed to by \fIsem\fP has non-zero count, the count is ++atomically decreased and \fBsem_trywait\fP immediately returns 0. ++If the semaphore count is zero, \fBsem_trywait\fP immediately returns with ++error \fBEAGAIN\fP. + +-!sem_post! atomically increases the count of the semaphore pointed to +-by |sem|. This function never blocks and can safely be used in ++\fBsem_post\fP atomically increases the count of the semaphore pointed to ++by \fIsem\fP. This function never blocks and can safely be used in + asynchronous signal handlers. + +-!sem_getvalue! stores in the location pointed to by |sval| the current +-count of the semaphore |sem|. ++\fBsem_getvalue\fP stores in the location pointed to by \fIsval\fP the current ++count of the semaphore \fIsem\fP. + +-!sem_destroy! destroys a semaphore object, freeing the resources it ++\fBsem_destroy\fP destroys a semaphore object, freeing the resources it + might hold. No threads should be waiting on the semaphore at the time +-!sem_destroy! is called. In the LinuxThreads implementation, no +-resources are associated with semaphore objects, thus !sem_destroy! ++\fBsem_destroy\fP is called. In the LinuxThreads implementation, no ++resources are associated with semaphore objects, thus \fBsem_destroy\fP + actually does nothing except checking that no thread is waiting on the + semaphore. + + .SH CANCELLATION + +-!sem_wait! is a cancellation point. ++\fBsem_wait\fP is a cancellation point. + + .SH "ASYNC-SIGNAL SAFETY" + + On processors supporting atomic compare-and-swap (Intel 486, Pentium +-and later, Alpha, PowerPC, MIPS II, Motorola 68k), the !sem_post! ++and later, Alpha, PowerPC, MIPS II, Motorola 68k), the \fBsem_post\fP + function is async-signal safe and can therefore be + called from signal handlers. This is the only thread synchronization + function provided by POSIX threads that is async-signal safe. + + On the Intel 386 and the Sparc, the current LinuxThreads +-implementation of !sem_post! is not async-signal safe by lack of the ++implementation of \fBsem_post\fP is not async-signal safe by lack of the + required atomic operations. + + .SH "RETURN VALUE" + +-The !sem_wait! and !sem_getvalue! functions always return 0. ++The \fBsem_wait\fP and \fBsem_getvalue\fP functions always return 0. + All other semaphore functions return 0 on success and -1 on error, in +-addition to writing an error code in !errno!. ++addition to writing an error code in \fBerrno\fP. + + .SH ERRORS + +-The !sem_init! function sets !errno! to the following codes on error: ++The \fBsem_init\fP function sets \fBerrno\fP to the following codes on error: + .RS + .TP +-!EINVAL! +-|value| exceeds the maximal counter value !SEM_VALUE_MAX! ++\fBEINVAL\fP ++\fIvalue\fP exceeds the maximal counter value \fBSEM_VALUE_MAX\fP + .TP +-!ENOSYS! +-|pshared| is not zero ++\fBENOSYS\fP ++\fIpshared\fP is not zero + .RE + +-The !sem_trywait! function sets !errno! to the following error code on error: ++The \fBsem_trywait\fP function sets \fBerrno\fP to the following error code on error: + .RS + .TP +-!EAGAIN! ++\fBEAGAIN\fP + the semaphore count is currently 0 + .RE + +-The !sem_post! function sets !errno! to the following error code on error: ++The \fBsem_post\fP function sets \fBerrno\fP to the following error code on error: + .RS + .TP +-!ERANGE! +-after incrementation, the semaphore value would exceed !SEM_VALUE_MAX! ++\fBERANGE\fP ++after incrementation, the semaphore value would exceed \fBSEM_VALUE_MAX\fP + (the semaphore count is left unchanged in this case) + .RE + +-The !sem_destroy! function sets !errno! to the following error code on error: ++The \fBsem_destroy\fP function sets \fBerrno\fP to the following error code on error: + .RS + .TP +-!EBUSY! ++\fBEBUSY\fP + some threads are currently blocked waiting on the semaphore. + .RE + +@@ -125,8 +125,8 @@ + Xavier Leroy + + .SH "SEE ALSO" +-!pthread_mutex_init!(3), +-!pthread_cond_init!(3), +-!pthread_cancel!(3), +-!ipc!(5). ++\fBpthread_mutex_init\fP(3), ++\fBpthread_cond_init\fP(3), ++\fBpthread_cancel\fP(3), ++\fBipc\fP(5). + --- eglibc-2.13.orig/debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff +++ eglibc-2.13/debian/patches/all/fedora-nss_dns-gethostbyname4-disable.diff @@ -0,0 +1,18 @@ +# Description: disable _nss_dns_gethostbyname4_r for the moment, as it +# causes problems for IPv6 users; patch from Fedora by Jakub Jelinek +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/313218 +# Upstream: https://bugzilla.redhat.com/show_bug.cgi?id=459756 + +Index: b/resolv/Versions +=================================================================== +--- a/resolv/Versions ++++ b/resolv/Versions +@@ -102,7 +102,7 @@ + _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r; + _nss_dns_getnetbyname_r; _nss_dns_getcanonname_r; + _nss_dns_gethostbyaddr2_r; +- _nss_dns_gethostbyname4_r; ++# _nss_dns_gethostbyname4_r; + } + } + --- eglibc-2.13.orig/debian/patches/all/local-ldd.diff +++ eglibc-2.13/debian/patches/all/local-ldd.diff @@ -0,0 +1,53 @@ +2009-11-08 Aurelien Jarno + + * elf/ldd.bash.in: also handle error code 126 (ld.so non + executable). Always trace dynamic library dependencies through + the dynamic linker. + +--- + elf/ldd.bash.in | 20 +++----------------- + 1 file changed, 3 insertions(+), 17 deletions(-) + +--- a/elf/ldd.bash.in ++++ b/elf/ldd.bash.in +@@ -153,8 +153,6 @@ + echo "ldd: ${file}:" $"not regular file" >&2 + result=1 + elif test -r "$file"; then +- test -x "$file" || echo 'ldd:' $"\ +-warning: you do not have execution permission for" "\`$file'" >&2 + RTLD= + ret=1 + for rtld in ${RTLDLIST}; do +@@ -167,28 +165,16 @@ + fi + done + case $ret in +- 0) +- # If the program exits with exit code 5, it means the process has been +- # invoked with __libc_enable_secure. Fall back to running it through +- # the dynamic linker. +- try_trace "$file" +- rc=$? +- if [ $rc = 5 ]; then +- try_trace "$RTLD" "$file" +- rc=$? +- fi +- [ $rc = 0 ] || result=1 ++ 0|2) ++ try_trace "$RTLD" "$file" || result=1 + ;; +- 1) ++ 1|126) + # This can be a non-ELF binary or no binary at all. + nonelf "$file" || { + echo $" not a dynamic executable" + result=1 + } + ;; +- 2) +- try_trace "$RTLD" "$file" || result=1 +- ;; + *) + echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($ret)" >&2 + exit 1 --- eglibc-2.13.orig/debian/patches/all/local-alias-UTF-8.diff +++ eglibc-2.13/debian/patches/all/local-alias-UTF-8.diff @@ -0,0 +1,24 @@ +--- + intl/locale.alias | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/intl/locale.alias ++++ b/intl/locale.alias +@@ -26,7 +26,7 @@ + # Locales should always be specified by their full name. + + bokmal nb_NO.ISO-8859-1 +-bokmål nb_NO.ISO-8859-1 ++bokmÃ¥l nb_NO.ISO-8859-1 + catalan ca_ES.ISO-8859-1 + croatian hr_HR.ISO-8859-2 + czech cs_CZ.ISO-8859-2 +@@ -37,7 +37,7 @@ + eesti et_EE.ISO-8859-1 + estonian et_EE.ISO-8859-1 + finnish fi_FI.ISO-8859-1 +-français fr_FR.ISO-8859-1 ++français fr_FR.ISO-8859-1 + french fr_FR.ISO-8859-1 + galego gl_ES.ISO-8859-1 + galician gl_ES.ISO-8859-1 --- eglibc-2.13.orig/debian/patches/all/local-alias-et_EE.diff +++ eglibc-2.13/debian/patches/all/local-alias-et_EE.diff @@ -0,0 +1,17 @@ +--- + intl/locale.alias | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/intl/locale.alias ++++ b/intl/locale.alias +@@ -34,8 +34,8 @@ + dansk da_DK.ISO-8859-1 + deutsch de_DE.ISO-8859-1 + dutch nl_NL.ISO-8859-1 +-eesti et_EE.ISO-8859-1 +-estonian et_EE.ISO-8859-1 ++eesti et_EE.ISO-8859-15 ++estonian et_EE.ISO-8859-15 + finnish fi_FI.ISO-8859-1 + français fr_FR.ISO-8859-1 + french fr_FR.ISO-8859-1 --- eglibc-2.13.orig/debian/patches/all/local-ru_RU.diff +++ eglibc-2.13/debian/patches/all/local-ru_RU.diff @@ -0,0 +1,23 @@ +# DP: Description: Change default charset for 'russian' locale alias +# DP: Related bugs: #62586 +# DP: Dpatch author: Ben Collins +# DP: Patch author: Alistair McKinstry +# DP: Upstream status: Submitted +# DP: Status Details: http://sources.redhat.com/bugzilla/show_bug.cgi?id=120 +# DP: Date: 2002-03-10 + +--- + intl/locale.alias | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/intl/locale.alias ++++ b/intl/locale.alias +@@ -64,7 +64,7 @@ + polish pl_PL.ISO-8859-2 + portuguese pt_PT.ISO-8859-1 + romanian ro_RO.ISO-8859-2 +-russian ru_RU.ISO-8859-5 ++russian ru_RU.KOI8-R + slovak sk_SK.ISO-8859-2 + slovene sl_SI.ISO-8859-2 + slovenian sl_SI.ISO-8859-2 --- eglibc-2.13.orig/debian/patches/alpha/local-lowlevellock.diff +++ eglibc-2.13/debian/patches/alpha/local-lowlevellock.diff @@ -0,0 +1,19 @@ +2010-02-09 Aurelien Jarno + + * sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h: remove + useless include. + +--- + ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h ++++ b/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h +@@ -23,7 +23,6 @@ + #include + #include + #include +-#include + #include + + --- eglibc-2.13.orig/debian/patches/alpha/submitted-libm-hidden.diff +++ eglibc-2.13/debian/patches/alpha/submitted-libm-hidden.diff @@ -0,0 +1,24 @@ +2011-03-01 Aurelien Jarno + + * sysdeps/alpha/fpu/feupdateenv.c (feupdateenv): Add + libm_hidden_def. + * sysdeps/alpha/fpu/ftestexcept.c (fetestexcept): Likewise. + +diff a/ports/sysdeps/alpha/fpu/feupdateenv.c b/ports/sysdeps/alpha/fpu/feupdateenv.c +--- a/ports/sysdeps/alpha/fpu/feupdateenv.c ++++ b/ports/sysdeps/alpha/fpu/feupdateenv.c +@@ -46,4 +46,5 @@ strong_alias (__feupdateenv, __old_feupdateenv) + compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1); + #endif + ++libm_hidden_ver (__feupdateenv, feupdateenv) + versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2); +diff a/ports/sysdeps/alpha/fpu/ftestexcept.c b/ports/sysdeps/alpha/fpu/ftestexcept.c +--- a/ports/sysdeps/alpha/fpu/ftestexcept.c ++++ b/ports/sysdeps/alpha/fpu/ftestexcept.c +@@ -30,3 +30,4 @@ fetestexcept (int excepts) + + return tmp & excepts & SWCR_STATUS_MASK; + } ++libm_hidden_def (fetestexcept) + --- eglibc-2.13.orig/debian/patches/alpha/submitted-PTR_MANGLE.diff +++ eglibc-2.13/debian/patches/alpha/submitted-PTR_MANGLE.diff @@ -0,0 +1,36 @@ +2011-03-26 Aurelien Jarno + + * sysdeps/unix/alpha/sysdep.h (PTR_MANGLE): Move out of ASSEMBLER + ifdef. + (PTR_DEMANGLE): Likewise. + +--- a/ports/sysdeps/unix/alpha/sysdep.h ++++ b/ports/sysdeps/unix/alpha/sysdep.h +@@ -157,6 +157,8 @@ __LABEL(name) \ + + #else /* !ASSEMBLER */ + ++#include ++ + /* ??? Linux needs to be able to override INLINE_SYSCALL for one + particular special case. Make this easy. */ + +@@ -399,11 +401,11 @@ __LABEL(name) \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ + } + ++#endif /* ASSEMBLER */ ++ + /* Pointer mangling support. Note that tls access is slow enough that + we don't deoptimize things by placing the pointer check value there. */ + +-#include +- + #if defined NOT_IN_libc && defined IS_IN_rtld + # ifdef __ASSEMBLER__ + # define PTR_MANGLE(dst, src, tmp) \ +@@ -447,4 +449,3 @@ extern const uintptr_t __pointer_chk_guard attribute_relro; + # endif + #endif + +-#endif /* ASSEMBLER */ --- eglibc-2.13.orig/debian/patches/alpha/submitted-statfs.diff +++ eglibc-2.13/debian/patches/alpha/submitted-statfs.diff @@ -0,0 +1,28 @@ +2011-02-28 Aurelien Jarno + + * sysdeps/unix/sysv/linux/mips/bits/statfs.h (struct statfs, + struct statfs64): Add f_flags field. + +diff a/ports/sysdeps/unix/sysv/linux/alpha/bits/statfs.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/statfs.h +--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/statfs.h ++++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/statfs.h +@@ -42,7 +42,8 @@ struct statfs + __fsid_t f_fsid; + int f_namelen; + int f_frsize; +- int f_spare[5]; ++ int f_flags; ++ int f_spare[4]; + }; + + #ifdef __USE_LARGEFILE64 +@@ -58,7 +59,8 @@ struct statfs64 + __fsid_t f_fsid; + int f_namelen; + int f_frsize; +- int f_spare[5]; ++ int f_flags; ++ int f_spare[4]; + }; + #endif + --- eglibc-2.13.orig/debian/patches/alpha/local-gcc4.1.diff +++ eglibc-2.13/debian/patches/alpha/local-gcc4.1.diff @@ -0,0 +1,55 @@ +2006-05-30 Falk Hueffner + + * sysdeps/unix/sysv/linux/alpha/ioperm.c: force the architecture + to ev6 in assembly code. + +{standard input}: Assembler messages: +{standard input}:341: Error: macro requires $at register while noat in effect +{standard input}:374: Error: macro requires $at register while noat in effect +{standard input}:438: Error: macro requires $at register while noat in effect +{standard input}:471: Error: macro requires $at register while noat in effect +make[3]: *** [/tmp/buildd/glibc-2.3.6/build-tree/alpha-libc/misc/ioperm.o] Error 1 + +Hrm. gcc puts .arch ev4 into the .s, and this overrides -mev6 for as. +I cannot really think of anything better than + +--- + ports/sysdeps/unix/sysv/linux/alpha/ioperm.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/ports/sysdeps/unix/sysv/linux/alpha/ioperm.c ++++ b/ports/sysdeps/unix/sysv/linux/alpha/ioperm.c +@@ -178,13 +178,13 @@ + static inline void + stb_mb(unsigned char val, unsigned long addr) + { +- __asm__("stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val)); ++ __asm__(".arch ev6; stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val)); + } + + static inline void + stw_mb(unsigned short val, unsigned long addr) + { +- __asm__("stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val)); ++ __asm__(".arch ev6; stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val)); + } + + static inline void +@@ -356,7 +356,7 @@ + unsigned long int addr = dense_port_to_cpu_addr (port); + unsigned char r; + +- __asm__ ("ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr)); ++ __asm__ (".arch ev6; ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr)); + return r; + } + +@@ -366,7 +366,7 @@ + unsigned long int addr = dense_port_to_cpu_addr (port); + unsigned short r; + +- __asm__ ("ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr)); ++ __asm__ (".arch ev6; ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr)); + return r; + } + --- eglibc-2.13.orig/debian/patches/alpha/submitted-fxstatat.patch +++ eglibc-2.13/debian/patches/alpha/submitted-fxstatat.patch @@ -0,0 +1,57 @@ +2011-03-11 Aurelien Jarno + + * sysdeps/unix/sysv/linux/alpha/fxstatat.c(__fxstatat): use fstatat64 + syscall when available. + +--- a/ports/sysdeps/unix/sysv/linux/alpha/fxstatat.c ++++ b/ports/sysdeps/unix/sysv/linux/alpha/fxstatat.c +@@ -35,6 +35,32 @@ + int + __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) + { ++ int result; ++ INTERNAL_SYSCALL_DECL (err); ++ ++#ifdef __NR_fstatat64 ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ result = INTERNAL_SYSCALL (fstatat64, err, 4, fd, file, st, flag); ++# ifndef __ASSUME_ATFCTS ++ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 1) ++ && INTERNAL_SYSCALL_ERRNO (result, err) == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ if (!__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 1)) ++ return 0; ++ else ++ { ++ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); ++ return -1; ++ } ++ } ++#endif ++ ++#ifndef __ASSUME_ATFCTS + if (flag & ~AT_SYMLINK_NOFOLLOW) + { + __set_errno (EINVAL); +@@ -68,7 +94,7 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) + } + + INTERNAL_SYSCALL_DECL (err); +- int result, errno_out; ++ int errno_out; + struct kernel_stat kst; + + #if __ASSUME_STAT64_SYSCALL > 0 +@@ -114,6 +140,7 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) + __atfct_seterrno (errno_out, fd, buf); + + return -1; ++#endif + } + libc_hidden_def (__fxstatat) + strong_alias (__fxstatat, __fxstatat64); --- eglibc-2.13.orig/debian/patches/alpha/local-strncmp.diff +++ eglibc-2.13/debian/patches/alpha/local-strncmp.diff @@ -0,0 +1,254 @@ +The alpha assembly version of strncmp does not work correctly on some +corner cases, and thus doesn't pass the testsuite. This patch removes +it. + +--- a/ports/sysdeps/alpha/strncmp.S ++++ /dev/null +@@ -1,247 +0,0 @@ +-/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc. +- Contributed by Richard Henderson (rth@tamu.edu) +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Bytewise compare two null-terminated strings of length no longer than N. */ +- +-#include +- +- .set noat +- .set noreorder +- +- .text +- +-ENTRY(strncmp) +-#ifdef PROF +- ldgp gp, 0(pv) +- lda AT, _mcount +- jsr AT, (AT), _mcount +- .prologue 1 +-#else +- .prologue 0 +-#endif +- +- xor a0, a1, t2 # e0 : are s1 and s2 co-aligned? +- beq a2, $zerolength # .. e1 : +- ldq_u t0, 0(a0) # e0 : give cache time to catch up +- ldq_u t1, 0(a1) # .. e1 : +- and t2, 7, t2 # e0 : +- and a0, 7, t4 # .. e1 : find s1 misalignment +- lda t3, -1 # e0 : +- addq a2, t4, a2 # .. e1 : bias count by s1 misalignment +- and a2, 7, t10 # e1 : ofs of last byte in last word +- srl a2, 3, a2 # .. e0 : remaining full words in count +- and a1, 7, t5 # e0 : find s2 misalignment +- bne t2, $unaligned # .. e1 : +- +- /* On entry to this basic block: +- t0 == the first word of s1. +- t1 == the first word of s2. +- t3 == -1. */ +- +-$aligned: +- mskqh t3, a1, t3 # e0 : mask off leading garbage +- nop # .. e1 : +- ornot t1, t3, t1 # e0 : +- ornot t0, t3, t0 # .. e1 : +- cmpbge zero, t1, t7 # e0 : bits set iff null found +- beq a2, $eoc # .. e1 : check end of count +- unop # e0 : +- bne t7, $eos # .. e1 : +- unop # e0 : +- beq t10, $ant_loop # .. e1 : +- +- /* Aligned compare main loop. +- On entry to this basic block: +- t0 == an s1 word. +- t1 == an s2 word not containing a null. */ +- +-$a_loop: +- xor t0, t1, t2 # e0 : +- bne t2, $wordcmp # .. e1 (zdb) +- ldq_u t1, 8(a1) # e0 : +- ldq_u t0, 8(a0) # .. e1 : +- subq a2, 1, a2 # e0 : +- addq a1, 8, a1 # .. e1 : +- addq a0, 8, a0 # e0 : +- beq a2, $eoc # .. e1 : +- cmpbge zero, t1, t7 # e0 : +- beq t7, $a_loop # .. e1 : +- unop # e0 : +- br $eos # .. e1 : +- +- /* Alternate aligned compare loop, for when there's no trailing +- bytes on the count. We have to avoid reading too much data. */ +-$ant_loop: +- xor t0, t1, t2 # e0 : +- bne t2, $wordcmp # .. e1 (zdb) +- subq a2, 1, a2 # e0 : +- beq a2, $zerolength # .. e1 : +- ldq_u t1, 8(a1) # e0 : +- ldq_u t0, 8(a0) # .. e1 : +- addq a1, 8, a1 # e0 : +- addq a0, 8, a0 # .. e1 : +- cmpbge zero, t1, t7 # e0 : +- beq t7, $ant_loop # .. e1 : +- unop # e0 : +- br $eos # .. e1 : +- +- /* The two strings are not co-aligned. Align s1 and cope. */ +-$unaligned: +- subq a1, t4, a1 # e0 : +- unop # : +- +- /* If s2 misalignment is larger than s2 misalignment, we need +- extra startup checks to avoid SEGV. */ +- +- cmplt t4, t5, t8 # .. e1 : +- beq t8, $u_head # e1 : +- +- mskqh t3, t5, t3 # e0 : +- ornot t1, t3, t3 # e0 : +- cmpbge zero, t3, t7 # e1 : is there a zero? +- beq t7, $u_head # e1 : +- +- /* We've found a zero in the first partial word of s2. Align +- our current s1 and s2 words and compare what we've got. */ +- +- extql t1, t5, t1 # e0 : +- lda t3, -1 # .. e1 : +- insql t1, a0, t1 # e0 : +- mskqh t3, a0, t3 # e0 : +- ornot t1, t3, t1 # e0 : +- ornot t0, t3, t0 # .. e1 : +- cmpbge zero, t1, t7 # e0 : find that zero again +- beq a2, $eoc # .. e1 : and finish up +- br $eos # e1 : +- +- .align 3 +-$u_head: +- /* We know just enough now to be able to assemble the first +- full word of s2. We can still find a zero at the end of it. +- +- On entry to this basic block: +- t0 == first word of s1 +- t1 == first partial word of s2. */ +- +- ldq_u t2, 8(a1) # e0 : load second partial s2 word +- lda t3, -1 # .. e1 : create leading garbage mask +- extql t1, a1, t1 # e0 : create first s2 word +- mskqh t3, a0, t3 # e0 : +- extqh t2, a1, t4 # e0 : +- ornot t0, t3, t0 # .. e1 : kill s1 garbage +- or t1, t4, t1 # e0 : s2 word now complete +- ornot t1, t3, t1 # e1 : kill s2 garbage +- cmpbge zero, t0, t7 # e0 : find zero in first s1 word +- beq a2, $eoc # .. e1 : +- lda t3, -1 # e0 : +- bne t7, $eos # .. e1 : +- subq a2, 1, a2 # e0 : +- xor t0, t1, t4 # .. e1 : compare aligned words +- mskql t3, a1, t3 # e0 : mask out s2[1] bits we have seen +- bne t4, $wordcmp # .. e1 : +- or t2, t3, t3 # e0 : +- cmpbge zero, t3, t7 # e1 : find zero in high bits of s2[1] +- bne t7, $u_final # e1 : +- +- /* Unaligned copy main loop. In order to avoid reading too much, +- the loop is structured to detect zeros in aligned words from s2. +- This has, unfortunately, effectively pulled half of a loop +- iteration out into the head and half into the tail, but it does +- prevent nastiness from accumulating in the very thing we want +- to run as fast as possible. +- +- On entry to this basic block: +- t2 == the unshifted low-bits from the next s2 word. */ +- +- .align 3 +-$u_loop: +- extql t2, a1, t3 # e0 : +- ldq_u t2, 16(a1) # .. e1 : load next s2 high bits +- ldq_u t0, 8(a0) # e0 : load next s1 word +- addq a1, 8, a1 # .. e1 : +- addq a0, 8, a0 # e0 : +- nop # .. e1 : +- extqh t2, a1, t1 # e0 : +- cmpbge zero, t0, t7 # .. e1 : find zero in current s1 word +- or t1, t3, t1 # e0 : +- beq a2, $eoc # .. e1 : check for end of count +- subq a2, 1, a2 # e0 : +- bne t7, $eos # .. e1 : +- xor t0, t1, t4 # e0 : compare the words +- bne t4, $wordcmp # .. e1 (zdb) +- cmpbge zero, t2, t4 # e0 : find zero in next low bits +- beq t4, $u_loop # .. e1 (zdb) +- +- /* We've found a zero in the low bits of the last s2 word. Get +- the next s1 word and align them. */ +-$u_final: +- ldq_u t0, 8(a0) # e1 : +- extql t2, a1, t1 # .. e0 : +- cmpbge zero, t1, t7 # e0 : +- bne a2, $eos # .. e1 : +- +- /* We've hit end of count. Zero everything after the count +- and compare whats left. */ +- +- .align 3 +-$eoc: +- mskql t0, t10, t0 +- mskql t1, t10, t1 +- unop +- cmpbge zero, t1, t7 +- +- /* We've found a zero somewhere in a word we just read. +- On entry to this basic block: +- t0 == s1 word +- t1 == s2 word +- t7 == cmpbge mask containing the zero. */ +- +-$eos: +- negq t7, t6 # e0 : create bytemask of valid data +- and t6, t7, t8 # e1 : +- subq t8, 1, t6 # e0 : +- or t6, t8, t7 # e1 : +- zapnot t0, t7, t0 # e0 : kill the garbage +- zapnot t1, t7, t1 # .. e1 : +- xor t0, t1, v0 # e0 : and compare +- beq v0, $done # .. e1 : +- +- /* Here we have two differing co-aligned words in t0 & t1. +- Bytewise compare them and return (t0 > t1 ? 1 : -1). */ +- .align 3 +-$wordcmp: +- cmpbge t0, t1, t2 # e0 : comparison yields bit mask of ge +- cmpbge t1, t0, t3 # .. e1 : +- xor t2, t3, t0 # e0 : bits set iff t0/t1 bytes differ +- negq t0, t1 # e1 : clear all but least bit +- and t0, t1, t0 # e0 : +- lda v0, -1 # .. e1 : +- and t0, t2, t1 # e0 : was bit set in t0 > t1? +- cmovne t1, 1, v0 # .. e1 (zdb) +- +-$done: +- ret # e1 : +- +- .align 3 +-$zerolength: +- clr v0 +- ret +- +- END(strncmp) +-libc_hidden_builtin_def (strncmp) --- eglibc-2.13.orig/debian/patches/alpha/submitted-creat64.diff +++ eglibc-2.13/debian/patches/alpha/submitted-creat64.diff @@ -0,0 +1,16 @@ +alpha does not have a __NR_creat + +http://sourceware.org/bugzilla/show_bug.cgi?id=6650 + +--- + sysdeps/unix/sysv/linux/wordsize-64/creat64.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/sysdeps/unix/sysv/linux/wordsize-64/creat64.c ++++ b/sysdeps/unix/sysv/linux/wordsize-64/creat64.c +@@ -1 +1,5 @@ + /* Defined as alias for the syscall. */ ++#include ++#ifndef __NR_creat ++#include "../../../../../io/creat64.c" ++#endif --- eglibc-2.13.orig/debian/patches/alpha/submitted-fcntl_h.diff +++ eglibc-2.13/debian/patches/alpha/submitted-fcntl_h.diff @@ -0,0 +1,19 @@ +2011-02-28 Aurelien Jarno + + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_SETPIPE_SZ, + F_GETPIPE_SZ): Define. + +diff a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h +--- a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h ++++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h +@@ -97,6 +97,8 @@ + # define F_SETLEASE 1024 /* Set a lease. */ + # define F_GETLEASE 1025 /* Enquire what lease is active. */ + # define F_NOTIFY 1026 /* Request notfications on a directory. */ ++# define F_SETPIPE_SZ 1031 /* Set pipe page size array. */ ++# define F_GETPIPE_SZ 1032 /* Set pipe page size array. */ + #endif + #ifdef __USE_XOPEN2K8 + # define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with + + --- eglibc-2.13.orig/debian/patches/alpha/submitted-rtld-fPIC.diff +++ eglibc-2.13/debian/patches/alpha/submitted-rtld-fPIC.diff @@ -0,0 +1,20 @@ +2009-05-26 Aurelien Jarno + + * sysdeps/alpha/Makefile (CFLAGS-rtld.c): add $(PIC-ccflag). + +--- + ports/sysdeps/alpha/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/ports/sysdeps/alpha/Makefile ++++ b/ports/sysdeps/alpha/Makefile +@@ -35,7 +35,8 @@ + + ifeq ($(subdir),elf) + # The ld.so startup code cannot use literals until it self-relocates. +-CFLAGS-rtld.c = -mbuild-constants ++# It uses more than 64k for the small data area. ++CFLAGS-rtld.c = -mbuild-constants $(PIC-ccflag) + endif + + # Build everything with full IEEE math support, and with dynamic rounding; --- eglibc-2.13.orig/debian/patches/alpha/submitted-____longjmp_chk.diff +++ eglibc-2.13/debian/patches/alpha/submitted-____longjmp_chk.diff @@ -0,0 +1,16 @@ +2011-03-20 Aurelien Jarno + + * sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S(____longjmp_chk): + Fix wrong register in stack pointer comparison. + +--- a/ports/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S ++++ b/ports/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S +@@ -58,7 +58,7 @@ ____longjmp_chk: + PTR_DEMANGLE2(s3, t1) + PTR_DEMANGLE2(fp, t1) + #endif +- cmpule t0, sp, t1 ++ cmpule s3, sp, t1 + bne t1, .Lfail + + .align 4 --- eglibc-2.13.orig/debian/patches/alpha/submitted-sysconf-cache.diff +++ eglibc-2.13/debian/patches/alpha/submitted-sysconf-cache.diff @@ -0,0 +1,16 @@ +2011-04-01 Aurelien Jarno + + * sysdeps/unix/sysv/linux/alpha/sysconf.c: Fix cache sysconf + switch. + +--- a/ports/sysdeps/unix/sysv/linux/alpha/sysconf.c ++++ b/ports/sysdeps/unix/sysv/linux/alpha/sysconf.c +@@ -135,7 +135,7 @@ __sysconf (int name) + if (shape <= 0) + return shape; + +- switch (name % 3) ++ switch ((name - _SC_LEVEL1_ICACHE_SIZE) % 3) + { + case 0: /* total size */ + return shape & -0x100; --- eglibc-2.13.orig/debian/patches/alpha/submitted-statfs64.patch +++ eglibc-2.13/debian/patches/alpha/submitted-statfs64.patch @@ -0,0 +1,43 @@ +>From cd96467fcfa0b2a9be52dfc4e013d8051a827edc Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Sun, 3 Apr 2011 16:54:50 -0400 +Subject: [PATCH] alpha: do not assume statfs64 support + +In the past, the alpha port used the wordsize-64/statfs64.c stub which +allowed the statfs64() func to alias to statfs(). But after the move +to the ports tree, some shuffling happened and now alpha's statfs64.c +will pull in the standard 32bit linux statfs64.c file. The problem +with this is that the code expands into a stub function if the 64bit +syscall is not defined and __ASSUME_STATFS64 is defined (which is +currently the case for alpha). + +Since the alpha port has never had a statfs64 func, but has always had +only a 32bit struct version with the kernel ABI, it is wrong to alias +statfs64 to statfs. So rather than restore the stub statfs64.c file, +undef __ASSUME_STATFS64 in the alpha kernel-features.h. This way the +common code will do the right thing -- use the 32bit statfs syscall +and translate the result in userspace from the 32bit struct to the +64bit struct. + +Signed-off-by: Mike Frysinger +--- + sysdeps/unix/sysv/linux/alpha/kernel-features.h | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/ports/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/ports/sysdeps/unix/sysv/linux/alpha/kernel-features.h +index 9c640f9..5217ca8 100644 +--- a/ports/sysdeps/unix/sysv/linux/alpha/kernel-features.h ++++ b/ports/sysdeps/unix/sysv/linux/alpha/kernel-features.h +@@ -70,6 +70,9 @@ + + #undef __ASSUME_ST_INO_64_BIT + ++/* Alpha does not have a 64bit syscall, and its native syscall is 32bits. */ ++#undef __ASSUME_STATFS64 ++ + /* pselect/ppoll were introduced on alpha just after 2.6.22-rc1. */ + #if __LINUX_KERNEL_VERSION < 0x020617 + # undef __ASSUME_PSELECT +-- +1.7.4.1 + --- eglibc-2.13.orig/debian/patches/alpha/submitted-stackinfo.diff +++ eglibc-2.13/debian/patches/alpha/submitted-stackinfo.diff @@ -0,0 +1,23 @@ +2011-02-28 Aurelien Jarno + + * sysdeps/alpha/stackinfo.h: Define DEFAULT_STACK_PERMS with PF_X. + +diff a/ports/sysdeps/alpha/stackinfo.h b/ports/sysdeps/alpha/stackinfo.h +--- a/ports/sysdeps/alpha/stackinfo.h ++++ b/ports/sysdeps/alpha/stackinfo.h +@@ -22,7 +22,13 @@ + #ifndef _STACKINFO_H + #define _STACKINFO_H 1 + ++#include ++ + /* On Alpha the stack grows down. */ + #define _STACK_GROWS_DOWN 1 + ++/* Default to an executable stack. PF_X can be overridden if PT_GNU_STACK is ++ * present, but it is presumed absent. */ ++#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X) ++ + #endif /* stackinfo.h */ + + --- eglibc-2.13.orig/debian/patches/alpha/submitted-syscall.diff +++ eglibc-2.13/debian/patches/alpha/submitted-syscall.diff @@ -0,0 +1,36 @@ +2009-05-31 Mike Hommey + + * sysdeps/unix/sysv/linux/alpha/syscall.S: add support for 6th + argument. + +--- + ports/sysdeps/unix/sysv/linux/alpha/syscall.S | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/ports/sysdeps/unix/sysv/linux/alpha/syscall.S ++++ b/ports/sysdeps/unix/sysv/linux/alpha/syscall.S +@@ -31,13 +31,13 @@ + * + * Usage: + * +- * long syscall(syscall_number, arg1, arg2, arg3, arg4, arg5) ++ * long syscall(syscall_number, arg1, arg2, arg3, arg4, arg5, arg6) + * + * syscall_number = the index of the system call we're invoking +- * arg1-arg5 = up to 5 integer arguments to the system call ++ * arg1-arg6 = up to 6 integer arguments to the system call + * + * We need to do some arg shifting: the kernel expects the +- * syscall number in v0 and the first five args in a0-a4. ++ * syscall number in v0 and the first six args in a0-a5. + * + */ + +@@ -60,6 +60,7 @@ + mov a3, a2 + mov a4, a3 + mov a5, a4 ++ ldq a5,0(sp) /* arg6 -> a5 */ + + call_pal PAL_callsys /* Invoke system call */ + bne a3, $error --- eglibc-2.13.orig/debian/patches/alpha/submitted-dl-support.diff +++ eglibc-2.13/debian/patches/alpha/submitted-dl-support.diff @@ -0,0 +1,16 @@ +older verisons of glibc would build dl-sysdep as shared-only and dl-support as +static-only. alpha hooks in a cache variable via dl-auxv.h. newer versions of +glibc build dl-sysdep as both shared and static which means we now have symbol +duplication for static builds with dl-sysdep and dl-support. since dl-sysdep +is both shared/static, there is no point in hooking dl-support anymore, so we +can punt it. + +--- + ports/sysdeps/unix/sysv/linux/alpha/dl-support.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/ports/sysdeps/unix/sysv/linux/alpha/dl-support.c ++++ /dev/null +@@ -1,2 +0,0 @@ +-#include "dl-auxv.h" +-#include --- eglibc-2.13.orig/debian/patches/kfreebsd/local-config_h_in.patch +++ eglibc-2.13/debian/patches/kfreebsd/local-config_h_in.patch @@ -0,0 +1,20 @@ +2009-05-23 Aurelien Jarno + + * config.h.in (__KFREEBSD_KERNEL_VERSION): Add. + +--- + config.h.in | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/config.h.in ++++ b/config.h.in +@@ -159,6 +159,9 @@ + /* Linux specific: minimum supported kernel version. */ + #undef __LINUX_KERNEL_VERSION + ++/* kFreeBSD specific: minimum supported kernel version. */ ++#undef __KFREEBSD_KERNEL_VERSION ++ + /* Override abi-tags ABI version if necessary. */ + #undef __ABI_TAG_VERSION + --- eglibc-2.13.orig/debian/patches/kfreebsd/local-scripts.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-scripts.diff @@ -0,0 +1,127 @@ +--- + abi-tags | 2 +- + configure | 6 +++--- + configure.in | 6 +++--- + linuxthreads/shlib-versions | 3 ++- + linuxthreads_db/shlib-versions | 1 + + shlib-versions | 4 ++++ + 6 files changed, 14 insertions(+), 8 deletions(-) + +--- a/abi-tags ++++ b/abi-tags +@@ -22,7 +22,7 @@ + + .*-sun-solaris2.* 2 2.0.0 # just an arbitrary value + +-.*-.*-freebsd.*-gnu.* 3 4.0.0 # earliest compatible kernel version ++.*-.*-kfreebsd.* 3 5.4.0 # earliest compatible kernel version + + .*-.*-knetbsd.*-gnu.* 4 1.6.0 # earliest compatible kernel version + +--- a/configure ++++ b/configure +@@ -4021,7 +4021,7 @@ + # i586-linuxaout is mangled into i586-pc-linux-gnuaout + linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*) + ;; +-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*) ++gnu* | linux* | freebsd* | netbsd* | k*bsd* | sysv4* | solaris2* | irix6*) + # These systems (almost) always use the ELF format. + elf=yes + ;; +@@ -4241,7 +4241,7 @@ + ### + if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then + case "$machine-$host_os" in +- *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) ++ *-linux* | *-gnu* | *-kfreebsd* | arm*-none* | powerpc-aix4.3.*) + ;; + *) + echo "*** The GNU C library is currently not available for this platform." +@@ -4448,7 +4448,7 @@ + test "x$base_os" != x || case "$os" in + gnu*) + base_os=mach/hurd ;; +-netbsd* | 386bsd* | freebsd* | bsdi*) ++netbsd* | 386bsd* | freebsd* | bsdi* | k*bsd*) + base_os=unix/bsd/bsd4.4 ;; + osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*) + base_os=unix/bsd ;; +--- a/configure.in ++++ b/configure.in +@@ -348,7 +348,7 @@ + # i586-linuxaout is mangled into i586-pc-linux-gnuaout + linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*) + ;; +-gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*) ++gnu* | linux* | freebsd* | netbsd* | k*bsd* | sysv4* | solaris2* | irix6*) + # These systems (almost) always use the ELF format. + elf=yes + ;; +@@ -543,7 +543,7 @@ + ### + if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then + case "$machine-$host_os" in +- *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*) ++ *-linux* | *-gnu* | *-kfreebsd* | arm*-none* | powerpc-aix4.3.*) + ;; + *) + echo "*** The GNU C library is currently not available for this platform." +@@ -701,7 +701,7 @@ + test "x$base_os" != x || case "$os" in + gnu*) + base_os=mach/hurd ;; +-netbsd* | 386bsd* | freebsd* | bsdi*) ++netbsd* | 386bsd* | freebsd* | bsdi* | k*bsd*) + base_os=unix/bsd/bsd4.4 ;; + osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*) + base_os=unix/bsd ;; +--- a/shlib-versions ++++ b/shlib-versions +@@ -31,6 +31,7 @@ + x86_64-.*-linux.* DEFAULT GLIBC_2.2.5 + powerpc64-.*-linux.* DEFAULT GLIBC_2.3 + .*-.*-gnu-gnu.* DEFAULT GLIBC_2.2.6 ++.*-.*-kfreebsd.* DEFAULT GLIBC_2.3 + + # Configuration WORDSIZE[32|64] Alternate configuration + # ------------- ---------- ----------------------- +@@ -58,6 +59,7 @@ + sh.*-.*-linux.* libm=6 GLIBC_2.2 + .*-.*-linux.* libm=6 + .*-.*-gnu-gnu.* libm=6 ++.*-.*-kfreebsd.* libm=1 + + # We provide libc.so.6 for Linux kernel versions 2.0 and later. + alpha.*-.*-linux.* libc=6.1 +@@ -65,6 +67,7 @@ + sh.*-.*-linux.* libc=6 GLIBC_2.2 + sparc64.*-.*-linux.* libc=6 GLIBC_2.2 + .*-.*-linux.* libc=6 ++.*-.*-kfreebsd.* libc=0.1 + + # libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release. + .*-.*-gnu-gnu.* libmachuser=1 +@@ -86,6 +89,7 @@ + powerpc64.*-.*-linux.* ld=ld64.so.1 GLIBC_2.3 + cris-.*-linux.* ld=ld.so.1 GLIBC_2.2 + x86_64-.*-linux.* ld=ld-linux-x86-64.so.2 GLIBC_2.2.5 ++x86_64-.*-kfreebsd.* ld=ld-kfreebsd-x86-64.so.1 + # We use the ELF ABI standard name for the default. + .*-.*-.* ld=ld.so.1 + +--- a/linuxthreads/shlib-versions ++++ b/linuxthreads/shlib-versions +@@ -8,4 +8,5 @@ + cris-.*-linux.* libpthread=0 GLIBC_2.2 + x86_64-.*-linux.* libpthread=0 GLIBC_2.2.5 + powerpc64-.*-linux.* libpthread=0 GLIBC_2.3 +-.*-.*-linux.* libpthread=0 ++.*-.*-kfreebsd.* libpthread=0 GLIBC_2.3 ++.*-.*-.* libpthread=0 +--- a/linuxthreads_db/shlib-versions ++++ b/linuxthreads_db/shlib-versions +@@ -1,2 +1,3 @@ + # The thread debug library + .*-.*-linux.* libthread_db=1 ++.*-.*-kfreebsd.* libthread_db=1 --- eglibc-2.13.orig/debian/patches/kfreebsd/local-sysdeps.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-sysdeps.diff @@ -0,0 +1,29845 @@ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/Dist +@@ -0,0 +1,29 @@ ++bits/mcontext.h ++bits/stat16.h ++fpu.h ++machine/pal.h ++net/ethernet.h ++net/if_arp.h ++net/if_ether.h ++net/if_dl.h ++net/route.h ++nfs/nfs.h ++regdef.h ++sa_len.c ++stat16conv.c ++statfsconv.c ++sys/acl.h ++sys/extattr.h ++sys/io.h ++sys/jail.h ++sys/linker.h ++sys/mount.h ++sys/perm.h ++sys/rfork.h ++sys/rtprio.h ++sys/syslimits.h ++sys/timex.h ++sys/vm86.h ++sys_lseek.S ++sysarch.h ++ucontext_i.h +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/Implies +@@ -0,0 +1,11 @@ ++# The kernel include files come from the 'kernel-include' add-on. ++# This is actually added by configure.in. ++#/usr/src/sys/ ++ ++# One of two possible utmp file formats. ++# This is actually added by configure.in. ++#unix/bsd/bsd4.4/kfreebsd/utmp-xyz ++ ++# The gnu subdirectory exists for things common to Linux-based, Hurd-based ++# and kFreeBSD-based GNU systems. ++gnu +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/Makefile +@@ -0,0 +1,134 @@ ++# Use bash, not /bin/sh, for executing scripts, because the native ++# FreeBSD /bin/sh does not interpret the IFS="" read ... command ++# in localedata/tst-fmon.sh correctly. ++SHELL = bash ++ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += \ ++ kenv.h \ ++ sys/mount.h \ ++ sys/kd.h \ ++ sys/rfork.h ++endif ++ ++ifeq ($(subdir),stdlib) ++sysdep_headers += \ ++ bits/mcontext.h ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),csu) ++# For . ++sysdep_routines += errno-loc ++endif ++ ++ifeq ($(subdir),assert) ++CFLAGS-assert.c += -DFATAL_PREPARE_INCLUDE='' ++CFLAGS-assert-perr.c += -DFATAL_PREPARE_INCLUDE='' ++endif ++ ++ifeq ($(subdir),io) ++# For . ++sysdep_routines += sys_access sys_faccessat sys_fchownat sys_fexecve sys_getcwd sys_linkat sys_lseek sys_freebsd6_lseek sys_readlinkat sys_symlinkat sys_unlinkat ++# For . ++sysdep_routines += sys_open sys_openat open_2 ++# For . ++sysdep_routines += sys_fchmodat sys_fstat sys_fstatat sys_lstat sys_mkdirat sys_mkfifoat sys_mknod sys_mknodat sys_nfstat sys_nlstat sys_nstat sys_stat lchflags ++# For . ++sysdep_routines += fstatfs64 statfs64 sys_fstatfs sys_statfs ++# For ++sysdep_routines += sys_renameat ++# For . ++sysdep_routines += sys_futimesat ++# Other. ++sysdep_routines += lchmod ++endif ++ ++ifeq ($(subdir),dirent) ++# For . ++sysdep_routines += sys_getdents sys_getdirentries getdirentries getdirentries64 ++endif ++ ++ifeq ($(subdir),misc) ++# For . ++sysdep_routines += kenv ++# For . ++sysdep_routines += clone start_thread ++# For . ++sysdep_routines += sys_ftruncate sys_freebsd6_ftruncate sys_truncate sys_freebsd6_truncate ++# For . ++sysdep_routines += acl_aclcheck_fd acl_aclcheck_file acl_delete_fd acl_delete_file acl_get_fd acl_get_file acl_set_fd acl_set_file ++# For . ++sysdep_routines += extattrctl extattr_delete_file extattr_get_file extattr_set_file ++# For . ++sysdep_routines += jail jail_attach jail_remove jail_get jail_set ++# For . ++sysdep_routines += ktrace utrace ++# For . ++sysdep_routines += kldfind kldfirstmod kldload kldnext kldstat kldsym kldunload kldunloadf ++# For . ++sysdep_routines += minherit sys_mmap sys_freebsd6_mmap sys_munmap ++# For . ++sysdep_routines += fhopen sys_fhstat sys_fhstatfs fhstat fhstat64 fhstatfs fhstatfs64 getfh getfsstat getfsstat64 sys_getfsstat getmntinfo getmntinfo64 mount nmount unmount ++# For . ++sysdep_routines += rfork ++# For . ++sysdep_routines += rtprio ++# For . ++sysdep_routines += bsd_sendfile ++# For . ++sysdep_routines += devname ++# For . ++sysdep_routines += sysctl sysctlbyname sysctlnametomib ++# For . ++sysdep_routines += sys_readv sys_writev ++# Other. ++sysdep_routines += swapon swapoff sys_aio_cancel sys_aio_error sys_aio_read sys_aio_return sys_aio_suspend sys_aio_waitcomplete sys_aio_write sys_lio_listio issetugid modfind modfnext modnext modstat obreak quotactl rfork sysarch undelete yield ++# for INLINE_SYSCALL ++sysdep_routines += sys_fork sys_execve sys_sigaction sys_close sys_fcntl ++sysdep_routines += sys_clock_getres sys_clock_gettime sys_clock_settime ++sysdep_routines += sys_shm_open sys_shm_unlink sys_pselect sys_semctl ++endif ++ ++ifeq ($(subdir),posix) ++# For . ++sysdep_routines += sys_getlogin sys_pread sys_freebsd6_pread sys_pwrite sys_freebsd6_pwrite sys_setlogin sys_read sys_write ++# for ++sysdep_routines += sys_cpuset_getaffinity sys_cpuset_setaffinity ++endif ++ ++ifeq ($(subdir),inet) ++sysdep_headers += net/ethernet.h net/if_ether.h ++endif ++ ++ifeq ($(subdir),time) ++# For . ++sysdep_routines += ntp_adjtime ntp_gettime ++endif ++ ++ifeq ($(subdir),socket) ++sysdep_routines += sa_len sys_bind sys_connect sys_sendto ++endif ++ ++# Linuxthreads dependencies. ++ ++ifeq ($(subdir),posix) ++sysdep_headers += bits/initspin.h ++endif ++ ++# Don't compile the ctype glue code, since we have a much better ++# than the old non-GNU C library. ++inhibit-glue = yes ++ ++# Special ELF hacks. ++ifeq ($(subdir),elf) ++sysdep-rtld-routines += dl-brk dl-sbrk ++sysdep_routines += sys_umtx ++endif ++ ++ifeq ($(subdir),sunrpc) ++sysdep_headers += nfs/nfs.h ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/Versions +@@ -0,0 +1,120 @@ ++libc { ++ # The comment lines with "#errlist-compat" are magic; see errlist-compat.awk. ++ # When you get an error from errlist-compat.awk, you need to add a new ++ # version here. Don't do this blindly, since this means changing the ABI ++ # for all GNU/kFreeBSD configurations. ++ ++ GLIBC_2.2.6 { ++ # c* ++ clone; ++ ++ # e* ++ extattrctl; extattr_delete_file; extattr_get_file; extattr_set_file; ++ ++ # f* ++ fhopen; fhstat; fhstatfs; futimes; ++ ++ # g* ++ getdents; getfh; getfsstat; getfsstat64; getmntinfo; getmntinfo64; ++ getresgid; getresuid; ++ ++ # i* ++ issetugid; ++ ++ # j* ++ jail; ++ ++ # k* ++ kldfind; kldfirstmod; kldload; kldnext; kldstat; kldsym; kldunload; kldunloadf; ++ ktrace; ++ ++ # l* ++ lchmod; lutimes; ++ ++ # m* ++ minherit; modfind; modfnext; modnext; modstat; mount; ++ ++ # n* ++ nmount; ntp_adjtime; ntp_gettime; ++ ++ # q* ++ quotactl; ++ ++ # r* ++ rfork; rtprio; ++ ++ # s* ++ sendfile; setresgid; setresuid; swapoff; swapon; sysarch; sysctl; sysctlbyname; ++ ++ # u* ++ undelete; unmount; utrace; ++ ++ # see . ++ __acl_aclcheck_fd; __acl_aclcheck_file; __acl_delete_fd; __acl_delete_file; ++ __acl_get_fd; __acl_get_file; __acl_set_fd; __acl_set_file; ++ ++ # see . ++ __errno_location; ++ ++ # see . ++ __sysctl; ++ ++ # Questionable system calls. These functions may be removed at any moment. ++ __syscall_aio_cancel; __syscall_aio_error; __syscall_aio_read; ++ __syscall_aio_return; __syscall_aio_suspend; __syscall_aio_waitcomplete; ++ __syscall_aio_write; __syscall_lio_listio; ++ __syscall_obreak; ++ __syscall_yield; ++ } ++ GLIBC_2.3 { ++ #errlist-compat 87 ++ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; ++ } ++ GLIBC_2.3.4 { ++ # f* ++ fhstat64; fhstatfs64; ++ kqueue; kevent; ++ ++ #errlist-compat 93 ++ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; ++ ++ # functions used in inline functions or macros ++ __libc_sa_len; ++ } ++ GLIBC_2.10 { ++ devname; ++ devname_r; ++ kenv; ++ sysctlnametomib; ++ } ++ GLIBC_2.11 { ++ lchflags; ++ #errlist-compat 94 ++ _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; ++ } ++ GLIBC_2.13 { ++ jail_attach; ++ jail_remove; ++ jail_get; ++ jail_set; ++ } ++ GLIBC_PRIVATE { ++ # needed by libpthread. ++ __clone; __libc_fork; __libc_sigaction; ++ # needed by libpthread as INLINE_SYSCALL: ++ __syscall_fork; ++ __syscall_open; __syscall_close; ++ __syscall_read; __syscall_write; ++ __syscall_wait4; __syscall_fcntl; ++ # needed by librt as INLINE_SYSCALL: ++ __syscall_clock_getres; __syscall_clock_gettime; __syscall_clock_settime; ++ __syscall_shm_open; __syscall_shm_unlink; ++ # misc fixes for FreeBSD: ++ __syscall_freebsd6_lseek; __syscall_freebsd6_pread; __syscall_freebsd6_pwrite; ++ __syscall_lseek; __syscall_pread; __syscall_pwrite; ++ __syscall_connect; __syscall_sendto; ++ __syscall_cpuset_getaffinity ; __syscall_cpuset_setaffinity; ++ # global variable used in brk() ++ _end; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/_G_config.h +@@ -0,0 +1,100 @@ ++/* This file is needed by libio to define various configuration parameters. ++ These are always the same in the GNU C library. */ ++ ++#ifndef _G_config_h ++#define _G_config_h 1 ++ ++/* Define types for libio in terms of the standard internal type names. */ ++ ++#include ++#define __need_size_t ++#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T ++# define __need_wchar_t ++#endif ++#define __need_NULL ++#include ++#define __need_mbstate_t ++#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T ++# define __need_wint_t ++#endif ++#include ++#define _G_size_t size_t ++typedef struct ++{ ++ __off_t __pos; ++ __mbstate_t __state; ++} _G_fpos_t; ++typedef struct ++{ ++ __off64_t __pos; ++ __mbstate_t __state; ++} _G_fpos64_t; ++#define _G_ssize_t __ssize_t ++#define _G_off_t __off_t ++#define _G_off64_t __off64_t ++#define _G_pid_t __pid_t ++#define _G_uid_t __uid_t ++#define _G_wchar_t wchar_t ++#define _G_wint_t wint_t ++#define _G_stat64 stat64 ++#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T ++# include ++typedef union ++{ ++ struct __gconv_info __cd; ++ struct ++ { ++ struct __gconv_info __cd; ++ struct __gconv_step_data __data; ++ } __combined; ++} _G_iconv_t; ++#endif ++ ++typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); ++typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); ++typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); ++typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); ++ ++#define _G_HAVE_BOOL 1 ++ ++ ++/* These library features are always available in the GNU C library. */ ++#define _G_HAVE_ATEXIT 1 ++#define _G_HAVE_SYS_CDEFS 1 ++#define _G_HAVE_SYS_WAIT 1 ++#define _G_NEED_STDARG_H 1 ++#define _G_va_list __gnuc_va_list ++ ++#define _G_HAVE_PRINTF_FP 1 ++#define _G_HAVE_MMAP 1 ++#define _G_HAVE_LONG_DOUBLE_IO 1 ++#define _G_HAVE_IO_FILE_OPEN 1 ++#define _G_HAVE_IO_GETLINE_INFO 1 ++ ++#define _G_IO_IO_FILE_VERSION 0x20001 ++ ++#define _G_OPEN64 __open64 ++#define _G_LSEEK64 __lseek64 ++#define _G_MMAP64 __mmap64 ++#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf) ++ ++/* This is defined by if `st_blksize' exists. */ ++#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE) ++ ++#define _G_BUFSIZ 8192 ++ ++/* These are the vtbl details for ELF. */ ++#define _G_NAMES_HAVE_UNDERSCORE 0 ++#define _G_VTABLE_LABEL_HAS_LENGTH 1 ++#define _G_USING_THUNKS 1 ++#define _G_VTABLE_LABEL_PREFIX "__vt_" ++#define _G_VTABLE_LABEL_PREFIX_ID __vt_ ++ ++ ++#if defined __cplusplus || defined __STDC__ ++# define _G_ARGS(ARGLIST) ARGLIST ++#else ++# define _G_ARGS(ARGLIST) () ++#endif ++ ++#endif /* _G_config.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/a.out.h +@@ -0,0 +1,140 @@ ++#ifndef __A_OUT_GNU_H__ ++#define __A_OUT_GNU_H__ ++ ++#define __GNU_EXEC_MACROS__ ++ ++struct exec ++{ ++ unsigned long a_info; /* Use macros N_MAGIC, etc for access. */ ++ unsigned int a_text; /* Length of text, in bytes. */ ++ unsigned int a_data; /* Length of data, in bytes. */ ++ unsigned int a_bss; /* Length of uninitialized data area for file, in bytes. */ ++ unsigned int a_syms; /* Length of symbol table data in file, in bytes. */ ++ unsigned int a_entry; /* Start address. */ ++ unsigned int a_trsize;/* Length of relocation info for text, in bytes. */ ++ unsigned int a_drsize;/* Length of relocation info for data, in bytes. */ ++}; ++ ++enum machine_type ++{ ++ M_OLDSUN2 = 0, ++ M_68010 = 1, ++ M_68020 = 2, ++ M_SPARC = 3, ++ M_386 = 100, ++ M_MIPS1 = 151, ++ M_MIPS2 = 152 ++}; ++ ++#define N_MAGIC(exec) ((exec).a_info & 0xffff) ++#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff)) ++#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff) ++#define N_SET_INFO(exec, magic, type, flags) \ ++ ((exec).a_info = ((magic) & 0xffff) \ ++ | (((int)(type) & 0xff) << 16) \ ++ | (((flags) & 0xff) << 24)) ++#define N_SET_MAGIC(exec, magic) \ ++ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff)) ++#define N_SET_MACHTYPE(exec, machtype) \ ++ ((exec).a_info = \ ++ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16)) ++#define N_SET_FLAGS(exec, flags) \ ++ ((exec).a_info = \ ++ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24)) ++ ++/* Code indicating object file or impure executable. */ ++#define OMAGIC 0407 ++/* Code indicating pure executable. */ ++#define NMAGIC 0410 ++/* Code indicating demand-paged executable. */ ++#define ZMAGIC 0413 ++/* This indicates a demand-paged executable with the header in the text. ++ The first page is unmapped to help trap NULL pointer references. */ ++#define QMAGIC 0314 ++/* Code indicating core file. */ ++#define CMAGIC 0421 ++ ++#define N_TRSIZE(a) ((a).a_trsize) ++#define N_DRSIZE(a) ((a).a_drsize) ++#define N_SYMSIZE(a) ((a).a_syms) ++#define N_BADMAG(x) \ ++ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \ ++ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC) ++#define _N_HDROFF(x) (1024 - sizeof (struct exec)) ++#define N_TXTOFF(x) \ ++ (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : \ ++ (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec))) ++#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text) ++#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data) ++#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x)) ++#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x)) ++#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x)) ++ ++/* Address of text segment in memory after it is loaded. */ ++#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? 4096 : 0) ++ ++/* Address of data segment in memory after it is loaded. */ ++#define SEGMENT_SIZE 1024 ++ ++#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1)) ++#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text) ++ ++#define N_DATADDR(x) \ ++ (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) \ ++ : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x)))) ++#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data) ++ ++#if !defined (N_NLIST_DECLARED) ++struct nlist ++{ ++ union ++ { ++ char *n_name; ++ union ++ { ++ char *n_name; ++ struct nlist *n_next; ++ long n_strx; ++ } n_un; ++ } __attribute__ ((__transparent_union__)); ++ unsigned char n_type; ++ char n_other; ++ short n_desc; ++ unsigned long n_value; ++}; ++#endif /* no N_NLIST_DECLARED. */ ++ ++#define N_UNDF 0 ++#define N_ABS 2 ++#define N_TEXT 4 ++#define N_DATA 6 ++#define N_BSS 8 ++#define N_FN 15 ++#define N_EXT 1 ++#define N_TYPE 036 ++#define N_STAB 0340 ++#define N_INDR 0xa ++#define N_SETA 0x14 /* Absolute set element symbol. */ ++#define N_SETT 0x16 /* Text set element symbol. */ ++#define N_SETD 0x18 /* Data set element symbol. */ ++#define N_SETB 0x1A /* Bss set element symbol. */ ++#define N_SETV 0x1C /* Pointer to set vector in data area. */ ++ ++#if !defined (N_RELOCATION_INFO_DECLARED) ++/* This structure describes a single relocation to be performed. ++ The text-relocation section of the file is a vector of these structures, ++ all of which apply to the text section. ++ Likewise, the data-relocation section applies to the data section. */ ++ ++struct relocation_info ++{ ++ int r_address; ++ unsigned int r_symbolnum:24; ++ unsigned int r_pcrel:1; ++ unsigned int r_length:2; ++ unsigned int r_extern:1; ++ unsigned int r_pad:4; ++}; ++#endif /* no N_RELOCATION_INFO_DECLARED. */ ++ ++#endif /* __A_OUT_GNU_H__ */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/access.c +@@ -0,0 +1,68 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* ++ The FreeBSD kernel do not test file access correctly when the ++ process' real user ID is superuser. In particular, they always return ++ zero when testing execute permissions without regard to whether the ++ file is executable. ++ ++ While this behaviour conforms to POSIX.1-2008, it is explicitely ++ discouraged. This wrapper implements the recommended behaviour. ++ */ ++ ++extern int __syscall_access (const char *path, int mode); ++libc_hidden_proto (__syscall_access) ++ ++int ++__access (const char *path, int mode) ++{ ++ struct stat64 stats; ++ ++ if ((__getuid() != 0) || !(mode & X_OK)) ++ return __syscall_access (path, mode); ++ ++ /* Althought the super-user can read and write any file, ++ the file-system might be i.e. read-only. Do the check. */ ++ ++ if (__syscall_access (path, mode)) ++ return -1; ++ ++ if (stat64 (path, &stats)) ++ return -1; ++ ++ /* The super-user can execute any file that anyone can execute. */ ++ if (stats.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) ++ return 0; ++ ++ __set_errno (EACCES); ++ return -1; ++} ++ ++weak_alias (__access, access) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/Makefile +@@ -0,0 +1,28 @@ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += machine/pal.h ++sysdep_routines += sys_select sys_utimes sys_lutimes sys_futimes ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),io) ++sysdep_routines += sys_poll ++endif ++ ++ifeq ($(subdir),math) ++sysdep_routines += ieee_get_fp_control ieee_set_fp_control ++endif ++ ++ifeq ($(subdir),posix) ++sysdep_routines += sys_nanosleep sys_sched_rr_gi ++endif ++ ++ifeq ($(subdir),time) ++sysdep_routines += sys_adjtime sys_gettimeofday sys_settimeofday sys_getitimer sys_setitimer ++endif ++ ++ifeq ($(subdir),resource) ++sysdep_routines += sys_getrusage ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/README +@@ -0,0 +1,11 @@ ++Note that even on 64-bit platforms, because __ino64_t != __ino_t, we have ++stat64 != stat, fstat64 != fstat, lstat64 != lstat, fhstat64 != fhstat, ++glob64 != glob. ++ ++Note that on alpha glue code is used in order to use a 64-bit __time_t with a ++32-bit __kernel_time_t type. All system calls taking arguments with ++'time_t', 'struct timeval', 'struct timespec', 'struct itimerval', ++'struct rusage', 'struct msqid_ds', 'struct shmid_ds', 'struct semid_ds' need ++some special handling. The benefit is that user programs will not need to switch ++from a 32-bit time_t to a 64-bit time_t in 2038. ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/adjtime.c +@@ -0,0 +1,51 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_adjtime (const struct __kernel_timeval *delta, ++ struct __kernel_timeval *olddelta); ++ ++int ++__adjtime (const struct timeval *delta, struct timeval *olddelta) ++{ ++ struct __kernel_timeval kdelta; ++ int retval; ++ ++ kdelta.tv_sec = delta->tv_sec; ++ kdelta.tv_usec = delta->tv_usec; ++ if (olddelta != NULL) ++ { ++ struct __kernel_timeval kolddelta; ++ ++ retval = __syscall_adjtime (&kdelta, &kolddelta); ++ if (retval >= 0) ++ { ++ olddelta->tv_sec = kolddelta.tv_sec; ++ olddelta->tv_usec = kolddelta.tv_usec; ++ } ++ } ++ else ++ retval = __syscall_adjtime (&kdelta, NULL); ++ return retval; ++} ++ ++weak_alias (__adjtime, adjtime) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/kernel_time_t.h +@@ -0,0 +1,143 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++/* This header files describe the way that structures using time_t ++ are represented in the kernel */ ++ ++#ifndef _BITS_KERNEL_TIME_T_H ++#define _BITS_TIME_H 1 ++ ++#include ++#include ++ ++/* This structure corresponds to the newer FreeBSD 'struct timespec' */ ++struct __kernel_timespec ++ { ++ int tv_sec; /* Seconds. */ ++ long int tv_nsec; /* Nanoseconds. */ ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct timeval' */ ++struct __kernel_timeval ++ { ++ int tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct itimerval' */ ++struct __kernel_itimerval ++ { ++ /* Value to put into `it_value' when the timer expires. */ ++ struct __kernel_timeval it_interval; ++ /* Time to the next timer expiration. */ ++ struct __kernel_timeval it_value; ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct rusage' */ ++struct __kernel_rusage ++ { ++ /* Total amount of user time used. */ ++ struct __kernel_timeval ru_utime; ++ /* Total amount of system time used. */ ++ struct __kernel_timeval ru_stime; ++ /* Maximum resident set size (in kilobytes). */ ++ long int ru_maxrss; ++ /* Amount of sharing of text segment memory ++ with other processes (kilobyte-seconds). */ ++ long int ru_ixrss; ++ /* Amount of data segment memory used (kilobyte-seconds). */ ++ long int ru_idrss; ++ /* Amount of stack memory used (kilobyte-seconds). */ ++ long int ru_isrss; ++ /* Number of soft page faults (i.e. those serviced by reclaiming ++ a page from the list of pages awaiting reallocation. */ ++ long int ru_minflt; ++ /* Number of hard page faults (i.e. those that required I/O). */ ++ long int ru_majflt; ++ /* Number of times a process was swapped out of physical memory. */ ++ long int ru_nswap; ++ /* Number of input operations via the file system. Note: This ++ and `ru_oublock' do not include operations with the cache. */ ++ long int ru_inblock; ++ /* Number of output operations via the file system. */ ++ long int ru_oublock; ++ /* Number of IPC messages sent. */ ++ long int ru_msgsnd; ++ /* Number of IPC messages received. */ ++ long int ru_msgrcv; ++ /* Number of signals delivered. */ ++ long int ru_nsignals; ++ /* Number of voluntary context switches, i.e. because the process ++ gave up the process before it had to (usually to wait for some ++ resource to be available). */ ++ long int ru_nvcsw; ++ /* Number of involuntary context switches, i.e. a higher priority process ++ became runnable or the current process used up its time slice. */ ++ long int ru_nivcsw; ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct msqid_ds' */ ++struct __kernel_msqid_ds ++{ ++ struct ipc_perm msg_perm; /* structure describing operation permission */ ++ void *__msg_first; ++ void *__msg_last; ++ msglen_t __msg_cbytes; /* current number of bytes on queue */ ++ msgqnum_t msg_qnum; /* number of messages currently on queue */ ++ msglen_t msg_qbytes; /* max number of bytes allowed on queue */ ++ __pid_t msg_lspid; /* pid of last msgsnd() */ ++ __pid_t msg_lrpid; /* pid of last msgrcv() */ ++ int msg_stime; /* time of last msgsnd command */ ++ long __unused1; ++ int msg_rtime; /* time of last msgrcv command */ ++ long __unused2; ++ int msg_ctime; /* time of last change */ ++ long __unused3; ++ long __unused4[4]; ++}; ++ ++/* This structure corresponds to the newer FreeBSD 'struct shmid_ds' */ ++struct __kernel_shmid_ds ++ { ++ struct ipc_perm shm_perm; /* operation permission struct */ ++ int shm_segsz; /* size of segment in bytes */ ++ __pid_t shm_lpid; /* pid of last shmop */ ++ __pid_t shm_cpid; /* pid of creator */ ++ shmatt_t shm_nattch; /* number of current attaches */ ++ int shm_atime; /* time of last shmat() */ ++ int shm_dtime; /* time of last shmdt() */ ++ int shm_ctime; /* time of last change by shmctl() */ ++ void *__shm_internal; ++ }; ++ ++/* This structure corresponds to the newer FreeBSD 'struct semid_ds' */ ++struct semid_ds ++{ ++ struct ipc_perm sem_perm; /* operation permission struct */ ++ void *__sem_base; ++ unsigned short int sem_nsems; /* number of semaphores in set */ ++ int sem_otime; /* last semop() time */ ++ long __unused1; ++ int sem_ctime; /* last time changed by semctl() */ ++ long __unused2; ++ long __unused3[4]; ++}; ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/mcontext.h +@@ -0,0 +1,52 @@ ++/* Machine-dependent processor state structure for FreeBSD. alpha version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/* Whole processor state. */ ++typedef struct ++ { ++ long mc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* General registers. */ ++ unsigned long mc_regs[32]; ++ long mc_ps; ++ long mc_pc; /* Process counter. */ ++ ++ /* Trap arguments. */ ++ unsigned long mc_traparg_a0; ++ unsigned long mc_traparg_a1; ++ unsigned long mc_traparg_a2; ++ ++ /* Floating-point registers. */ ++ unsigned long mc_fpregs[32]; ++ unsigned long mc_fpcr; ++ unsigned long mc_fp_control; ++#define _MC_FPOWNED_NONE 0 /* FP state not used */ ++#define _MC_FPOWNED_FPU 1 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 2 /* FP state came from PCB */ ++ long mc_ownedfp; ++#define _MC_REV0_SIGFRAME 1 /* context is a signal frame */ ++#define _MC_REV0_TRAPFRAME 2 /* context is a trap frame */ ++ long mc_format; ++ long mc_thrptr; /* Thread pointer */ ++ long mc_spare[5]; ++ } mcontext_t; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/sigcontext.h +@@ -0,0 +1,84 @@ ++/* Machine-dependent signal context structure for FreeBSD. alpha version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++/* State of this thread when the signal was taken. */ ++struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ long sc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* General registers. */ ++ unsigned long sc_regs[32]; ++ long sc_ps; ++ long sc_pc; /* Process counter. */ ++ ++ /* Trap arguments. */ ++ unsigned long sc_traparg_a0; ++ unsigned long sc_traparg_a1; ++ unsigned long sc_traparg_a2; ++ ++ /* Floating-point registers. */ ++ unsigned long sc_fpregs[32]; ++ unsigned long sc_fpcr; ++ unsigned long sc_fp_control; ++ long sc_ownedfp; ++ long sc_format; /* see mcontext_t */ ++ long sc_spare[6]; /* XXX */ ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_regs[30] /* Stack pointer. */ ++#define sc_fp sc_regs[15] /* Frame pointer. */ ++ ++ ++#if 0 /* XXX These need verification. */ ++ ++/* Codes for SIGFPE. */ ++#define FPE_INTDIV 1 /* integer divide by zero */ ++#define FPE_INTOVF 2 /* integer overflow */ ++#define FPE_FLTDIV 3 /* floating divide by zero */ ++#define FPE_FLTOVF 4 /* floating overflow */ ++#define FPE_FLTUND 5 /* floating underflow */ ++#define FPE_FLTINX 6 /* floating loss of precision */ ++#define FPE_SUBRNG_FAULT 0x7 /* BOUNDS instruction failed */ ++#define FPE_FLTDNR_FAULT 0x8 /* denormalized operand */ ++#define FPE_EMERR_FAULT 0xa /* mysterious emulation error 33 */ ++#define FPE_EMBND_FAULT 0xb /* emulation BOUNDS instruction failed */ ++ ++/* Codes for SIGILL. */ ++#define ILL_PRIVIN_FAULT 1 ++#define ILL_ALIGN_FAULT 14 ++#define ILL_FPOP_FAULT 24 ++ ++/* Codes for SIGBUS. */ ++#define BUS_PAGE_FAULT 12 ++#define BUS_SEGNP_FAULT 26 ++#define BUS_STK_FAULT 27 ++#define BUS_SEGM_FAULT 29 ++ ++#endif ++ ++#endif /* _BITS_SIGCONTEXT_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat16.h +@@ -0,0 +1,53 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This structure corresponds to the original FreeBSD 'struct stat' ++ (i.e. _STAT_VER_stat), and is used by the fhstat() system call. */ ++struct stat16 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino_t st_ino; /* File serial number. */ ++ ++ __uint16_t st_mode; /* File mode. */ ++ __uint16_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ int st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ int st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ int st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __uint32_t __unused1; ++ __quad_t __unused2[2]; ++ }; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/stat32.h +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This structure corresponds to the newer FreeBSD 'struct nstat' ++ (i.e. _STAT_VER_nstat). */ ++struct stat32 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino_t st_ino; /* File serial number. */ ++ ++ __uint32_t st_mode; /* File mode. */ ++ __uint32_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ int st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ int st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ int st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __quad_t __unused1[2]; ++ }; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/bits/time.h +@@ -0,0 +1,89 @@ ++/* System-dependent timing definitions. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef __need_timeval ++# ifndef _BITS_TIME_H ++# define _BITS_TIME_H 1 ++ ++/* ISO/IEC 9899:1990 7.12.1: ++ The macro `CLOCKS_PER_SEC' is the number per second of the value ++ returned by the `clock' function. */ ++/* CAE XSH, Issue 4, Version 2: ++ The value of CLOCKS_PER_SEC is required to be 1 million on all ++ XSI-conformant systems. */ ++# define CLOCKS_PER_SEC 1000000l ++ ++# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K ++/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK ++ presents the real value for clock ticks per second for the system. */ ++# define CLK_TCK 100 ++# endif ++ ++# ifdef __USE_POSIX199309 ++/* Identifier for system-wide realtime clock. */ ++# define CLOCK_REALTIME 0 ++/* High-resolution timer from the CPU. */ ++# define CLOCK_PROCESS_CPUTIME_ID 2 ++/* Thread-specific CPU-time clock. */ ++# define CLOCK_THREAD_CPUTIME_ID 3 ++/* Monotonic system-wide clock. */ ++# define CLOCK_MONOTONIC 4 ++/* These are BSD specific clocks. */ ++# ifdef __USE_BSD ++# define CLOCK_VIRTUAL 1 ++# define CLOCK_PROF 2 ++# endif ++ ++/* Flag to indicate time is absolute. */ ++# define TIMER_ABSTIME 1 ++# endif ++ ++ ++/* Getkerninfo clock information structure */ ++struct clockinfo ++ { ++ int hz; /* clock frequency */ ++ int tick; /* micro-seconds per hz tick */ ++ int spare; ++ int stathz; /* statistics clock frequency */ ++ int profhz; /* profiling clock frequency */ ++ }; ++ ++# endif /* bits/time.h */ ++#endif ++ ++#ifdef __need_timeval ++# undef __need_timeval ++# ifndef _STRUCT_TIMEVAL ++# define _STRUCT_TIMEVAL 1 ++# include ++ ++/* A time value that is accurate to the nearest ++ microsecond but also has a range of years. */ ++struct timeval ++ { ++ __time_t tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++# endif /* struct timeval */ ++#endif /* need timeval */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/brk.S +@@ -0,0 +1,73 @@ ++/* Copyright (C) 1993, 1995-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Traditional name for the 'brk' system call. */ ++#define SYS_brk SYS_obreak ++ ++#include ++ ++#ifdef PIC ++.section .bss ++ .align 3 ++ .globl __curbrk ++__curbrk: .skip 8 ++ .type __curbrk,@object ++ .size __curbrk,8 ++#else ++.comm __curbrk, 8 ++#endif ++ ++ .text ++LEAF(__brk, 8) ++ ldgp gp, 0(t12) ++ subq sp, 8, sp ++#ifdef PROF ++ .set noat ++ lda AT, _mcount ++ jsr AT, (AT), _mcount ++ .set at ++#endif ++ .prologue 1 ++ ++ /* Save the requested brk across the system call. */ ++ stq a0, 0(sp) ++ ++ ldiq v0, SYS_brk ++ call_pal PAL_callsys ++ ++ ldq a0, 0(sp) ++ ++ /* Test for error. */ ++ bne a3, $error ++ ++ /* Don't need to handle brk(0) specially, because the kernel doesn't ++ support this way of calling brk anyway. */ ++ ++ /* Update __curbrk and return cleanly. */ ++ stq a0, __curbrk ++ mov zero, v0 ++ addq sp, 8, sp ++ ret ++ ++ /* What a horrible way to die. */ ++$error: addq sp, 8, sp ++ jmp zero, __syscall_error ++ ++ END(__brk) ++ ++weak_alias (__brk, brk) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/dl-brk.S +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/dl-machine.h +@@ -0,0 +1,34 @@ ++/* Dynamic linker magic for glibc on FreeBSD. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* FreeBSD on alpha can emulate two ABIs (= sets of system calls): ++ The native FreeBSD ABI and OSF/1. Without additional kernel ++ modules, only the FreeBSD ABI is supported. For this reason, we use ++ this ABI, and we have to label every executable as using this ABI, ++ by writing the string "FreeBSD" at byte offset 8 (= EI_ABIVERSION) ++ of every executable. Strictly speaking, only ld.so and the ++ executables would need this labelling. But it's easiest to mark ++ every executable and every shared object the same way. */ ++#define VALID_ELF_HEADER(e_ident, expected, size) \ ++ (memcmp (e_ident, expected, EI_ABIVERSION) == 0 \ ++ && memcmp ((const char *) (e_ident) + EI_ABIVERSION, "FreeBSD", 8) == 0) ++#define VALID_ELF_ABIVERSION(abi) (memcmp (&(abi), "FreeBSD", 8) == 0) ++ ++#include_next +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fhstatfs64.c +@@ -0,0 +1,2 @@ ++/* 'fhstatfs64' is the same as 'fhstatfs', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fork.S +@@ -0,0 +1,30 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++PSEUDO (__libc_fork, fork, 0) ++ /* In the parent process, a4 == 0, v0 == child pid. */ ++ /* In the child process, a4 == 1, v0 == parent pid. */ ++ cmovne a4, zero, v0 ++ ret ++ ++PSEUDO_END (__libc_fork) ++ ++weak_alias (__libc_fork, __fork) ++weak_alias (__fork, fork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/fpu.h +@@ -0,0 +1,128 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FPU_H ++#define _FPU_H 1 ++ ++ ++/* Usage of the fpcr register. ++ The rounding mode bits (in FPCR_DYN_MASK) can be modified in user mode ++ and will be preserved by the kernel when a software assisted floating- ++ point operation or an exception occurs. All other bits will be set by ++ the kernel when a software assisted floating-point operation or an ++ exception occurs. */ ++ ++#if 0 /* Only Linux, not FreeBSD */ ++#define FPCR_DNOD (1UL<<47) /* denorm INV trap disable */ ++#define FPCR_DNZ (1UL<<48) /* denorms to zero */ ++#endif ++#define FPCR_INVD (1UL<<49) /* invalid op disable (opt.) */ ++#define FPCR_DZED (1UL<<50) /* division by zero disable (opt.) */ ++#define FPCR_OVFD (1UL<<51) /* overflow disable (optional) */ ++#define FPCR_INV (1UL<<52) /* invalid operation */ ++#define FPCR_DZE (1UL<<53) /* division by zero */ ++#define FPCR_OVF (1UL<<54) /* overflow */ ++#define FPCR_UNF (1UL<<55) /* underflow */ ++#define FPCR_INE (1UL<<56) /* inexact */ ++#define FPCR_IOV (1UL<<57) /* integer overflow */ ++#define FPCR_UNDZ (1UL<<60) /* underflow to zero (opt.) */ ++#define FPCR_UNFD (1UL<<61) /* underflow disable (opt.) */ ++#define FPCR_INED (1UL<<62) /* inexact disable (opt.) */ ++#define FPCR_SUM (1UL<<63) /* summary bit, an OR of bits 52..56 */ ++ ++#define FPCR_DYN_SHIFT 58 /* first dynamic rounding mode bit */ ++#define FPCR_DYN_CHOPPED (0x0UL << FPCR_DYN_SHIFT) /* towards 0 */ ++#define FPCR_DYN_MINUS (0x1UL << FPCR_DYN_SHIFT) /* towards -INF */ ++#define FPCR_DYN_NORMAL (0x2UL << FPCR_DYN_SHIFT) /* towards nearest */ ++#define FPCR_DYN_PLUS (0x3UL << FPCR_DYN_SHIFT) /* towards +INF */ ++#define FPCR_DYN_MASK (0x3UL << FPCR_DYN_SHIFT) ++ ++#define FPCR_MASK 0xffff800000000000 ++ ++ ++/* IEEE traps are enabled depending on a control word (not to be confused ++ with fpcr!) which can be read using __ieee_get_fp_control() and written ++ using __ieee_set_fp_control(). The bits in these control word are ++ as follows (compatible with Linux and OSF/1). */ ++ ++/* Trap enable bits. Get copied (inverted) to bits 49,50,51,61,62,47 ++ of fpcr in the kernel. */ ++#define IEEE_TRAP_ENABLE_INV (1UL<<1) /* invalid op */ ++#define IEEE_TRAP_ENABLE_DZE (1UL<<2) /* division by zero */ ++#define IEEE_TRAP_ENABLE_OVF (1UL<<3) /* overflow */ ++#define IEEE_TRAP_ENABLE_UNF (1UL<<4) /* underflow */ ++#define IEEE_TRAP_ENABLE_INE (1UL<<5) /* inexact */ ++#if 0 /* Only Linux, not FreeBSD */ ++#define IEEE_TRAP_ENABLE_DNO (1UL<<6) /* denorm */ ++#endif ++#define IEEE_TRAP_ENABLE_MASK (IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE |\ ++ IEEE_TRAP_ENABLE_OVF | IEEE_TRAP_ENABLE_UNF |\ ++ IEEE_TRAP_ENABLE_INE/*| IEEE_TRAP_ENABLE_DNO*/) ++ ++#if 0 /* Only Linux, not FreeBSD */ ++ ++/* Denorm and Underflow flushing. */ ++/* Get copied to bits 48,60 of fpcr in the kernel. */ ++#define IEEE_MAP_DMZ (1UL<<12) /* Map denorm inputs to zero */ ++#define IEEE_MAP_UMZ (1UL<<13) /* Map underflowed outputs to zero */ ++ ++#define IEEE_MAP_MASK (IEEE_MAP_DMZ | IEEE_MAP_UMZ) ++ ++#endif ++ ++/* Status bits. Get copied to bits 52,53,54,55,56 of fpcr in the kernel. */ ++#define IEEE_STATUS_INV (1UL<<17) /* invalid op */ ++#define IEEE_STATUS_DZE (1UL<<18) /* division by zero */ ++#define IEEE_STATUS_OVF (1UL<<19) /* overflow */ ++#define IEEE_STATUS_UNF (1UL<<20) /* underflow */ ++#define IEEE_STATUS_INE (1UL<<21) /* inexact */ ++#if 0 /* Only Linux, not FreeBSD */ ++#define IEEE_STATUS_DNO (1UL<<22) /* denorm */ ++#endif ++ ++#define IEEE_STATUS_MASK (IEEE_STATUS_INV | IEEE_STATUS_DZE | \ ++ IEEE_STATUS_OVF | IEEE_STATUS_UNF | \ ++ IEEE_STATUS_INE /* | IEEE_STATUS_DNO */) ++ ++#define IEEE_SW_MASK (IEEE_TRAP_ENABLE_MASK | \ ++ IEEE_STATUS_MASK /* | IEEE_MAP_MASK */) ++ ++#if 0 /* Only Linux, not FreeBSD */ ++ ++#define IEEE_CURRENT_RM_SHIFT 32 ++#define IEEE_CURRENT_RM_MASK (3UL<, 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_futimes (int fd, const struct __kernel_timeval tvp[2]); ++ ++int ++__futimes (int fd, const struct timeval tvp[2]) ++{ ++ if (tvp != NULL) ++ { ++ struct __kernel_timeval ktv[2]; ++ ++ ktv[0].tv_sec = tvp[0].tv_sec; ++ ktv[0].tv_usec = tvp[0].tv_usec; ++ ktv[1].tv_sec = tvp[1].tv_sec; ++ ktv[1].tv_usec = tvp[1].tv_usec; ++ return __syscall_futimes (fd, ktv); ++ } ++ else ++ return __syscall_futimes (fd, NULL); ++} ++ ++weak_alias (__futimes, futimes) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getfsstat64.c +@@ -0,0 +1,2 @@ ++/* 'getfsstat64' is the same as 'getfsstat', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getitimer.c +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_getitimer (int which, struct __kernel_itimerval *value); ++ ++int ++__getitimer (enum __itimer_which which, struct itimerval *value) ++{ ++ struct __kernel_itimerval kvalue; ++ int retval; ++ ++ if (value == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_getitimer (which, &kvalue); ++ if (retval >= 0) ++ { ++ value->it_interval.tv_sec = kvalue.it_interval.tv_sec; ++ value->it_interval.tv_usec = kvalue.it_interval.tv_usec; ++ value->it_value.tv_sec = kvalue.it_value.tv_sec; ++ value->it_value.tv_usec = kvalue.it_value.tv_usec; ++ } ++ return retval; ++} ++ ++weak_alias (__getitimer, getitimer) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo.c +@@ -0,0 +1,8 @@ ++/* 'getmntinfo64' is the same as 'getmntinfo', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ ++ ++#define getmntinfo64 __no_getmntinfo64_decl ++#include ++#undef getmntinfo64 ++ ++weak_alias (__getmntinfo, getmntinfo64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getmntinfo64.c +@@ -0,0 +1,2 @@ ++/* 'getmntinfo64' is the same as 'getmntinfo', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/getrusage.c +@@ -0,0 +1,63 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_getrusage (int who, struct __kernel_rusage *usage); ++ ++int ++__getrusage (enum __rusage_who who, struct rusage *usage) ++{ ++ struct __kernel_rusage kusage; ++ int retval; ++ ++ if (usage == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_getrusage (who, &kusage); ++ if (retval >= 0) ++ { ++ usage->ru_utime.tv_sec = kusage.ru_utime.tv_sec; ++ usage->ru_utime.tv_usec = kusage.ru_utime.tv_usec; ++ usage->ru_stime.tv_sec = kusage.ru_stime.tv_sec; ++ usage->ru_stime.tv_usec = kusage.ru_stime.tv_usec; ++ usage->ru_maxrss = kusage.ru_maxrss; ++ usage->ru_ixrss = kusage.ru_ixrss; ++ usage->ru_idrss = kusage.ru_idrss; ++ usage->ru_isrss = kusage.ru_isrss; ++ usage->ru_minflt = kusage.ru_minflt; ++ usage->ru_majflt = kusage.ru_majflt; ++ usage->ru_nswap = kusage.ru_nswap; ++ usage->ru_inblock = kusage.ru_inblock; ++ usage->ru_oublock = kusage.ru_oublock; ++ usage->ru_msgsnd = kusage.ru_msgsnd; ++ usage->ru_msgrcv = kusage.ru_msgrcv; ++ usage->ru_nsignals = kusage.ru_nsignals; ++ usage->ru_nvcsw = kusage.ru_nvcsw; ++ usage->ru_nivcsw = kusage.ru_nivcsw; ++ } ++ return retval; ++} ++ ++weak_alias (__getrusage, getrusage) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/gettimeofday.c +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_gettimeofday (struct __kernel_timeval *tv, ++ struct timezone *tz); ++ ++#undef __gettimeofday ++ ++int ++__gettimeofday (struct timeval *tv, struct timezone *tz) ++{ ++ struct __kernel_timeval ktv; ++ int retval; ++ ++ if (tv == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_gettimeofday (&ktv, tz); ++ if (retval >= 0) ++ { ++ tv->tv_sec = ktv.tv_sec; ++ tv->tv_usec = ktv.tv_usec; ++ } ++ return retval; ++} ++ ++INTDEF(__gettimeofday) ++ ++weak_alias (__gettimeofday, gettimeofday) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_get_fp_control.c +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++unsigned long ++__ieee_get_fp_control (void) ++{ ++ /* The Alpha hardware requires this to be a system call. */ ++ unsigned long word; ++ ++ if (__sysarch (ALPHA_GET_FPMASK, &word) < 0) ++ abort (); ++ ++ return word; ++} ++ ++weak_alias (__ieee_get_fp_control, ieee_get_fp_control) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/ieee_set_fp_control.c +@@ -0,0 +1,33 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++void ++__ieee_set_fp_control (unsigned long trap_enable_mask) ++{ ++ /* The Alpha hardware requires this to be a system call. */ ++ unsigned long word = trap_enable_mask; ++ ++ if (__sysarch (ALPHA_SET_FPMASK, &word) < 0) ++ abort (); ++} ++ ++weak_alias (__ieee_set_fp_control, ieee_set_fp_control) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/lutimes.c +@@ -0,0 +1,44 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_lutimes (const char *file, ++ const struct __kernel_timeval tvp[2]); ++ ++int ++__lutimes (const char *file, const struct timeval tvp[2]) ++{ ++ if (tvp != NULL) ++ { ++ struct __kernel_timeval ktv[2]; ++ ++ ktv[0].tv_sec = tvp[0].tv_sec; ++ ktv[0].tv_usec = tvp[0].tv_usec; ++ ktv[1].tv_sec = tvp[1].tv_sec; ++ ktv[1].tv_usec = tvp[1].tv_usec; ++ return __syscall_lutimes (file, ktv); ++ } ++ else ++ return __syscall_lutimes (file, NULL); ++} ++ ++weak_alias (__lutimes, lutimes) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/machine/pal.h +@@ -0,0 +1,57 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Unprivileged PAL function codes. (The PAL codes which require ++ privileges are useful in the kernel only.) */ ++ ++/* Common PAL codes. */ ++#define PAL_bpt 128 ++#define PAL_bugchk 129 ++#define PAL_callsys 131 ++#define PAL_imb 134 ++#define PAL_rduniq 158 ++#define PAL_wruniq 159 ++#define PAL_gentrap 170 ++#define PAL_nphalt 190 ++ ++/* gentrap causes. */ ++#define GEN_INTOVF -1 /* integer overflow */ ++#define GEN_INTDIV -2 /* integer division by zero */ ++#define GEN_FLTOVF -3 /* fp overflow */ ++#define GEN_FLTDIV -4 /* fp division by zero */ ++#define GEN_FLTUND -5 /* fp underflow */ ++#define GEN_FLTINV -6 /* invalid fp operand */ ++#define GEN_FLTINE -7 /* inexact fp operand */ ++#define GEN_DECOVF -8 /* decimal overflow (for COBOL??) */ ++#define GEN_DECDIV -9 /* decimal division by zero */ ++#define GEN_DECINV -10 /* invalid decimal operand */ ++#define GEN_ROPRAND -11 /* reserved operand */ ++#define GEN_ASSERTERR -12 /* assertion error */ ++#define GEN_NULPTRERR -13 /* null pointer error */ ++#define GEN_STKOVF -14 /* stack overflow */ ++#define GEN_STRLENERR -15 /* string length error */ ++#define GEN_SUBSTRERR -16 /* substring error */ ++#define GEN_RANGERR -17 /* range error */ ++#define GEN_SUBRNG -18 ++#define GEN_SUBRNG1 -19 ++#define GEN_SUBRNG2 -20 ++#define GEN_SUBRNG3 -21 /* these report range errors for */ ++#define GEN_SUBRNG4 -22 /* subscripting (indexing) at levels 0..7 */ ++#define GEN_SUBRNG5 -23 ++#define GEN_SUBRNG6 -24 ++#define GEN_SUBRNG7 -25 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/msgctl.c +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_msgctl (int msqid, int cmd, struct __kernel_msqid_ds *buf); ++ ++int ++__msgctl (int msqid, int cmd, struct msqid_ds *buf) ++{ ++ struct __kernel_msqid_ds kmsqid_ds; ++ int retval; ++ ++ kmsqid_ds.msg_perm = msqid_ds->msg_perm; ++ kmsqid_ds.__msg_first = msqid_ds->__msg_first; ++ kmsqid_ds.__msg_last = msqid_ds->__msg_last; ++ kmsqid_ds.__msg_cbytes = msqid_ds->__msg_cbytes; ++ kmsqid_ds.msg_qnum = msqid_ds->msg_qnum; ++ kmsqid_ds.msg_qbytes = msqid_ds->msg_qbytes; ++ kmsqid_ds.msg_lspid = msqid_ds->msg_lspid; ++ kmsqid_ds.msg_lrpid = msqid_ds->msg_lrpid; ++ kmsqid_ds.msg_stime = msqid_ds->msg_stime; ++ kmsqid_ds.msg_rtime = msqid_ds->msg_rtime; ++ kmsqid_ds.msg_ctime = msqid_ds->msg_ctime; ++ ++ retval = __syscall_msgctl (msqid, cmd, &kmsqid_ds); ++ ++ msqid_ds->msg_perm = kmsqid_ds.msg_perm; ++ msqid_ds->__msg_first = kmsqid_ds.__msg_first; ++ msqid_ds->__msg_last = kmsqid_ds.__msg_last; ++ msqid_ds->__msg_cbytes = kmsqid_ds.__msg_cbytes; ++ msqid_ds->msg_qnum = kmsqid_ds.msg_qnum; ++ msqid_ds->msg_qbytes = kmsqid_ds.msg_qbytes; ++ msqid_ds->msg_lspid = kmsqid_ds.msg_lspid; ++ msqid_ds->msg_lrpid = kmsqid_ds.msg_lrpid; ++ msqid_ds->msg_stime = kmsqid_ds.msg_stime; ++ msqid_ds->msg_rtime = kmsqid_ds.msg_rtime; ++ msqid_ds->msg_ctime = kmsqid_ds.msg_ctime; ++ ++ return retval; ++} ++ ++weak_alias (__msgctl, msgctl) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/nanosleep.c +@@ -0,0 +1,54 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_nanosleep (const struct __kernel_timespec *requested_time, ++ struct __kernel_timespec *remaining); ++ ++int ++__libc_nanosleep (const struct timespec *requested_time, ++ struct timespec *remaining) ++{ ++ struct __kernel_timespec krequested_time; ++ int retval; ++ ++ krequested_time.tv_sec = requested_time->tv_sec; ++ krequested_time.tv_nsec = requested_time->tv_nsec; ++ if (remaining != NULL) ++ { ++ struct __kernel_timespec kremaining; ++ ++ retval = __syscall_nanosleep (&krequested_time, &kremaining); ++ if (retval >= 0 || errno == EINTR) ++ { ++ remaining->tv_sec = kremaining.tv_sec; ++ remaining->tv_nsec = kremaining.tv_nsec; ++ } ++ } ++ else ++ retval = __syscall_nanosleep (&krequested_time, NULL); ++ return retval; ++} ++ ++weak_alias (__libc_nanosleep, __nanosleep) ++weak_alias (__libc_nanosleep, nanosleep) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/poll.c +@@ -0,0 +1,46 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* nfds_t is defined as 'unsigned long int' in , but the poll ++ system call expects an 'unsigned int' as second argument. */ ++ ++extern int __syscall_poll (struct pollfd *fds, unsigned int nfds, int timeout); ++ ++int ++__poll (struct pollfd *fds, nfds_t nfds, int timeout) ++{ ++ unsigned int infds = nfds; ++ ++ if (infds == nfds) ++ return INLINE_SYSCALL (poll, 3, fds, infds, timeout); ++ else ++ { ++ /* NFDS doesn't fit into an unsigned int. FDS cannot point to such ++ a big chunk of valid memory. */ ++ __set_errno (EFAULT); ++ return -1; ++ } ++} ++libc_hidden_def (__poll) ++ ++weak_alias (__poll, poll) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/regdef.h +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _REGDEF_H ++#define _REGDEF_H ++ ++/* Common symbolic names for Alpha registers. ++ Names taken from binutils/opcodes/alpha-dis.c. ++ Register usage info taken from gcc-3.1/gcc/config/alpha/alpha.h. ++ NB: "saved" = "call-saved", "nonsaved" = "call-used". */ ++ ++#define v0 $0 /* nonsaved, first return value */ ++#define t0 $1 /* nonsaved, second return value, lexical closure reg */ ++#define t1 $2 /* nonsaved */ ++#define t2 $3 /* nonsaved */ ++#define t3 $4 /* nonsaved */ ++#define t4 $5 /* nonsaved */ ++#define t5 $6 /* nonsaved */ ++#define t6 $7 /* nonsaved */ ++#define t7 $8 /* nonsaved */ ++#define s0 $9 /* saved */ ++#define s1 $10 /* saved */ ++#define s2 $11 /* saved */ ++#define s3 $12 /* saved */ ++#define s4 $13 /* saved */ ++#define s5 $14 /* saved */ ++#define s6 $15 /* use only in leaf functions without frame pointer */ ++#define fp $15 /* frame pointer */ ++#define a0 $16 /* nonsaved, argument 1 */ ++#define a1 $17 /* nonsaved, argument 2 */ ++#define a2 $18 /* nonsaved, argument 3 */ ++#define a3 $19 /* nonsaved, argument 4 */ ++#define a4 $20 /* nonsaved, argument 5 */ ++#define a5 $21 /* nonsaved, argument 6 */ ++#define t8 $22 /* nonsaved */ ++#define t9 $23 /* nonsaved */ ++#define t10 $24 /* nonsaved */ ++#define t11 $25 /* nonsaved */ ++#define ra $26 /* return address */ ++#define t12 $27 /* current function's address */ ++#define pv $27 /* current function's address */ ++#define AT $28 /* nonsaved, assembler temporary */ ++#define gp $29 /* global pointer */ ++#define sp $30 /* stack pointer */ ++#define zero $31 /* reads as zero, writes go to /dev/null */ ++ ++#endif /* _REGDEF_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/rfork.S +@@ -0,0 +1,29 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++SYSCALL__ (rfork, 0) ++ /* In the parent process, a4 == 0, v0 == child pid. */ ++ /* In the child process, a4 == 1, v0 == parent pid. */ ++ cmovne a4, zero, v0 ++ ret ++ ++PSEUDO_END (__rfork) ++ ++weak_alias (__rfork, rfork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sched_rr_gi.c +@@ -0,0 +1,50 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_sched_rr_get_interval (pid_t pid, ++ struct __kernel_timespec *t); ++ ++int ++__sched_rr_get_interval (pid_t pid, struct timespec *t) ++{ ++ struct __kernel_timespec kt; ++ int retval; ++ ++ if (t == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ retval = __syscall_sched_rr_get_interval (pid, &kt); ++ if (retval >= 0) ++ { ++ t->tv_sec = kt.tv_sec; ++ t->tv_nsec = kt.tv_nsec; ++ } ++ return retval; ++} ++ ++weak_alias (__sched_rr_get_interval, sched_rr_get_interval) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/select.c +@@ -0,0 +1,53 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_select (int nfds, ++ fd_set *readfds, ++ fd_set *writefds, ++ fd_set *exceptfds, ++ struct __kernel_timeval *timeout); ++ ++int ++__select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, ++ struct timeval *timeout) ++{ ++ int retval; ++ ++ if (timeout != NULL) ++ { ++ struct __kernel_timeval ktimeout; ++ ++ ktimeout.tv_sec = timeout->tv_sec; ++ ktimeout.tv_usec = timeout->tv_usec; ++ retval = __syscall_select (nfds, readfds, writefds, exceptfds, &ktimeout); ++ timeout->tv_sec = ktimeout.tv_sec; ++ timeout->tv_usec = ktimeout.tv_usec; ++ } ++ else ++ retval = __syscall_select (nfds, readfds, writefds, exceptfds, NULL); ++ return retval; ++} ++libc_hidden_def (__select) ++ ++weak_alias (__select, select) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/semctl.c +@@ -0,0 +1,87 @@ ++/* Copyright (C) 1995,1997,1998,2000,2003,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include /* va_list */ ++#include /* NULL */ ++#include ++ ++/* union semun from FreeBSD */ ++/* ++ * semctl's arg parameter structure ++ */ ++union __kernel_semun ++{ ++ int val; /* value for SETVAL */ ++ struct __kernel_semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ ++ unsigned short *array; /* array for GETALL & SETALL */ ++}; ++ ++int ++semctl (int semid, int semnum, int cmd, ...) ++{ ++ int result; ++ va_list ap; ++ ++ union semun semun; ++ union semun semun_ptr; ++ ++ union __kernel_semun ksemun; ++ struct __kernel_semid_ds ksemid_ds; ++ ++ va_start (ap, cmd); ++ if (cmd == GETALL || cmd == SETVAL || cmd == SETALL) ++ { ++ semun = va_arg (ap, union semun); ++ semun_ptr = &semun; ++ } ++ else if (cmd == IPC_SET || cmd == IPC_STAT) ++ { ++ semun = va_arg (ap, union semun); ++ ++ ksemid_ds.sem_perm = semun.buf->sem_perm; ++ ksemid_ds.sem_base = semun.buf->sem_base; ++ ksemid_ds.sem_nsems = semun.buf->sem_nsems; ++ ksemid_ds.sem_otime = semun.buf->sem_otime; ++ ksemid_ds.sem_ctime = semun.buf->sem_ctime; ++ ++ ksemun.buf = &ksemid_ds ++ semun_ptr = (semun_ptr *) &ksemun; ++ } ++ else ++ { ++ semun_ptr = NULL; ++ } ++ va_end (ap); ++ ++ result = syscall (SYS_semctl, semid, semnum, cmd, semun_ptr); ++ ++ if (cmd == IPC_SET || cmd == IPC_STAT) ++ { ++ semun.buf->sem_perm = ksemid_ds.sem_perm; ++ semun.buf->sem_base = ksemid_ds.sem_base; ++ semun.buf->sem_nsems = ksemid_ds.sem_nsems; ++ semun.buf->sem_otime = ksemid_ds.sem_otime; ++ semun.buf->sem_ctime = ksemid_ds.sem_ctime; ++ } ++ ++ return result; ++} ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/setfpucw.c +@@ -0,0 +1,88 @@ ++/* Set FP exception mask and rounding mode. ++ Copyright (C) 1996, 1997, 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++extern unsigned long __ieee_get_fp_control (void); ++extern void __ieee_set_fp_control (unsigned long); ++ ++ ++static inline unsigned long ++rdfpcr (void) ++{ ++ unsigned long fpcr; ++ asm ("excb; mf_fpcr %0" : "=f"(fpcr)); ++ return fpcr; ++} ++ ++static inline void ++wrfpcr (unsigned long fpcr) ++{ ++ asm volatile ("mt_fpcr %0; excb" : : "f"(fpcr)); ++} ++ ++ ++void ++__setfpucw (fpu_control_t fpu_control) ++{ ++ if (!fpu_control) ++ fpu_control = _FPU_DEFAULT; ++ ++ /* Note that the fpu_control argument, as defined in , ++ consists of bits that are not directly related to the bits of the ++ fpcr and fp_control registers. In particular, the precision control ++ (_FPU_EXTENDED, _FPU_DOUBLE, _FPU_SINGLE) and the interrupt mask ++ _FPU_MASK_UM are without effect. */ ++ ++ /* First, set dynamic rounding mode: */ ++ { ++ unsigned long fpcr; ++ ++ fpcr = rdfpcr(); ++ fpcr &= ~FPCR_DYN_MASK; ++ switch (fpu_control & 0xc00) ++ { ++ case _FPU_RC_NEAREST: fpcr |= FPCR_DYN_NORMAL; break; ++ case _FPU_RC_DOWN: fpcr |= FPCR_DYN_MINUS; break; ++ case _FPU_RC_UP: fpcr |= FPCR_DYN_PLUS; break; ++ case _FPU_RC_ZERO: fpcr |= FPCR_DYN_CHOPPED; break; ++ } ++ wrfpcr(fpcr); ++ } ++ ++ /* Now tell kernel about traps that we like to hear about: */ ++ { ++ unsigned long old_fpcw, fpcw; ++ ++ old_fpcw = fpcw = __ieee_get_fp_control (); ++ fpcw &= ~IEEE_TRAP_ENABLE_MASK; ++ ++ if (!(fpu_control & _FPU_MASK_IM)) fpcw |= IEEE_TRAP_ENABLE_INV; ++ if (!(fpu_control & _FPU_MASK_DM)) fpcw |= IEEE_TRAP_ENABLE_UNF; ++ if (!(fpu_control & _FPU_MASK_ZM)) fpcw |= IEEE_TRAP_ENABLE_DZE; ++ if (!(fpu_control & _FPU_MASK_OM)) fpcw |= IEEE_TRAP_ENABLE_OVF; ++ if (!(fpu_control & _FPU_MASK_PM)) fpcw |= IEEE_TRAP_ENABLE_INE; ++ ++ if (fpcw != old_fpcw) ++ __ieee_set_fp_control (fpcw); ++ } ++ ++ __fpu_control = fpu_control; /* update global copy */ ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/setitimer.c +@@ -0,0 +1,63 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_setitimer (int which, ++ const struct __kernel_itimerval *new, ++ struct __kernel_itimerval *old); ++ ++int ++__setitimer (enum __itimer_which which, ++ const struct itimerval *new, struct itimerval *old) ++{ ++ int retval; ++ struct __kernel_itimerval knew; ++ ++ if (new == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ knew.it_interval.tv_sec = new->it_interval.tv_sec; ++ knew.it_interval.tv_usec = new->it_interval.tv_usec; ++ knew.it_value.tv_sec = new->it_value.tv_sec; ++ knew.it_value.tv_usec = new->it_value.tv_usec; ++ if (old != NULL) ++ { ++ struct __kernel_itimerval kold; ++ ++ retval = __syscall_setitimer (which, &knew, &kold); ++ if (retval >= 0) ++ { ++ old->it_interval.tv_sec = kold.it_interval.tv_sec; ++ old->it_interval.tv_usec = kold.it_interval.tv_usec; ++ old->it_value.tv_sec = kold.it_value.tv_sec; ++ old->it_value.tv_usec = kold.it_value.tv_usec; ++ } ++ } ++ else ++ retval = __syscall_setitimer (which, &knew, NULL); ++ return retval; ++} ++ ++weak_alias (__setitimer, setitimer) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/settimeofday.c +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_settimeofday (const struct __kernel_timeval *tv, ++ const struct timezone *tz); ++ ++int ++__settimeofday (const struct timeval *tv, const struct timezone *tz) ++{ ++ struct __kernel_timeval ktv; ++ ++ if (tv == NULL) ++ { ++ errno = EFAULT; ++ return -1; ++ } ++ ktv.tv_sec = tv->tv_sec; ++ ktv.tv_usec = tv->tv_usec; ++ return __syscall_settimeofday (&ktv, tz); ++} ++ ++weak_alias (__settimeofday, settimeofday) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/shmctl.c +@@ -0,0 +1,58 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_msgctl (int shmid, int cmd, struct __kernel_shmid_ds *buf); ++ ++int ++__msgctl (int shmid, int cmd, struct shmid_ds *buf) ++{ ++ struct __kernel_shmid_ds kshmid_ds; ++ int retval; ++ ++ kshmid_ds.shm_perm = shmid_ds->shm_perm; ++ kshmid_ds.shm_segsz = shmid_ds->shm_segsz; ++ kshmid_ds.shm_lpid = shmid_ds->shm_lpid; ++ kshmid_ds.shm_cpid = shmid_ds->shm_cpid; ++ kshmid_ds.shm_nattch = shmid_ds->shm_nattch; ++ kshmid_ds.shm_atime = shmid_ds->shm_atime; ++ kshmid_ds.shm_dtime = shmid_ds->shm_dtime; ++ kshmid_ds.shm_ctime = shmid_ds->shm_ctime; ++ kshmid_ds.__shm_internal = shmid_ds->__shm_internal; ++ ++ retval = __syscall_shmctl (shmid, cmd, &kshmid_ds); ++ ++ shmid_ds->shm_perm = kshmid_ds.shm_perm; ++ shmid_ds->shm_segsz = kshmid_ds.shm_segsz; ++ shmid_ds->shm_lpid = kshmid_ds.shm_lpid; ++ shmid_ds->shm_cpid = kshmid_ds.shm_cpid; ++ shmid_ds->shm_nattch = kshmid_ds.shm_nattch; ++ shmid_ds->shm_atime = kshmid_ds.shm_atime; ++ shmid_ds->shm_dtime = kshmid_ds.shm_dtime; ++ shmid_ds->shm_ctime = kshmid_ds.shm_ctime; ++ shmid_ds->__shm_internal = kshmid_ds.__shm_internal; ++ ++ return retval; ++} ++ ++weak_alias (__shmctl, shmctl) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sigcontextinfo.h +@@ -0,0 +1,25 @@ ++/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define SIGCONTEXT int _code, struct sigcontext * ++#define SIGCONTEXT_EXTRA_ARGS _code, ++#define GET_PC(ctx) ((void *) (ctx)->sc_pc) ++#define GET_FRAME(ctx) ((void *) (ctx)->sc_regs[15]) ++#define GET_STACK(ctx) ((void *) (ctx)->sc_regs[30]) ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/start_thread.S +@@ -0,0 +1,172 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++#include ++#define SIG_SETMASK 3 ++ ++ .text ++ENTRY (__start_thread) ++ /* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++ We need to pass 7 words of info to the child: stack, func, arg, ++ and the signal mask to restore. Since we have only 4 call-saved ++ registers available (%ebx, %esi, %edi, %ebp), we pass only the ++ stack pointer in a register, and the rest through the child's ++ stack. */ ++ lda sp,-56(sp) ++ stq ra,0(sp) ++ stq s0,8(sp) ++ stq s1,16(sp) ++ stq s2,24(sp) ++ stq s3,32(sp) ++ .prologue 1 ++ ++ /* Save arguments. */ ++ mov a0,s1 /* flags */ ++ mov a1,s0 /* stack */ ++ mov a2,s2 /* func */ ++ mov a3,s3 /* arg */ ++ ++ and a0,32,t0 /* flags & RFMEM */ ++ beq t0,$simple ++ ++ /* Block all signals. */ ++ lda t0,-1 ++ stq t0,40(sp) ++ stq t0,48(sp) ++ lda a0,SIG_SETMASK ++ lda a1,40(sp) ++ mov a1,a2 ++ lda v0,SYS_sigprocmask ++ call_pal PAL_callsys ++ bne a3,$error ++ ++ /* Copy all info to the child's stack. */ ++ lda s0,-32(s0) /* room for func, arg, sigset_t */ ++ andnot s0,7,s0 /* make it 8-bytes aligned */ ++ stq s2,8(s0) /* func */ ++ stq s3,0(s0) /* arg */ ++ ldq t0,40(sp) /* sigset_t word 0 */ ++ ldq t1,48(sp) /* sigset_t word 1 */ ++ stq t0,16(s0) ++ stq t1,24(s0) ++ ++ /* Perform the rfork system call. */ ++ mov s1,a0 /* flags */ ++ lda v0,SYS_rfork ++ call_pal PAL_callsys ++ bne a3,$error ++ ++ /* a4 is now 0 for the parent and 1 for the child. */ ++ bne a4,$child ++ ++ /* Save the child pid, currently in v0. */ ++ mov v0,s1 ++ ++ /* Restore the previous signal mask. */ ++ lda a0,SIG_SETMASK ++ lda a1,40(sp) ++ mov zero,a2 ++ lda v0,SYS_sigprocmask ++ call_pal PAL_callsys ++ ++ /* Return the child pid, currently in s1. */ ++ mov s1,v0 ++$retv0: ldq ra,0(sp) ++ ldq s0,8(sp) ++ ldq s1,16(sp) ++ ldq s2,24(sp) ++ ldq s3,32(sp) ++ lda sp,56(sp) ++ ret zero,(ra),1 ++ ++$child: /* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ mov s0,sp ++ ++ /* Restore the previous signal mask. */ ++ lda a0,SIG_SETMASK ++ lda a1,16(sp) ++ mov zero,a2 ++ lda v0,SYS_sigprocmask ++ call_pal PAL_callsys ++ ++$child1: ++ /* Call func (arg). */ ++ ldq a0,0(sp) ++ ldq pv,8(sp) ++ jsr ra,(pv),0 ++ ++ /* Tail-call _exit. */ ++ br gp,$here ++$here: ldgp gp,0(gp) ++ mov v0,a0 ++ jmp zero,_exit ++ ++$simple:/* Simple case without signal mask handling. */ ++ ++ /* Copy all info to the child's stack. */ ++ lda s0,-16(s0) /* room for func, arg */ ++ andnot s0,7,s0 /* make it 8-bytes aligned */ ++ stq s2,8(s0) /* func */ ++ stq s3,0(s0) /* arg */ ++ ++ /* Perform the rfork system call. */ ++ mov s1,a0 /* flags */ ++ lda v0,SYS_rfork ++ call_pal PAL_callsys ++ bne a3,$error ++ ++ /* a4 is now 0 for the parent and 1 for the child. */ ++ /* If in the parent, return the child pid, currently in v0. */ ++ beq a4,$retv0 ++ ++$simple_child:/* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ mov s0,sp ++ ++ br zero,$child1 ++ ++$error: ldq ra,0(sp) ++ ldq s0,8(sp) ++ ldq s1,16(sp) ++ ldq s2,24(sp) ++ ldq s3,32(sp) ++ lda sp,56(sp) ++#if 0 /* Not needed: The PSEUDO_END expansion starts with this label. */ ++ br zero,1996f ++#endif ++ ++PSEUDO_END (__start_thread) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/statfs64.c +@@ -0,0 +1,2 @@ ++/* 'statfs64' is the same as 'statfs', because ++ __fsblkcnt64_t == __fsblkcnt_t and __fsfilcnt64_t == __fsfilcnt_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sysarch.h +@@ -0,0 +1,53 @@ ++/* Parameters for the architecture specific system call. alpha version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSARCH_H ++#define _SYSARCH_H 1 ++ ++#include ++ ++/* Function that can be used as first argument to 'sysarch'. */ ++enum ++ { ++ ALPHA_SETHAE = 0, ++#define ALPHA_SETHAE ALPHA_SETHAE ++ /* Arg is 'unsigned long *'. Returns the current pcb_fp_control. */ ++ ALPHA_GET_FPMASK = 1, ++#define ALPHA_GET_FPMASK ALPHA_GET_FPMASK ++ /* Arg is 'unsigned long *'. Sets the pcb_fp_control and returns its ++ old value in the same memory location. */ ++ ALPHA_SET_FPMASK = 2, ++#define ALPHA_SET_FPMASK ALPHA_SET_FPMASK ++ ALPHA_GET_UAC = 3, ++#define ALPHA_GET_UAC ALPHA_GET_UAC ++ ALPHA_SET_UAC = 4 ++#define ALPHA_SET_UAC ALPHA_SET_UAC ++ }; ++ ++__BEGIN_DECLS ++ ++extern int sysarch (int __cmd, void *__arg); ++ ++#ifdef _LIBC ++extern int __sysarch (int __cmd, void *__arg); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYSARCH_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/syscall.S +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/syscalls.list +@@ -0,0 +1,21 @@ ++# File name Caller Syscall name # args Strong name Weak names ++ ++fhstatfs - fhstatfs i:pp __fhstatfs fhstatfs fhstatfs64 ++fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64 ++getfsstat - getfsstat i:pii __getfsstat getfsstat __getfsstat64 getfsstat64 ++sys_poll - poll i:pii __syscall_poll ++statfs - statfs i:sp __statfs statfs statfs64 ++sys_adjtime - adjtime i:pp __syscall_adjtime ++sys_futimes - futimes i:ip __syscall_futimes ++sys_getitimer - getitimer i:ip __syscall_getitimer ++sys_getrusage - getrusage i:ip __syscall_getrusage ++sys_gettimeofday - gettimeofday i:PP __syscall_gettimeofday ++sys_lutimes - lutimes i:sp __syscall_lutimes ++sys_msgctl - msgctl i:iip __syscall_msgctl ++sys_nanosleep - nanosleep i:pp __syscall_nanosleep ++sys_sched_rr_gi - sched_rr_get_interval i:ip __syscall_sched_rr_get_interval ++sys_shmctl - shmctl i:iip __syscall_shmctl ++sys_select - select i:iPPPP __syscall_select ++sys_setitimer - setitimer i:ipp __syscall_setitimer ++sys_settimeofday - settimeofday i:PP __syscall_settimeofday ++sys_utimes - utimes i:sp __syscall_utimes +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/sysdep.h +@@ -0,0 +1,34 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_ALPHA_SYSDEP_H ++#define _FREEBSD_ALPHA_SYSDEP_H 1 ++ ++#ifdef __ASSEMBLER__ ++#include /* get PAL_callsys */ ++#else ++#include ++#endif ++ ++#include ++ ++/* FIXME: Is this necessary? */ ++#undef INLINE_SYSCALL ++#define INLINE_SYSCALL(name, nr, args...) __syscall_##name(args) ++ ++#endif /* freebsd/alpha/sysdep.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/utimes.c +@@ -0,0 +1,44 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_utimes (const char *file, ++ const struct __kernel_timeval tvp[2]); ++ ++int ++__utimes (const char *file, const struct timeval tvp[2]) ++{ ++ if (tvp != NULL) ++ { ++ struct __kernel_timeval ktv[2]; ++ ++ ktv[0].tv_sec = tvp[0].tv_sec; ++ ktv[0].tv_usec = tvp[0].tv_usec; ++ ktv[1].tv_sec = tvp[1].tv_sec; ++ ktv[1].tv_usec = tvp[1].tv_usec; ++ return __syscall_utimes (file, ktv); ++ } ++ else ++ return __syscall_utimes (file, NULL); ++} ++ ++weak_alias (__utimes, utimes) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/alpha/vfork.S +@@ -0,0 +1,29 @@ ++/* Copyright (C) 1993, 1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++SYSCALL__ (vfork, 0) ++ /* In the parent process, a4 == 0, v0 == child pid. */ ++ /* In the child process, a4 == 1, v0 == parent pid. */ ++ cmovne a4, zero, v0 ++ ret ++ ++PSEUDO_END (__vfork) ++ ++weak_alias (__vfork, vfork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bind.c +@@ -0,0 +1,60 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* According to POSIX.1-2004 the len argument specifies the length of ++ the sockaddr structure pointed to by the addrarg argument. However ++ the FreeBSD kernel waits the actual length of the address stored ++ there. The code below emulate this behaviour. */ ++ ++extern int __libc_sa_len (sa_family_t __af); ++extern int __libc_sa_len_internal (sa_family_t __af); ++ ++extern int __syscall_bind (int fd, __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen) __THROW; ++libc_hidden_proto (__syscall_bind) ++ ++/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). ++ For connectionless socket types, just set the default address to send to ++ and the only address from which to accept transmissions. ++ Return 0 on success, -1 for errors. */ ++ ++int ++__bind (int fd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen) ++{ ++ socklen_t new_addrlen; ++ ++#ifndef NOT_IN_libc ++ new_addrlen = INTUSE(__libc_sa_len) ((addr.__sockaddr__)->sa_family); ++#else ++ new_addrlen = __libc_sa_len ((addr.__sockaddr__)->sa_family); ++#endif ++ ++ /* Only allow a smaller size, otherwise it could lead to ++ stack corruption */ ++ if (new_addrlen < addrlen) ++ addrlen = new_addrlen; ++ ++ /* We pass 3 arguments. */ ++ return INLINE_SYSCALL (bind, 3, fd, addr.__sockaddr__, addrlen); ++} ++ ++weak_alias (__bind, bind) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/dirent.h +@@ -0,0 +1,52 @@ ++/* Directory entry structure `struct dirent'. FreeBSD version. ++ Copyright (C) 1996-1998,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _DIRENT_H ++# error "Never use directly; include instead." ++#endif ++ ++struct dirent ++ { ++ unsigned int d_ino; /* File serial number. */ ++ unsigned short int d_reclen; /* Length of the whole `struct dirent'. */ ++ unsigned char d_type; /* File type, possibly unknown. */ ++ unsigned char d_namlen; /* Length of the file name. */ ++ ++ /* Only this member is in the POSIX standard. */ ++ char d_name[256]; /* File name (actually longer). */ ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct dirent64 ++ { ++ unsigned int d_ino; /* File serial number. */ ++ unsigned short int d_reclen; /* Length of the whole `struct dirent'. */ ++ unsigned char d_type; /* File type, possibly unknown. */ ++ unsigned char d_namlen; /* Length of the file name. */ ++ ++ /* Only this member is in the POSIX standard. */ ++ char d_name[256]; /* File name (actually longer). */ ++ }; ++#endif ++ ++#define d_fileno d_ino /* Backwards compatibility. */ ++ ++#define _DIRENT_HAVE_D_RECLEN 1 ++#define _DIRENT_HAVE_D_NAMLEN 1 ++#define _DIRENT_HAVE_D_TYPE 1 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/elf.h +@@ -0,0 +1,37 @@ ++/* This file defines standard ELF types, structures, and macros. ++ Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_ELF_H ++#define _BITS_ELF_H ++ ++__BEGIN_DECLS ++ ++#define AT_EXECPATH 15 /* Path to the executable. */ ++#define AT_CANARY 16 /* Canary for SSP. */ ++#define AT_CANARYLEN 17 /* Length of the canary. */ ++#define AT_OSRELDATE 18 /* OSRELDATE. */ ++#define AT_NCPUS 19 /* Number of CPUs. */ ++#define AT_PAGESIZES 20 /* Pagesizes. */ ++#define AT_PAGESIZESLEN 21 /* Number of pagesizes. */ ++#define AT_STACKPROT 23 /* Initial stack protection. */ ++ ++__END_DECLS ++ ++#endif /* elf.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/errno.h +@@ -0,0 +1,183 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * (c) UNIX System Laboratories, Inc. ++ * All or some portions of this file are derived from material licensed ++ * to the University of California by American Telephone and Telegraph ++ * Co. or Unix System Laboratories, Inc. and are reproduced herein with ++ * the permission of UNIX System Laboratories, Inc. ++ * ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)errno.h 8.5 (Berkeley) 1/21/94 ++ * based on $FreeBSD: src/sys/sys/errno.h,v 1.28 2005/04/02 12:33:28 das Exp $ ++ */ ++ ++#ifdef _ERRNO_H ++ ++# undef EDOM ++# undef EILSEQ ++# undef ERANGE ++ ++#define EPERM 1 /* Operation not permitted */ ++#define ENOENT 2 /* No such file or directory */ ++#define ESRCH 3 /* No such process */ ++#define EINTR 4 /* Interrupted system call */ ++#define EIO 5 /* Input/output error */ ++#define ENXIO 6 /* Device not configured */ ++#define E2BIG 7 /* Argument list too long */ ++#define ENOEXEC 8 /* Exec format error */ ++#define EBADF 9 /* Bad file descriptor */ ++#define ECHILD 10 /* No child processes */ ++#define EDEADLK 11 /* Resource deadlock avoided */ ++ /* 11 was EAGAIN */ ++#define ENOMEM 12 /* Cannot allocate memory */ ++#define EACCES 13 /* Permission denied */ ++#define EFAULT 14 /* Bad address */ ++#define ENOTBLK 15 /* Block device required */ ++#define EBUSY 16 /* Device busy */ ++#define EEXIST 17 /* File exists */ ++#define EXDEV 18 /* Cross-device link */ ++#define ENODEV 19 /* Operation not supported by device */ ++#define ENOTDIR 20 /* Not a directory */ ++#define EISDIR 21 /* Is a directory */ ++#define EINVAL 22 /* Invalid argument */ ++#define ENFILE 23 /* Too many open files in system */ ++#define EMFILE 24 /* Too many open files */ ++#define ENOTTY 25 /* Inappropriate ioctl for device */ ++#define ETXTBSY 26 /* Text file busy */ ++#define EFBIG 27 /* File too large */ ++#define ENOSPC 28 /* No space left on device */ ++#define ESPIPE 29 /* Illegal seek */ ++#define EROFS 30 /* Read-only filesystem */ ++#define EMLINK 31 /* Too many links */ ++#define EPIPE 32 /* Broken pipe */ ++ ++/* math software */ ++#define EDOM 33 /* Numerical argument out of domain */ ++#define ERANGE 34 /* Result too large */ ++ ++/* non-blocking and interrupt i/o */ ++#define EAGAIN 35 /* Resource temporarily unavailable */ ++#define EWOULDBLOCK EAGAIN /* Operation would block */ ++#define EINPROGRESS 36 /* Operation now in progress */ ++#define EALREADY 37 /* Operation already in progress */ ++ ++/* ipc/network software -- argument errors */ ++#define ENOTSOCK 38 /* Socket operation on non-socket */ ++#define EDESTADDRREQ 39 /* Destination address required */ ++#define EMSGSIZE 40 /* Message too long */ ++#define EPROTOTYPE 41 /* Protocol wrong type for socket */ ++#define ENOPROTOOPT 42 /* Protocol not available */ ++#define EPROTONOSUPPORT 43 /* Protocol not supported */ ++#define ESOCKTNOSUPPORT 44 /* Socket type not supported */ ++#define EOPNOTSUPP 45 /* Operation not supported */ ++#define ENOTSUP EOPNOTSUPP /* Operation not supported */ ++#define EPFNOSUPPORT 46 /* Protocol family not supported */ ++#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */ ++#define EADDRINUSE 48 /* Address already in use */ ++#define EADDRNOTAVAIL 49 /* Can't assign requested address */ ++ ++/* ipc/network software -- operational errors */ ++#define ENETDOWN 50 /* Network is down */ ++#define ENETUNREACH 51 /* Network is unreachable */ ++#define ENETRESET 52 /* Network dropped connection on reset */ ++#define ECONNABORTED 53 /* Software caused connection abort */ ++#define ECONNRESET 54 /* Connection reset by peer */ ++#define ENOBUFS 55 /* No buffer space available */ ++#define EISCONN 56 /* Socket is already connected */ ++#define ENOTCONN 57 /* Socket is not connected */ ++#define ESHUTDOWN 58 /* Can't send after socket shutdown */ ++#define ETOOMANYREFS 59 /* Too many references: can't splice */ ++#define ETIMEDOUT 60 /* Operation timed out */ ++#define ECONNREFUSED 61 /* Connection refused */ ++ ++#define ELOOP 62 /* Too many levels of symbolic links */ ++#define ENAMETOOLONG 63 /* File name too long */ ++ ++/* should be rearranged */ ++#define EHOSTDOWN 64 /* Host is down */ ++#define EHOSTUNREACH 65 /* No route to host */ ++#define ENOTEMPTY 66 /* Directory not empty */ ++ ++/* quotas & mush */ ++#define EPROCLIM 67 /* Too many processes */ ++#define EUSERS 68 /* Too many users */ ++#define EDQUOT 69 /* Disc quota exceeded */ ++ ++/* Network File System */ ++#define ESTALE 70 /* Stale NFS file handle */ ++#define EREMOTE 71 /* Too many levels of remote in path */ ++#define EBADRPC 72 /* RPC struct is bad */ ++#define ERPCMISMATCH 73 /* RPC version wrong */ ++#define EPROGUNAVAIL 74 /* RPC prog. not avail */ ++#define EPROGMISMATCH 75 /* Program version wrong */ ++#define EPROCUNAVAIL 76 /* Bad procedure for program */ ++ ++#define ENOLCK 77 /* No locks available */ ++#define ENOSYS 78 /* Function not implemented */ ++ ++#define EFTYPE 79 /* Inappropriate file type or format */ ++#define EAUTH 80 /* Authentication error */ ++#define ENEEDAUTH 81 /* Need authenticator */ ++#define EIDRM 82 /* Identifier removed */ ++#define ENOMSG 83 /* No message of desired type */ ++#define EOVERFLOW 84 /* Value too large to be stored in data type */ ++#define ECANCELED 85 /* Operation canceled */ ++#define EILSEQ 86 /* Illegal byte sequence */ ++#define ENOATTR 87 /* Attribute not found */ ++ ++#define EDOOFUS 88 /* Programming error */ ++ ++#define EBADMSG 89 /* Bad message */ ++#define EMULTIHOP 90 /* Multihop attempted */ ++#define ENOLINK 91 /* Link has been severed */ ++#define EPROTO 92 /* Protocol error */ ++#define ENOTCAPABLE 93 /* Capabilities insufficient */ ++ ++#define ELAST 93 /* Must be equal largest errno */ ++ ++# ifndef __ASSEMBLER__ ++/* Function to get address of global `errno' variable. */ ++extern int *__errno_location (void) __THROW __attribute__ ((__const__)); ++ ++# if !defined _LIBC || defined _LIBC_REENTRANT ++/* When using threads, errno is a per-thread value. */ ++# define errno (*__errno_location ()) ++# endif ++# endif /* !__ASSEMBLER__ */ ++#endif /* _ERRNO_H */ ++ ++#if !defined _ERRNO_H && defined __need_Emath ++/* This is ugly but the kernel header is not clean enough. We must ++ define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is ++ defined. */ ++ ++#define EDOM 33 /* Numerical argument out of domain */ ++#define ERANGE 34 /* Result too large */ ++#define EILSEQ 86 /* Illegal byte sequence */ ++ ++#endif /* !_ERRNO_H && __need_Emath */ ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/fcntl.h +@@ -0,0 +1,180 @@ ++/* O_*, F_*, FD_* bit values for FreeBSD. ++ Copyright (C) 1991-1992, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FCNTL_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++#include ++#ifdef __USE_GNU ++# include ++#endif ++ ++ ++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files ++ located on an ext2 file system */ ++#define O_ACCMODE 0003 ++#define O_RDONLY 00 ++#define O_WRONLY 01 ++#define O_RDWR 02 ++#define O_CREAT 01000 /* not fcntl */ ++#define O_EXCL 04000 /* not fcntl */ ++#define O_NOCTTY 0100000 /* not fcntl */ ++#define O_TRUNC 02000 /* not fcntl */ ++#define O_APPEND 010 ++#define O_NONBLOCK 04 ++#define O_NDELAY O_NONBLOCK ++#define O_SYNC 0200 ++#define O_FSYNC O_SYNC ++#define O_ASYNC 0100 ++ ++#ifdef __USE_GNU ++# define O_DIRECT 0200000 /* Direct disk access. */ ++enum { O_DIRECTORY = 0 }; /* Must be a directory. */ ++enum { O_NOATIME = 0}; /* Do not set atime. */ ++# define O_NOFOLLOW 0400 /* Do not follow links. */ ++#endif ++ ++#ifdef __USE_BSD ++#define O_SHLOCK 020 /* Open with shared file lock. */ ++#define O_EXLOCK 040 /* Open with shared exclusive lock. */ ++#endif ++ ++/* For now FreeBSD has synchronisity options for data and read operations. ++ We define the symbols here but let them do the same as O_SYNC since ++ this is a superset. */ ++#if defined __USE_POSIX199309 || defined __USE_UNIX98 ++# define O_DSYNC O_SYNC /* Synchronize data. */ ++# define O_RSYNC O_SYNC /* Synchronize read operations. */ ++#endif ++ ++/* Since 'off_t' is 64-bit, O_LARGEFILE is a no-op. */ ++#define O_LARGEFILE 0 ++ ++#ifdef __USE_BSD ++/* Bits in the file status flags returned by F_GETFL. ++ These are all the O_* flags, plus FREAD and FWRITE, which are ++ independent bits set by which of O_RDONLY, O_WRONLY, and O_RDWR, was ++ given to `open'. */ ++#define FREAD 1 ++#define FWRITE 2 ++#endif ++ ++#ifdef __USE_ATFILE ++# define AT_FDCWD -100 /* Special value used to indicate ++ the *at functions should use the ++ current working directory. */ ++# define AT_EACCESS 0x100 /* Test access permitted for ++ effective IDs, not real IDs. */ ++# define AT_SYMLINK_NOFOLLOW 0x200 /* Do not follow symbolic links. */ ++# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ ++# define AT_REMOVEDIR 0x800 /* Remove directory instead of ++ unlinking file. */ ++#endif ++ ++/* ++ * We are out of bits in f_flag (which is a short). However, ++ * the flag bits not set in FMASK are only meaningful in the ++ * initial open syscall. Those bits can thus be given a ++ * different meaning for fcntl(2). ++ */ ++#ifdef __USE_BSD ++/* ++ * Set by shm_open(3) to get automatic MAP_ASYNC behavior ++ * for POSIX shared memory objects (which are otherwise ++ * implemented as plain files). ++ */ ++#define FPOSIXSHM O_NOFOLLOW ++#endif ++ ++/* Values for the second argument to `fcntl'. */ ++#define F_DUPFD 0 /* Duplicate file descriptor. */ ++#define F_GETFD 1 /* Get file descriptor flags. */ ++#define F_SETFD 2 /* Set file descriptor flags. */ ++#define F_GETFL 3 /* Get file status flags. */ ++#define F_SETFL 4 /* Set file status flags. */ ++#define F_GETLK 7 /* Get record locking info. */ ++#define F_SETLK 8 /* Set record locking info (non-blocking). */ ++#define F_SETLKW 9 /* Set record locking info (blocking). */ ++/* Not necessary, we always have 64-bit offsets. */ ++#define F_GETLK64 7 /* Get record locking info. */ ++#define F_SETLK64 8 /* Set record locking info (non-blocking). */ ++#define F_SETLKW64 9 /* Set record locking info (blocking). */ ++ ++#if defined __USE_BSD || defined __USE_UNIX98 ++# define F_SETOWN 5 /* Get owner of socket (receiver of SIGIO). */ ++# define F_GETOWN 6 /* Set owner of socket (receiver of SIGIO). */ ++#endif ++ ++/* For F_[GET|SET]FD. */ ++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */ ++ ++/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ ++#define F_RDLCK 1 /* Read lock. */ ++#define F_WRLCK 3 /* Write lock. */ ++#define F_UNLCK 2 /* Remove lock. */ ++ ++#ifdef __USE_BSD ++/* Operations for bsd flock(), also used by the kernel implementation. */ ++# define LOCK_SH 1 /* shared lock */ ++# define LOCK_EX 2 /* exclusive lock */ ++# define LOCK_NB 4 /* or'd with one of the above to prevent ++ blocking */ ++# define LOCK_UN 8 /* remove lock */ ++#endif ++ ++struct flock ++ { ++ __off_t l_start; /* Offset where the lock begins. */ ++ __off_t l_len; /* Size of the locked area; zero means until EOF. */ ++ __pid_t l_pid; /* Process holding the lock. */ ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++ int __l_sysid; /* remote system id or zero for local */ ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct flock64 ++ { ++ __off64_t l_start; /* Offset where the lock begins. */ ++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ ++ __pid_t l_pid; /* Process holding the lock. */ ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++ int __l_sysid; /* remote system id or zero for local */ ++ }; ++#endif ++ ++/* Define some more compatibility macros to be backward compatible with ++ BSD systems which did not managed to hide these kernel macros. */ ++#ifdef __USE_BSD ++# define FAPPEND O_APPEND ++# define FFSYNC O_FSYNC ++# define FASYNC O_ASYNC ++# define FNONBLOCK O_NONBLOCK ++# define FNDELAY O_NDELAY ++ ++#define FCREAT O_CREAT ++#define FEXCL O_EXCL ++#define FTRUNC O_TRUNC ++#define FNOCTTY O_NOCTTY ++#define FSYNC O_SYNC ++#endif /* Use BSD. */ ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/in.h +@@ -0,0 +1,308 @@ ++/* Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* FreeBSD version. */ ++ ++#ifndef _NETINET_IN_H ++# error "Never use directly; include instead." ++#endif ++ ++ ++/* Link numbers. */ ++#define IMPLINK_IP 155 ++#define IMPLINK_LOWEXPER 156 ++#define IMPLINK_HIGHEXPER 158 ++ ++#define IPPROTO_DIVERT 258 /* divert pseudo-protocol */ ++ ++/* To select the IP level. */ ++#define SOL_IP 0 ++ ++/* ++ * Options for use with [gs]etsockopt at the IP level. ++ * First word of comment is data type; bool is stored in int. ++ */ ++#define IP_OPTIONS 1 /* buf/ip_opts; set/get IP options */ ++#define IP_HDRINCL 2 /* int; header is included with data */ ++#define IP_TOS 3 /* int; IP type of service and preced. */ ++#define IP_TTL 4 /* int; IP time to live */ ++#define IP_RECVOPTS 5 /* bool; receive all IP opts w/dgram */ ++#define IP_RECVRETOPTS 6 /* bool; receive IP opts for response */ ++#define IP_RECVDSTADDR 7 /* bool; receive IP dst addr w/dgram */ ++#define IP_SENDSRCADDR IP_RECVDSTADDR /* cmsg_type to set src addr */ ++#define IP_RETOPTS 8 /* ip_opts; set/get IP options */ ++#define IP_MULTICAST_IF 9 /* struct in_addr *or* struct ip_mreqn; ++ * set/get IP multicast i/f */ ++#define IP_MULTICAST_TTL 10 /* u_char; set/get IP multicast ttl */ ++#define IP_MULTICAST_LOOP 11 /* u_char; set/get IP multicast loopback */ ++#define IP_ADD_MEMBERSHIP 12 /* ip_mreq; add an IP group membership */ ++#define IP_DROP_MEMBERSHIP 13 /* ip_mreq; drop an IP group membership */ ++#define IP_MULTICAST_VIF 14 /* set/get IP mcast virt. iface */ ++#define IP_RSVP_ON 15 /* enable RSVP in kernel */ ++#define IP_RSVP_OFF 16 /* disable RSVP in kernel */ ++#define IP_RSVP_VIF_ON 17 /* set RSVP per-vif socket */ ++#define IP_RSVP_VIF_OFF 18 /* unset RSVP per-vif socket */ ++#define IP_PORTRANGE 19 /* int; range to choose for unspec port */ ++#define IP_RECVIF 20 /* bool; receive reception if w/dgram */ ++/* for IPSEC */ ++#define IP_IPSEC_POLICY 21 /* int; set/get security policy */ ++#define IP_FAITH 22 /* bool; accept FAITH'ed connections */ ++ ++#define IP_ONESBCAST 23 /* bool: send all-ones broadcast */ ++#define IP_NONLOCALOK 24 /* bool: allow bind to spoof non-local addresses; ++ requires kernel compile option IP_NONLOCALBIND */ ++ ++#define IP_FW_TABLE_ADD 40 /* add entry */ ++#define IP_FW_TABLE_DEL 41 /* delete entry */ ++#define IP_FW_TABLE_FLUSH 42 /* flush table */ ++#define IP_FW_TABLE_GETSIZE 43 /* get table size */ ++#define IP_FW_TABLE_LIST 44 /* list table contents */ ++ ++#define IP_FW_ADD 50 /* add a firewall rule to chain */ ++#define IP_FW_DEL 51 /* delete a firewall rule from chain */ ++#define IP_FW_FLUSH 52 /* flush firewall rule chain */ ++#define IP_FW_ZERO 53 /* clear single/all firewall counter(s) */ ++#define IP_FW_GET 54 /* get entire firewall rule chain */ ++#define IP_FW_RESETLOG 55 /* reset logging counters */ ++ ++#define IP_FW_NAT_CFG 56 /* add/config a nat rule */ ++#define IP_FW_NAT_DEL 57 /* delete a nat rule */ ++#define IP_FW_NAT_GET_CONFIG 58 /* get configuration of a nat rule */ ++#define IP_FW_NAT_GET_LOG 59 /* get log of a nat rule */ ++ ++#define IP_DUMMYNET_CONFIGURE 60 /* add/configure a dummynet pipe */ ++#define IP_DUMMYNET_DEL 61 /* delete a dummynet pipe from chain */ ++#define IP_DUMMYNET_FLUSH 62 /* flush dummynet */ ++#define IP_DUMMYNET_GET 64 /* get entire dummynet pipes */ ++ ++#define IP_RECVTTL 65 /* bool; receive IP TTL w/dgram */ ++#define IP_MINTTL 66 /* minimum TTL for packet or drop */ ++#define IP_DONTFRAG 67 /* don't fragment packet */ ++ ++/* IPv4 Source Filter Multicast API [RFC3678] */ ++#define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */ ++#define IP_DROP_SOURCE_MEMBERSHIP 71 /* drop a single source */ ++#define IP_BLOCK_SOURCE 72 /* block a source */ ++#define IP_UNBLOCK_SOURCE 73 /* unblock a source */ ++ ++/* The following option is private; do not use it from user applications. */ ++#define IP_MSFILTER 74 /* set/get filter list */ ++ ++/* Protocol Independent Multicast API [RFC3678] */ ++#define MCAST_JOIN_GROUP 80 /* join an any-source group */ ++#define MCAST_LEAVE_GROUP 81 /* leave all sources for group */ ++#define MCAST_JOIN_SOURCE_GROUP 82 /* join a source-specific group */ ++#define MCAST_LEAVE_SOURCE_GROUP 83 /* leave a single source */ ++#define MCAST_BLOCK_SOURCE 84 /* block a source */ ++#define MCAST_UNBLOCK_SOURCE 85 /* unblock a source */ ++ ++/* ++ * Defaults and limits for options ++ */ ++#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */ ++#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */ ++ ++/* ++ * The imo_membership vector for each socket is now dynamically allocated at ++ * run-time, bounded by USHRT_MAX, and is reallocated when needed, sized ++ * according to a power-of-two increment. ++ */ ++#define IP_MIN_MEMBERSHIPS 31 ++#define IP_MAX_MEMBERSHIPS 4095 ++#define IP_MAX_SOURCE_FILTER 1024 /* # of filters per socket, per group */ ++ ++/* ++ * Filter modes; also used to represent per-socket filter mode internally. ++ */ ++ ++#define MCAST_UNDEFINED 0 /* fmode: not yet defined */ ++#define MCAST_INCLUDE 1 /* fmode: include these source(s) */ ++#define MCAST_EXCLUDE 2 /* fmode: exclude these source(s) */ ++ ++/* ++ * Argument for IP_PORTRANGE: ++ * - which range to search when port is unspecified at bind() or connect() ++ */ ++#define IP_PORTRANGE_DEFAULT 0 /* default range */ ++#define IP_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */ ++#define IP_PORTRANGE_LOW 2 /* "low" - vouchsafe security */ ++ ++/* ++ * Names for IP sysctl objects ++ */ ++#define IPCTL_FORWARDING 1 /* act as router */ ++#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */ ++#define IPCTL_DEFTTL 3 /* default TTL */ ++#ifdef notyet ++#define IPCTL_DEFMTU 4 /* default MTU */ ++#endif ++#define IPCTL_RTEXPIRE 5 /* cloned route expiration time */ ++#define IPCTL_RTMINEXPIRE 6 /* min value for expiration time */ ++#define IPCTL_RTMAXCACHE 7 /* trigger level for dynamic expire */ ++#define IPCTL_SOURCEROUTE 8 /* may perform source routes */ ++#define IPCTL_DIRECTEDBROADCAST 9 /* may re-broadcast received packets */ ++#define IPCTL_INTRQMAXLEN 10 /* max length of netisr queue */ ++#define IPCTL_INTRQDROPS 11 /* number of netisr q drops */ ++#define IPCTL_STATS 12 /* ipstat structure */ ++#define IPCTL_ACCEPTSOURCEROUTE 13 /* may accept source routed packets */ ++#define IPCTL_FASTFORWARDING 14 /* use fast IP forwarding code */ ++#define IPCTL_KEEPFAITH 15 /* FAITH IPv4->IPv6 translater ctl */ ++#define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */ ++#define IPCTL_MAXID 17 ++ ++/* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS. ++ The `ip_dst' field is used for the first-hop gateway when using a ++ source route (this gets put into the header proper). */ ++struct ip_opts ++ { ++ struct in_addr ip_dst; /* First hop; zero without source route. */ ++ char ip_opts[40]; /* Actually variable in size. */ ++ }; ++ ++/* Options for use with `getsockopt' and `setsockopt' at the IPv6 level. ++ The first word in the comment at the right is the data type used; ++ "bool" means a boolean value stored in an `int'. */ ++#define IPV6_SOCKOPT_RESERVED1 3 /* reserved for future use */ ++#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */ ++#define IPV6_MULTICAST_IF 9 /* u_int; set/get IP6 multicast i/f */ ++#define IPV6_MULTICAST_HOPS 10 /* int; set/get IP6 multicast hops */ ++#define IPV6_MULTICAST_LOOP 11 /* u_int; set/get IP6 multicast loopback */ ++#define IPV6_JOIN_GROUP 12 /* ip6_mreq; join a group membership */ ++#define IPV6_LEAVE_GROUP 13 /* ip6_mreq; leave a group membership */ ++#define IPV6_PORTRANGE 14 /* int; range to choose for unspec port */ ++#define ICMP6_FILTER 18 /* icmp6_filter; icmp6 filter */ ++ ++#define IPV6_CHECKSUM 26 /* int; checksum offset for raw socket */ ++#define IPV6_V6ONLY 27 /* bool; make AF_INET6 sockets v6 only */ ++ ++#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */ ++#define IPV6_FAITH 29 /* bool; accept FAITH'ed connections */ ++ ++#define IPV6_FW_ADD 30 /* add a firewall rule to chain */ ++#define IPV6_FW_DEL 31 /* delete a firewall rule from chain */ ++#define IPV6_FW_FLUSH 32 /* flush firewall rule chain */ ++#define IPV6_FW_ZERO 33 /* clear single/all firewall counter(s) */ ++#define IPV6_FW_GET 34 /* get entire firewall rule chain */ ++#define IPV6_RTHDRDSTOPTS 35 /* ip6_dest; send dst option before rthdr */ ++ ++#define IPV6_RECVPKTINFO 36 /* bool; recv if, dst addr */ ++#define IPV6_RECVHOPLIMIT 37 /* bool; recv hop limit */ ++#define IPV6_RECVRTHDR 38 /* bool; recv routing header */ ++#define IPV6_RECVHOPOPTS 39 /* bool; recv hop-by-hop option */ ++#define IPV6_RECVDSTOPTS 40 /* bool; recv dst option after rthdr */ ++ ++#define IPV6_USE_MIN_MTU 42 /* bool; send packets at the minimum MTU */ ++#define IPV6_RECVPATHMTU 43 /* bool; notify an according MTU */ ++#define IPV6_PATHMTU 44 /* mtuinfo; get the current path MTU (sopt), ++ 4 bytes int; MTU notification (cmsg) */ ++ ++#define IPV6_PKTINFO 46 /* in6_pktinfo; send if, src addr */ ++#define IPV6_HOPLIMIT 47 /* int; send hop limit */ ++#define IPV6_NEXTHOP 48 /* sockaddr; next hop addr */ ++#define IPV6_HOPOPTS 49 /* ip6_hbh; send hop-by-hop option */ ++#define IPV6_DSTOPTS 50 /* ip6_dest; send dst option befor rthdr */ ++#define IPV6_RTHDR 51 /* ip6_rthdr; send routing header */ ++ ++#define IPV6_RECVTCLASS 57 /* bool; recv traffic class values */ ++ ++#define IPV6_AUTOFLOWLABEL 59 /* bool; attach flowlabel automagically */ ++ ++#define IPV6_TCLASS 61 /* int; send traffic class value */ ++#define IPV6_DONTFRAG 62 /* bool; disable IPv6 fragmentation */ ++ ++#define IPV6_PREFER_TEMPADDR 63 /* int; prefer temporary addresses as ++ * the source address. ++ */ ++ ++/* Obsolete synonyms for the above. */ ++#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP ++#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP ++#define IPV6_RXHOPOPTS IPV6_HOPOPTS ++#define IPV6_RXDSTOPTS IPV6_DSTOPTS ++ ++/* Socket level values for IPv6. */ ++#define SOL_IPV6 41 ++#define SOL_ICMPV6 58 ++ ++/* ++ * Defaults and limits for options ++ */ ++#define IPV6_DEFAULT_MULTICAST_HOPS 1 /* normally limit m'casts to 1 hop */ ++#define IPV6_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */ ++ ++/* ++ * Argument for IPV6_PORTRANGE: ++ * - which range to search when port is unspecified at bind() or connect() ++ */ ++#define IPV6_PORTRANGE_DEFAULT 0 /* default range */ ++#define IPV6_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */ ++#define IPV6_PORTRANGE_LOW 2 /* "low" - vouchsafe security */ ++ ++/* Routing header options for IPv6. */ ++#define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */ ++#define IPV6_RTHDR_STRICT 1 /* Hop must be a neighbour. */ ++ ++#define IPV6_RTHDR_TYPE_0 0 /* IPv6 Routing header type 0. */ ++ ++/* ++ * Names for IP sysctl objects ++ */ ++#define IPV6CTL_FORWARDING 1 /* act as router */ ++#define IPV6CTL_SENDREDIRECTS 2 /* may send redirects when forwarding*/ ++#define IPV6CTL_DEFHLIM 3 /* default Hop-Limit */ ++#define IPV6CTL_FORWSRCRT 5 /* forward source-routed dgrams */ ++#define IPV6CTL_STATS 6 /* stats */ ++#define IPV6CTL_MRTSTATS 7 /* multicast forwarding stats */ ++#define IPV6CTL_MRTPROTO 8 /* multicast routing protocol */ ++#define IPV6CTL_MAXFRAGPACKETS 9 /* max packets reassembly queue */ ++#define IPV6CTL_SOURCECHECK 10 /* verify source route and intf */ ++#define IPV6CTL_SOURCECHECK_LOGINT 11 /* minimume logging interval */ ++#define IPV6CTL_ACCEPT_RTADV 12 ++#define IPV6CTL_KEEPFAITH 13 ++#define IPV6CTL_LOG_INTERVAL 14 ++#define IPV6CTL_HDRNESTLIMIT 15 ++#define IPV6CTL_DAD_COUNT 16 ++#define IPV6CTL_AUTO_FLOWLABEL 17 ++#define IPV6CTL_DEFMCASTHLIM 18 ++#define IPV6CTL_GIF_HLIM 19 /* default HLIM for gif encap packet */ ++#define IPV6CTL_KAME_VERSION 20 ++#define IPV6CTL_USE_DEPRECATED 21 /* use deprecated addr (RFC2462 5.5.4) */ ++#define IPV6CTL_RR_PRUNE 22 /* walk timer for router renumbering */ ++#define IPV6CTL_V6ONLY 24 ++#define IPV6CTL_RTEXPIRE 25 /* cloned route expiration time */ ++#define IPV6CTL_RTMINEXPIRE 26 /* min value for expiration time */ ++#define IPV6CTL_RTMAXCACHE 27 /* trigger level for dynamic expire */ ++ ++#define IPV6CTL_USETEMPADDR 32 /* use temporary addresses (RFC3041) */ ++#define IPV6CTL_TEMPPLTIME 33 /* preferred lifetime for tmpaddrs */ ++#define IPV6CTL_TEMPVLTIME 34 /* valid lifetime for tmpaddrs */ ++#define IPV6CTL_AUTO_LINKLOCAL 35 /* automatic link-local addr assign */ ++#define IPV6CTL_RIP6STATS 36 /* raw_ip6 stats */ ++#define IPV6CTL_PREFER_TEMPADDR 37 /* prefer temporary addr as src */ ++#define IPV6CTL_ADDRCTLPOLICY 38 /* get/set address selection policy */ ++#define IPV6CTL_USE_DEFAULTZONE 39 /* use default scope zone */ ++ ++#define IPV6CTL_MAXFRAGS 41 /* max fragments */ ++#define IPV6CTL_MCAST_PMTU 44 /* enable pMTU discovery for multicast? */ ++ ++/* New entries should be added here from current IPV6CTL_MAXID value. */ ++/* to define items, should talk with KAME guys first, for *BSD compatibility */ ++/* 42-44 is already used in KAME */ ++#define IPV6CTL_STEALTH 45 ++#define ICMPV6CTL_ND6_ONLINKNSRFC4861 47 ++#define IPV6CTL_MAXID 48 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ioctl-types.h +@@ -0,0 +1,37 @@ ++/* Structure types for pre-termios terminal ioctls. FreeBSD version. ++ Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IOCTL_H ++# error "Never use directly; include instead." ++#endif ++ ++/* Many systems that have TIOCGWINSZ define TIOCGSIZE for source ++ compatibility with Sun; they define `struct ttysize' to have identical ++ layout as `struct winsize' and #define TIOCGSIZE to be TIOCGWINSZ ++ (likewise TIOCSSIZE and TIOCSWINSZ). */ ++/* struct ttysize is in FreeBSD originally defined in , ++ which is replaced by GLIBC version -> define here */ ++struct ttysize ++{ ++ unsigned short int ts_lines; ++ unsigned short int ts_cols; ++ unsigned short int ts_xxx; ++ unsigned short int ts_yyy; ++}; ++#define _IOT_ttysize _IOT_winsize +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ioctls.h +@@ -0,0 +1,50 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ioctl.h 8.6 (Berkeley) 3/28/94 ++ */ ++ ++#ifndef _IOCTLS_H_ ++#define _IOCTLS_H_ ++ ++#include ++ ++#include ++ ++/* ++ * @(#)ioctl.h 8.6 (Berkeley) 3/28/94 ++ */ ++ ++#define TIOCGSIZE TIOCGWINSZ ++#define TIOCSSIZE TIOCSWINSZ ++ ++#include ++ ++#include ++ ++#endif /* !_IOCTLS_H_ */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/ipc.h +@@ -0,0 +1,56 @@ ++/* Copyright (C) 1995-1997, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IPC_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Mode bits for `msgget', `semget', and `shmget'. */ ++#define IPC_CREAT 01000 /* create key if key does not exist */ ++#define IPC_EXCL 02000 /* fail if key exists */ ++#define IPC_NOWAIT 04000 /* return error on wait */ ++ ++/* Control commands for `msgctl', `semctl', and `shmctl'. */ ++#define IPC_RMID 0 /* remove identifier */ ++#define IPC_SET 1 /* set `ipc_perm' options */ ++#define IPC_STAT 2 /* get `ipc_perm' options */ ++ ++/* Special key values. */ ++#define IPC_PRIVATE ((key_t) 0) /* private key */ ++ ++#ifdef __USE_BSD ++/* Common mode bits. */ ++# define IPC_R 0400 /* read permission, same as S_IRUSR */ ++# define IPC_W 0200 /* write permission, same as S_IWUSR */ ++# define IPC_M 0x1000 /* control permission */ ++#endif ++ ++ ++/* Data structure used to pass permission information to IPC operations. */ ++struct ipc_perm ++ { ++ __uint16_t /* yuck! */ cuid; /* creator's user ID */ ++ __uint16_t /* yuck! */ cgid; /* creator's group ID */ ++ __uint16_t /* yuck! */ uid; /* owner's user ID */ ++ __uint16_t /* yuck! */ gid; /* owner's group ID */ ++ __mode_t mode; /* read/write permission */ ++ __uint16_t __seq; ++ __key_t __key; ++ }; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/local_lim.h +@@ -0,0 +1,25 @@ ++/* Minimum guaranteed maximum values for system limits. kFreeBSD version. ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* BSD userland provides MAXHOSTNAMELEN via . GNU ++ userland provides HOST_NAME_MAX via . This makes ++ both worlds happy. */ ++#define HOST_NAME_MAX MAXHOSTNAMELEN +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/mman.h +@@ -0,0 +1,130 @@ ++/* Definitions for POSIX memory map interface. FreeBSD version. ++ Copyright (C) 1994-1998, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_MMAN_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++#include ++ ++/* Protections are chosen from these bits, OR'd together. The ++ implementation does not necessarily support PROT_EXEC or PROT_WRITE ++ without PROT_READ. The only guarantees are that no writing will be ++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ ++ ++#define PROT_NONE 0x00 /* No access. */ ++#define PROT_READ 0x01 /* Pages can be read. */ ++#define PROT_WRITE 0x02 /* Pages can be written. */ ++#define PROT_EXEC 0x04 /* Pages can be executed. */ ++ ++/* Flags contain mapping type, sharing type and options. */ ++ ++/* Mapping type (must choose one and only one of these). */ ++#ifdef __USE_BSD ++# define MAP_FILE 0x0000 /* Mapped from a file or device. */ ++# define MAP_ANON 0x1000 /* Allocated from anonymous virtual memory. */ ++# define MAP_TYPE 0x1000 /* Mask for type field. */ ++# ifdef __USE_MISC ++# define MAP_ANONYMOUS MAP_ANON /* Linux name. */ ++# endif ++#endif ++ ++/* Sharing types (must choose one and only one of these). */ ++#define MAP_SHARED 0x0001 /* Share changes. */ ++#define MAP_PRIVATE 0x0002 /* Changes private; copy pages on write. */ ++#ifdef __USE_BSD ++# define MAP_COPY MAP_PRIVATE /* Virtual copy of region at mapping time. */ ++#endif ++ ++/* Other flags. */ ++#define MAP_FIXED 0x0010 /* Map address must be exactly as requested. */ ++#ifdef __USE_BSD ++#define MAP_RENAME 0x0020 /* Sun: rename private pages to file */ ++#define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */ ++#define MAP_RESERVED0080 0x0080 /* previously misimplemented MAP_INHERIT */ ++#define MAP_RESERVED0100 0x0100 /* previously unimplemented MAP_NOEXTEND */ ++# define MAP_HASSEMPHORE 0x0200 /* Region may contain semaphores. */ ++# define MAP_STACK 0x0400 /* Region grows down, like a stack. */ ++# define MAP_NOSYNC 0x0800 /* Try to avoid flushing to the disk. */ ++# define MAP_NOCORE 0x20000 /* Don't include these pages in a core dump. */ ++#endif ++ ++/* Advice to `madvise'. */ ++#ifdef __USE_BSD ++# define MADV_NORMAL 0 /* No further special treatment. */ ++# define MADV_RANDOM 1 /* Expect random page references. */ ++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define MADV_WILLNEED 3 /* Will need these pages. */ ++# define MADV_DONTNEED 4 /* Don't need these pages. */ ++# define MADV_FREE 5 /* Don't need these pages, they contain junk. */ ++# define MADV_NOSYNC 6 /* Try to avoid flushing to the disk. */ ++# define MADV_AUTOSYNC 7 /* Use the default flushing strategy. */ ++# define MADV_NOCORE 8 /* Don't include these pages in a core dump. */ ++# define MADV_CORE 9 /* Include pages in a core dump (default). */ ++# define MADV_PROTECT 10 /* protect process from pageout kill */ ++#endif ++ ++/* The POSIX people had to invent similar names for the same things. */ ++#ifdef __USE_XOPEN2K ++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ ++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ ++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ ++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ ++#endif ++ ++/* Flags to `msync'. */ ++#define MS_ASYNC 1 /* Sync memory asynchronously. */ ++#define MS_SYNC 0 /* Synchronous memory sync. */ ++#define MS_INVALIDATE 2 /* Invalidate the caches. */ ++ ++/* Flags for `mlockall' (can be OR'd together). */ ++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */ ++#define MCL_FUTURE 2 /* Lock all additions to address ++ space. */ ++ ++/* Flags for 'minherit'. */ ++#ifdef __USE_BSD ++# define INHERIT_SHARE 0 ++# define INHERIT_COPY 1 ++# define INHERIT_NONE 2 ++#endif ++ ++ ++/* ++ * Return bits from mincore ++ */ ++#ifdef __USE_MISC ++#define MINCORE_INCORE 0x1 /* Page is incore */ ++#define MINCORE_REFERENCED 0x2 /* Page has been referenced by us */ ++#define MINCORE_MODIFIED 0x4 /* Page has been modified by us */ ++#define MINCORE_REFERENCED_OTHER 0x8 /* Page has been referenced */ ++#define MINCORE_MODIFIED_OTHER 0x10 /* Page has been modified */ ++#endif /* Use MISC */ ++ ++#ifdef __USE_BSD ++ ++__BEGIN_DECLS ++ ++extern int minherit (void *__addr, size_t __len, int __inherit); ++ ++__END_DECLS ++ ++#endif /* Use BSD */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/msq.h +@@ -0,0 +1,69 @@ ++/* Copyright (C) 1995, 1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_MSG_H ++#error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Define options for message queue functions. */ ++#define MSG_NOERROR 010000 /* no error if message is too big */ ++ ++/* Types used in the structure definition. */ ++typedef unsigned long int msgqnum_t; ++typedef unsigned long int msglen_t; ++ ++ ++/* Structure of record for one message inside the kernel. ++ The type `struct __msg' is opaque. */ ++struct msqid_ds ++{ ++ struct ipc_perm msg_perm; /* structure describing operation permission */ ++ void *__msg_first; ++ void *__msg_last; ++ msglen_t __msg_cbytes; /* current number of bytes on queue */ ++ msgqnum_t msg_qnum; /* number of messages currently on queue */ ++ msglen_t msg_qbytes; /* max number of bytes allowed on queue */ ++ __pid_t msg_lspid; /* pid of last msgsnd() */ ++ __pid_t msg_lrpid; /* pid of last msgrcv() */ ++ __time_t msg_stime; /* time of last msgsnd command */ ++ long __unused1; ++ __time_t msg_rtime; /* time of last msgrcv command */ ++ long __unused2; ++ __time_t msg_ctime; /* time of last change */ ++ long __unused3; ++ long __unused4[4]; ++}; ++ ++#ifdef __USE_MISC ++ ++# define msg_cbytes __msg_cbytes ++ ++/* buffer for msgctl calls IPC_INFO, MSG_INFO */ ++struct msginfo ++ { ++ int msgmax; ++ int msgmni; ++ int msgmnb; ++ int msgtql; ++ int msgssz; ++ int msgseg; ++ }; ++ ++#endif /* __USE_MISC */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/poll.h +@@ -0,0 +1,51 @@ ++/* Copyright (C) 1997, 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_POLL_H ++# error "Never use directly; include instead." ++#endif ++ ++/* Event types that can be polled for. These bits may be set in `events' ++ to indicate the interesting event types; they will appear in `revents' ++ to indicate the status of the file descriptor. */ ++#define POLLIN 0x0001 /* There is data to read. */ ++#define POLLPRI 0x0002 /* There is urgent data to read. */ ++#define POLLOUT 0x0004 /* Writing now will not block. */ ++ ++#ifdef __USE_XOPEN ++/* These values are defined in XPG4.2. */ ++# define POLLRDNORM 0x0040 /* Normal data may be read. */ ++# define POLLRDBAND 0x0080 /* Priority data may be read. */ ++# define POLLWRNORM 0x0004 /* Writing now will not block. */ ++# define POLLWRBAND 0x0100 /* Priority data may be written. */ ++#endif ++ ++#ifdef __USE_BSD ++/* These are extensions for FreeBSD. */ ++# define POLLEXTEND 0x0200 /* File size may have grown. */ ++# define POLLATTRIB 0x0400 /* File attributes may have changed. */ ++# define POLLNLINK 0x0800 /* File may have been moved/removed. */ ++# define POLLWRITE 0x1000 /* File's contents may have changed. */ ++#endif ++ ++/* Event types always implicitly polled for. These bits need not be set in ++ `events', but they will appear in `revents' to indicate the status of ++ the file descriptor. */ ++#define POLLERR 0x0008 /* Error condition. */ ++#define POLLHUP 0x0010 /* Hung up. */ ++#define POLLNVAL 0x0020 /* Invalid polling request. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/posix_opt.h +@@ -0,0 +1,90 @@ ++/* Define POSIX options for FreeBSD. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef _BITS_POSIX_OPT_H ++#define _BITS_POSIX_OPT_H 1 ++ ++/* Job control is supported. */ ++#define _POSIX_JOB_CONTROL 1 ++ ++/* Processes have a saved set-user-ID and a saved set-group-ID. */ ++#define _POSIX_SAVED_IDS 1 ++ ++/* Priority scheduling is supported. */ ++#define _POSIX_PRIORITY_SCHEDULING 1 ++ ++/* Synchronizing file data is supported. */ ++#define _POSIX_SYNCHRONIZED_IO 1 ++ ++/* The fsync function is present. */ ++#define _POSIX_FSYNC 1 ++ ++/* Mapping of files to memory is supported. */ ++#define _POSIX_MAPPED_FILES 1 ++ ++/* Locking of all memory is supported. */ ++#define _POSIX_MEMLOCK 1 ++ ++/* Locking of ranges of memory is supported. */ ++#define _POSIX_MEMLOCK_RANGE 1 ++ ++/* Setting of memory protections is supported. */ ++#define _POSIX_MEMORY_PROTECTION 1 ++ ++/* Implementation supports `poll' function. */ ++#define _POSIX_POLL 1 ++ ++/* Implementation supports `select' and `pselect' functions. */ ++#define _POSIX_SELECT 1 ++ ++/* XPG4.2 shared memory is supported. */ ++#define _XOPEN_SHM 1 ++ ++/* X/Open realtime support is available. */ ++#define _XOPEN_REALTIME 1 ++ ++/* Only root can change owner of file. */ ++#define _POSIX_CHOWN_RESTRICTED 1 ++ ++/* `c_cc' member of 'struct termios' structure can be disabled by ++ using the value _POSIX_VDISABLE. */ ++#define _POSIX_VDISABLE ((unsigned char)'\377') ++ ++/* The LFS interface is available, except for the asynchronous I/O. */ ++#define _LFS_LARGEFILE 1 ++#define _LFS64_LARGEFILE 1 ++#define _LFS64_STDIO 1 ++ ++/* POSIX timers are available. */ ++#define _POSIX_TIMERS 1 ++ ++/* GNU libc provides regular expression handling. */ ++#define _POSIX_REGEXP 1 ++ ++/* We have a POSIX shell. */ ++#define _POSIX_SHELL 1 ++ ++/* The `spawn' function family is supported. */ ++#define _POSIX_SPAWN 200912L ++ ++#endif /* bits/posix_opt.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/resource.h +@@ -0,0 +1,200 @@ ++/* Bit values & structures for resource limits. FreeBSD version. ++ Copyright (C) 1994, 1996-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_RESOURCE_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Transmute defines to enumerations. The macro re-definitions are ++ necessary because some programs want to test for operating system ++ features with #ifdef RUSAGE_SELF. In ISO C the reflexive ++ definition is a no-op. ++ ++ These are the values for FreeBSD. Earlier BSD systems have a subset of ++ these kinds of resource limit. */ ++ ++/* Kinds of resource limit. */ ++enum __rlimit_resource ++{ ++ /* Per-process CPU limit, in seconds. */ ++ RLIMIT_CPU = 0, ++#define RLIMIT_CPU RLIMIT_CPU ++ ++ /* Largest file that can be created, in bytes. */ ++ RLIMIT_FSIZE = 1, ++#define RLIMIT_FSIZE RLIMIT_FSIZE ++ ++ /* Maximum size of data segment, in bytes. */ ++ RLIMIT_DATA = 2, ++#define RLIMIT_DATA RLIMIT_DATA ++ ++ /* Maximum size of stack segment, in bytes. */ ++ RLIMIT_STACK = 3, ++#define RLIMIT_STACK RLIMIT_STACK ++ ++ /* Largest core file that can be created, in bytes. */ ++ RLIMIT_CORE = 4, ++#define RLIMIT_CORE RLIMIT_CORE ++ ++ /* Largest resident set size, in bytes. ++ This affects swapping; processes that are exceeding their ++ resident set size will be more likely to have physical memory ++ taken from them. */ ++ __RLIMIT_RSS = 5, ++#define RLIMIT_RSS __RLIMIT_RSS ++ ++ /* Locked-in-memory address space. */ ++ __RLIMIT_MEMLOCK = 6, ++#define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK ++ ++ /* Number of processes. */ ++ __RLIMIT_NPROC = 7, ++#define RLIMIT_NPROC __RLIMIT_NPROC ++ ++ /* Number of open files. */ ++ RLIMIT_NOFILE = 8, ++#define RLIMIT_NOFILE RLIMIT_NOFILE ++ ++ /* Maximum size of all socket buffers. */ ++ __RLIMIT_SBSIZE = 9, ++#define RLIMIT_SBSIZE __RLIMIT_SBSIZE ++ ++ /* Address space limit. */ ++ RLIMIT_AS = 10, ++#define RLIMIT_AS RLIMIT_AS ++ ++ __RLIMIT_NLIMITS = 11, ++ __RLIM_NLIMITS = __RLIMIT_NLIMITS ++#define RLIMIT_NLIMITS __RLIMIT_NLIMITS ++#define RLIM_NLIMITS __RLIM_NLIMITS ++}; ++ ++/* Value to indicate that there is no limit. */ ++#define RLIM_INFINITY 0x7fffffffffffffffLL ++#ifdef __USE_LARGEFILE64 ++# define RLIM64_INFINITY 0x7fffffffffffffffLL ++#endif ++ ++ ++/* Type for resource quantity measurement. */ ++typedef __rlim_t rlim_t; ++#ifdef __USE_LARGEFILE64 ++typedef __rlim64_t rlim64_t; ++#endif ++ ++struct rlimit ++ { ++ /* The current (soft) limit. */ ++ rlim_t rlim_cur; ++ /* The hard limit. */ ++ rlim_t rlim_max; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct rlimit64 ++ { ++ /* The current (soft) limit. */ ++ rlim64_t rlim_cur; ++ /* The hard limit. */ ++ rlim64_t rlim_max; ++ }; ++#endif ++ ++#define CP_USER 0 ++#define CP_NICE 1 ++#define CP_SYS 2 ++#define CP_INTR 3 ++#define CP_IDLE 4 ++#define CPUSTATES 5 ++ ++/* Whose usage statistics do you want? */ ++enum __rusage_who ++{ ++ /* The calling process. */ ++ RUSAGE_SELF = 0, ++#define RUSAGE_SELF RUSAGE_SELF ++ ++ /* All of its terminated child processes. */ ++ RUSAGE_CHILDREN = -1 ++#define RUSAGE_CHILDREN RUSAGE_CHILDREN ++}; ++ ++#define __need_timeval ++#include /* For `struct timeval'. */ ++ ++/* Structure which says how much of each resource has been used. */ ++struct rusage ++ { ++ /* Total amount of user time used. */ ++ struct timeval ru_utime; ++ /* Total amount of system time used. */ ++ struct timeval ru_stime; ++ /* Maximum resident set size (in kilobytes). */ ++ long int ru_maxrss; ++ /* Amount of sharing of text segment memory ++ with other processes (kilobyte-seconds). */ ++ long int ru_ixrss; ++ /* Amount of data segment memory used (kilobyte-seconds). */ ++ long int ru_idrss; ++ /* Amount of stack memory used (kilobyte-seconds). */ ++ long int ru_isrss; ++ /* Number of soft page faults (i.e. those serviced by reclaiming ++ a page from the list of pages awaiting reallocation. */ ++ long int ru_minflt; ++ /* Number of hard page faults (i.e. those that required I/O). */ ++ long int ru_majflt; ++ /* Number of times a process was swapped out of physical memory. */ ++ long int ru_nswap; ++ /* Number of input operations via the file system. Note: This ++ and `ru_oublock' do not include operations with the cache. */ ++ long int ru_inblock; ++ /* Number of output operations via the file system. */ ++ long int ru_oublock; ++ /* Number of IPC messages sent. */ ++ long int ru_msgsnd; ++ /* Number of IPC messages received. */ ++ long int ru_msgrcv; ++ /* Number of signals delivered. */ ++ long int ru_nsignals; ++ /* Number of voluntary context switches, i.e. because the process ++ gave up the process before it had to (usually to wait for some ++ resource to be available). */ ++ long int ru_nvcsw; ++ /* Number of involuntary context switches, i.e. a higher priority process ++ became runnable or the current process used up its time slice. */ ++ long int ru_nivcsw; ++ }; ++ ++/* Priority limits. */ ++#define PRIO_MIN -20 /* Minimum priority a process can have. */ ++#define PRIO_MAX 20 /* Maximum priority a process can have. */ ++ ++/* The type of the WHICH argument to `getpriority' and `setpriority', ++ indicating what flavor of entity the WHO argument specifies. */ ++enum __priority_which ++{ ++ PRIO_PROCESS = 0, /* WHO is a process ID. */ ++#define PRIO_PROCESS PRIO_PROCESS ++ PRIO_PGRP = 1, /* WHO is a process group ID. */ ++#define PRIO_PGRP PRIO_PGRP ++ PRIO_USER = 2 /* WHO is a user ID. */ ++#define PRIO_USER PRIO_USER ++}; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sched.h +@@ -0,0 +1,183 @@ ++/* Definitions of constants and data structure for POSIX 1003.1b-1993 ++ scheduling interface. ++ Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __need_schedparam ++ ++#ifndef _SCHED_H ++# error "Never include directly; use instead." ++#endif ++ ++ ++/* Scheduling algorithms. */ ++#define SCHED_OTHER 2 ++#define SCHED_FIFO 1 ++#define SCHED_RR 3 ++ ++ ++#ifdef __USE_MISC ++/* Cloning flags. */ ++# define CSIGNAL 0x000000ff /* Signal mask to be sent at exit. */ ++# define CLONE_VM 0x00000100 /* Set if VM shared between processes. */ ++# define CLONE_FS 0x00000200 /* Set if fs info shared between processes. */ ++# define CLONE_FILES 0x00000400 /* Set if open files shared between processes. */ ++# define CLONE_SIGHAND 0x00000800 /* Set if signal handlers shared. */ ++# define CLONE_PTRACE 0x00002000 /* Set if tracing continues on the child. */ ++# define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to ++ wake it up on mm_release. */ ++# define CLONE_SYSVSEM 0x00040000 /* share system V SEM_UNDO semantics */ ++#endif ++ ++/* The official definition. */ ++struct sched_param ++ { ++ int __sched_priority; ++ }; ++ ++__BEGIN_DECLS ++ ++#ifdef __USE_MISC ++/* Clone current process. */ ++extern int clone (int (*__fn) (void *__arg), void *__child_stack, ++ int __flags, void *__arg) __THROW; ++ ++/* Unshare the specified resources. */ ++extern int unshare (int __flags) __THROW; ++ ++/* Get index of currently used CPU. */ ++extern int sched_getcpu (void) __THROW; ++#endif ++ ++__END_DECLS ++ ++#endif /* need schedparam */ ++ ++#if !defined __defined_schedparam \ ++ && (defined __need_schedparam || defined _SCHED_H) ++# define __defined_schedparam 1 ++/* Data structure to describe a process' schedulability. */ ++struct __sched_param ++ { ++ int __sched_priority; ++ }; ++# undef __need_schedparam ++#endif ++ ++ ++#if defined _SCHED_H && !defined __cpu_set_t_defined ++# define __cpu_set_t_defined ++/* Size definition for CPU sets. */ ++# define __CPU_SETSIZE 128 ++# define __NCPUBITS (8 * sizeof (__cpu_mask)) ++ ++/* Type for array elements in 'cpu_set_t'. */ ++typedef unsigned long int __cpu_mask; ++ ++/* Basic access functions. */ ++# define __CPUELT(cpu) ((cpu) / __NCPUBITS) ++# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS)) ++ ++/* Data structure to describe CPU mask. */ ++typedef struct ++{ ++ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS]; ++} cpu_set_t; ++ ++/* Access functions for CPU masks. */ ++# if __GNUC_PREREQ (2, 91) ++# define __CPU_ZERO_S(setsize, cpusetp) \ ++ do __builtin_memset (cpusetp, '\0', setsize); while (0) ++# else ++# define __CPU_ZERO_S(setsize, cpusetp) \ ++ do { \ ++ size_t __i; \ ++ size_t __imax = (setsize) / sizeof (__cpu_mask); \ ++ __cpu_mask *__bits = (cpusetp)->__bits; \ ++ for (__i = 0; __i < __imax; ++__i) \ ++ __bits[__i] = 0; \ ++ } while (0) ++# endif ++# define __CPU_SET_S(cpu, setsize, cpusetp) \ ++ (__extension__ \ ++ ({ size_t __cpu = (cpu); \ ++ __cpu < 8 * (setsize) \ ++ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \ ++ |= __CPUMASK (__cpu)) \ ++ : 0; })) ++# define __CPU_CLR_S(cpu, setsize, cpusetp) \ ++ (__extension__ \ ++ ({ size_t __cpu = (cpu); \ ++ __cpu < 8 * (setsize) \ ++ ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \ ++ &= ~__CPUMASK (__cpu)) \ ++ : 0; })) ++# define __CPU_ISSET_S(cpu, setsize, cpusetp) \ ++ (__extension__ \ ++ ({ size_t __cpu = (cpu); \ ++ __cpu < 8 * (setsize) \ ++ ? ((((__const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \ ++ & __CPUMASK (__cpu))) != 0 \ ++ : 0; })) ++ ++# define __CPU_COUNT_S(setsize, cpusetp) \ ++ __sched_cpucount (setsize, cpusetp) ++ ++# if __GNUC_PREREQ (2, 91) ++# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ ++ (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0) ++# else ++# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \ ++ (__extension__ \ ++ ({ __const __cpu_mask *__arr1 = (cpusetp1)->__bits; \ ++ __const __cpu_mask *__arr2 = (cpusetp2)->__bits; \ ++ size_t __imax = (setsize) / sizeof (__cpu_mask); \ ++ size_t __i; \ ++ for (__i = 0; __i < __imax; ++__i) \ ++ if (__bits[__i] != __bits[__i]) \ ++ break; \ ++ __i == __imax; })) ++# endif ++ ++# define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \ ++ (__extension__ \ ++ ({ cpu_set_t *__dest = (destset); \ ++ __const __cpu_mask *__arr1 = (srcset1)->__bits; \ ++ __const __cpu_mask *__arr2 = (srcset2)->__bits; \ ++ size_t __imax = (setsize) / sizeof (__cpu_mask); \ ++ size_t __i; \ ++ for (__i = 0; __i < __imax; ++__i) \ ++ ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \ ++ __dest; })) ++ ++# define __CPU_ALLOC_SIZE(count) \ ++ ((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)) ++# define __CPU_ALLOC(count) __sched_cpualloc (count) ++# define __CPU_FREE(cpuset) __sched_cpufree (cpuset) ++ ++__BEGIN_DECLS ++ ++extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) ++ __THROW; ++extern cpu_set_t *__sched_cpualloc (size_t __count) __THROW __wur; ++extern void __sched_cpufree (cpu_set_t *__set) __THROW; ++ ++__END_DECLS ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sem.h +@@ -0,0 +1,95 @@ ++/* Copyright (C) 1995-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SEM_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++/* Flags for `semop'. */ ++#define SEM_UNDO 0x1000 /* undo the operation on exit */ ++ ++/* Commands for `semctl'. */ ++#define GETPID 4 /* get sempid */ ++#define GETVAL 5 /* get semval */ ++#define GETALL 6 /* get all semval's */ ++#define GETNCNT 3 /* get semncnt */ ++#define GETZCNT 7 /* get semzcnt */ ++#define SETVAL 8 /* set semval */ ++#define SETALL 9 /* set all semval's */ ++ ++#ifdef __USE_BSD ++# define SEM_R IPC_R /* read permission for user */ ++# define SEM_A IPC_W /* alter permission for user */ ++#endif ++ ++ ++/* Data structure describing a set of semaphores. */ ++struct semid_ds ++{ ++ struct ipc_perm sem_perm; /* operation permission struct */ ++ void *__sem_base; ++ unsigned short int sem_nsems; /* number of semaphores in set */ ++ __time_t sem_otime; /* last semop() time */ ++ long __unused1; ++ __time_t sem_ctime; /* last time changed by semctl() */ ++ long __unused2; ++ long __unused3[4]; ++}; ++ ++/* The user should define a union like the following to use it for arguments ++ for `semctl'. ++ ++ union semun ++ { ++ int val; <= value for SETVAL ++ struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET ++ unsigned short int *array; <= array for GETALL & SETALL ++ struct seminfo *__buf; <= buffer for IPC_INFO ++ }; ++ ++ Previous versions of this file used to define this union but this is ++ incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether ++ one must define the union or not. */ ++#define _SEM_SEMUN_UNDEFINED 1 ++ ++#ifdef __USE_MISC ++ ++/* ipcs ctl cmds */ ++# define SEM_STAT 10 ++# define SEM_INFO 11 ++ ++/* ++ * semaphore info struct ++ */ ++struct seminfo { ++ int semmap, /* # of entries in semaphore map */ ++ semmni, /* # of semaphore identifiers */ ++ semmns, /* # of semaphores in system */ ++ semmnu, /* # of undo structures in system */ ++ semmsl, /* max # of semaphores per id */ ++ semopm, /* max # of operations per semop call */ ++ semume, /* max # of undo entries per process */ ++ semusz, /* size in bytes of undo structure */ ++ semvmx, /* semaphore maximum value */ ++ semaem; /* adjust on exit max value */ ++}; ++ ++#endif ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/shm.h +@@ -0,0 +1,90 @@ ++/* Copyright (C) 1995-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SHM_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++/* Permission flag for shmget. */ ++#ifdef __USE_BSD ++# define SHM_R IPC_R /* read permission for user */ ++# define SHM_W IPC_W /* write permission for user */ ++#endif ++ ++/* Flags for `shmat'. */ ++#define SHM_RDONLY 010000 /* attach read-only else read-write */ ++#define SHM_RND 020000 /* round attach address to SHMLBA */ ++ ++/* Commands for `shmctl'. */ ++#define SHM_LOCK 11 /* lock segment (root only) */ ++#define SHM_UNLOCK 12 /* unlock segment (root only) */ ++ ++__BEGIN_DECLS ++ ++/* Segment low boundary address multiple. */ ++#define SHMLBA (__getpagesize ()) ++extern int __getpagesize (void) __THROW __attribute__ ((__const__)); ++ ++ ++/* Type to count number of attaches. */ ++typedef unsigned short int shmatt_t; ++ ++/* Data structure describing a set of semaphores. */ ++struct shmid_ds ++ { ++ struct ipc_perm shm_perm; /* operation permission struct */ ++ int shm_segsz; /* size of segment in bytes */ ++ __pid_t shm_lpid; /* pid of last shmop */ ++ __pid_t shm_cpid; /* pid of creator */ ++ shmatt_t shm_nattch; /* number of current attaches */ ++ __time_t shm_atime; /* time of last shmat() */ ++ __time_t shm_dtime; /* time of last shmdt() */ ++ __time_t shm_ctime; /* time of last change by shmctl() */ ++ void *__shm_internal; ++ }; ++ ++#ifdef __USE_MISC ++ ++/* ipcs ctl commands */ ++# define SHM_STAT 13 ++# define SHM_INFO 14 ++ ++struct shminfo ++ { ++ int shmmax, /* max shared memory segment size (bytes) */ ++ shmmin, /* min shared memory segment size (bytes) */ ++ shmmni, /* max number of shared memory identifiers */ ++ shmseg, /* max shared memory segments per process */ ++ shmall; /* max amount of shared memory (pages) */ ++ }; ++ ++struct shm_info ++ { ++ int used_ids; ++ unsigned long int shm_tot; /* total allocated shm */ ++ unsigned long int shm_rss; /* total resident shm */ ++ unsigned long int shm_swp; /* total swapped shm */ ++ unsigned long int swap_attempts; ++ unsigned long int swap_successes; ++ }; ++ ++#endif /* __USE_MISC */ ++ ++__END_DECLS +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigaction.h +@@ -0,0 +1,76 @@ ++/* Copyright (C) 1991-1992,1996-1998,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SIGNAL_H ++# error "Never include directly; use instead." ++#endif ++ ++/* These definitions match those used by the FreeBSD kernel. */ ++ ++/* Structure describing the action to be taken when a signal arrives. */ ++struct sigaction ++ { ++ /* Signal handler. */ ++#ifdef __USE_POSIX199309 ++ union ++ { ++ /* Used if SA_SIGINFO is not set. */ ++ __sighandler_t sa_handler; ++ /* Used if SA_SIGINFO is set. */ ++ void (*sa_sigaction) (int, siginfo_t *, void *); ++ } ++ __sigaction_handler; ++# define sa_handler __sigaction_handler.sa_handler ++# define sa_sigaction __sigaction_handler.sa_sigaction ++#else ++ __sighandler_t sa_handler; ++#endif ++ ++ /* Special flags. */ ++ int sa_flags; ++ ++ /* Additional set of signals to be blocked. */ ++ __sigset_t sa_mask; ++ }; ++ ++/* Bits in `sa_flags'. */ ++#if defined __USE_UNIX98 || defined __USE_MISC ++# define SA_ONSTACK 0x0001 /* Take signal on signal stack. */ ++# define SA_RESTART 0x0002 /* Restart syscall on signal return. */ ++# define SA_RESETHAND 0x0004 /* Reset to SIG_DFL on entry to handler. */ ++# define SA_NODEFER 0x0010 /* Don't automatically block the signal when ++ its handler is being executed. */ ++# define SA_NOCLDWAIT 0x0020 /* Don't save zombie processes. */ ++# define SA_SIGINFO 0x0040 /* Provide additional info to the handler. */ ++#endif ++#define SA_NOCLDSTOP 0x0008 /* Don't send SIGCHLD when children stop. */ ++ ++#ifdef __USE_MISC ++# define SA_INTERRUPT 0 /* Historical no-op ("not SA_RESTART"). */ ++ ++/* Some aliases for the SA_ constants. */ ++# define SA_NOMASK SA_NODEFER ++# define SA_ONESHOT SA_RESETHAND ++# define SA_STACK SA_ONSTACK ++#endif ++ ++ ++/* Values for the HOW argument to `sigprocmask'. */ ++#define SIG_BLOCK 1 /* Block signals. */ ++#define SIG_UNBLOCK 2 /* Unblock signals. */ ++#define SIG_SETMASK 3 /* Set the set of blocked signals. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/siginfo.h +@@ -0,0 +1,220 @@ ++/* siginfo_t, sigevent and constants. FreeBSD version. ++ Copyright (C) 1997-1998, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined __need_siginfo_t \ ++ && !defined __need_sigevent_t ++# error "Never include this file directly. Use instead" ++#endif ++ ++#if (!defined __have_sigval_t \ ++ && (defined _SIGNAL_H || defined __need_siginfo_t \ ++ || defined __need_sigevent_t)) ++# define __have_sigval_t 1 ++ ++/* Type for data associated with a signal. */ ++typedef union sigval ++ { ++ int sival_int; ++ void *sival_ptr; ++ } sigval_t; ++#endif ++ ++#if (!defined __have_siginfo_t \ ++ && (defined _SIGNAL_H || defined __need_siginfo_t)) ++# define __have_siginfo_t 1 ++ ++typedef struct siginfo ++ { ++ int si_signo; /* Signal number. */ ++ int si_errno; /* If non-zero, an errno value associated with ++ this signal, as defined in . */ ++ int si_code; /* Signal code. */ ++ int si_pid; /* Sending process ID. */ ++ unsigned int si_uid; /* Real user ID of sending process. */ ++ int si_status; /* Exit value or signal. */ ++ void *si_addr; /* Address of faulting instruction. */ ++ union sigval si_value; /* Signal value. */ ++ long int si_band; /* Band event for SIGPOLL. */ ++ int __si_spare[7]; ++ } siginfo_t; ++ ++ ++/* Values for `si_code'. Positive values are reserved for kernel-generated ++ signals. */ ++enum ++{ ++ SI_ASYNCIO = 0x10004, /* Sent by AIO completion. */ ++# define SI_ASYNCIO SI_ASYNCIO ++ SI_MESGQ = 0x10005, /* Sent by real time mesq state change. */ ++# define SI_MESGQ SI_MESGQ ++ SI_TIMER = 0x10003, /* Sent by timer expiration. */ ++# define SI_TIMER SI_TIMER ++ SI_QUEUE = 0x10002, /* Sent by sigqueue. */ ++# define SI_QUEUE SI_QUEUE ++ SI_USER = 0x10001, /* Sent by kill, sigsend, raise. */ ++# define SI_USER SI_USER ++ SI_UNDEFINED = 0 ++# define SI_UNDEFINED SI_UNDEFINED ++}; ++ ++/* `si_code' values for SIGILL signal. */ ++enum ++{ ++ ILL_ILLOPC = 1, /* Illegal opcode. */ ++# define ILL_ILLOPC ILL_ILLOPC ++ ILL_ILLOPN, /* Illegal operand. */ ++# define ILL_ILLOPN ILL_ILLOPN ++ ILL_ILLADR, /* Illegal addressing mode. */ ++# define ILL_ILLADR ILL_ILLADR ++ ILL_ILLTRP, /* Illegal trap. */ ++# define ILL_ILLTRP ILL_ILLTRP ++ ILL_PRVOPC, /* Privileged opcode. */ ++# define ILL_PRVOPC ILL_PRVOPC ++ ILL_PRVREG, /* Privileged register. */ ++# define ILL_PRVREG ILL_PRVREG ++ ILL_COPROC, /* Coprocessor error. */ ++# define ILL_COPROC ILL_COPROC ++ ILL_BADSTK /* Internal stack error. */ ++# define ILL_BADSTK ILL_BADSTK ++}; ++ ++/* `si_code' values for SIGFPE signal. */ ++enum ++{ ++ FPE_INTOVF = 1, /* Integer overflow. */ ++# define FPE_INTOVF FPE_INTOVF ++ FPE_INTDIV, /* Integer divide by zero. */ ++# define FPE_INTDIV FPE_INTDIV ++ FPE_FLTDIV, /* Floating point divide by zero. */ ++# define FPE_FLTDIV FPE_FLTDIV ++ FPE_FLTOVF, /* Floating point overflow. */ ++# define FPE_FLTOVF FPE_FLTOVF ++ FPE_FLTUND, /* Floating point underflow. */ ++# define FPE_FLTUND FPE_FLTUND ++ FPE_FLTRES, /* Floating point inexact result. */ ++# define FPE_FLTRES FPE_FLTRES ++ FPE_FLTINV, /* Floating point invalid operation. */ ++# define FPE_FLTINV FPE_FLTINV ++ FPE_FLTSUB /* Subscript out of range. */ ++# define FPE_FLTSUB FPE_FLTSUB ++}; ++ ++/* `si_code' values for SIGSEGV signal. */ ++enum ++{ ++ SEGV_MAPERR = 1, /* Address not mapped to object. */ ++# define SEGV_MAPERR SEGV_MAPERR ++ SEGV_ACCERR /* Invalid permissions for mapped object. */ ++# define SEGV_ACCERR SEGV_ACCERR ++}; ++ ++/* `si_code' values for SIGBUS signal. */ ++enum ++{ ++ BUS_ADRALN = 1, /* Invalid address alignment. */ ++# define BUS_ADRALN BUS_ADRALN ++ BUS_ADRERR, /* Non-existant physical address. */ ++# define BUS_ADRERR BUS_ADRERR ++ BUS_OBJERR /* Object specific hardware error. */ ++# define BUS_OBJERR BUS_OBJERR ++}; ++ ++/* `si_code' values for SIGTRAP signal. */ ++enum ++{ ++ TRAP_BRKPT = 1, /* Process breakpoint. */ ++# define TRAP_BRKPT TRAP_BRKPT ++ TRAP_TRACE /* Process trace trap. */ ++# define TRAP_TRACE TRAP_TRACE ++}; ++ ++/* `si_code' values for SIGCHLD signal. */ ++/* XXX These are only used by the waitid() function, not by the kernel. */ ++enum ++{ ++ CLD_EXITED = 1, /* Child has exited. */ ++# define CLD_EXITED CLD_EXITED ++ CLD_KILLED, /* Child was killed. */ ++# define CLD_KILLED CLD_KILLED ++ CLD_DUMPED, /* Child terminated abnormally. */ ++# define CLD_DUMPED CLD_DUMPED ++ CLD_TRAPPED, /* Traced child has trapped. */ ++# define CLD_TRAPPED CLD_TRAPPED ++ CLD_STOPPED, /* Child has stopped. */ ++# define CLD_STOPPED CLD_STOPPED ++ CLD_CONTINUED /* Stopped child has continued. */ ++# define CLD_CONTINUED CLD_CONTINUED ++}; ++ ++/* `si_code' values for SIGPOLL signal. */ ++enum ++{ ++ POLL_IN = 1, /* Data input available. */ ++# define POLL_IN POLL_IN ++ POLL_OUT, /* Output buffers available. */ ++# define POLL_OUT POLL_OUT ++ POLL_MSG, /* Input message available. */ ++# define POLL_MSG POLL_MSG ++ POLL_ERR, /* I/O error. */ ++# define POLL_ERR POLL_ERR ++ POLL_PRI, /* High priority input available. */ ++# define POLL_PRI POLL_PRI ++ POLL_HUP /* Device disconnected. */ ++# define POLL_HUP POLL_HUP ++}; ++ ++# undef __need_siginfo_t ++#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ ++ ++ ++#if (defined _SIGNAL_H || defined __need_sigevent_t) \ ++ && !defined __have_sigevent_t ++# define __have_sigevent_t 1 ++ ++/* Structure to transport application-defined values with signals. */ ++ ++typedef struct sigevent ++ { ++ int sigev_notify; ++ int sigev_signo; ++ sigval_t sigev_value; ++ /* Not yet supported by the kernel. */ ++ void (*sigev_notify_function) (sigval_t); /* Function to start. */ ++ void *sigev_notify_attributes; /* Really pthread_attr_t. */ ++ } sigevent_t; ++ ++#define sigev_notify_kqueue sigev_signo ++ ++/* `sigev_notify' values. */ ++enum ++{ ++ SIGEV_SIGNAL = 1, /* Notify via signal. */ ++# define SIGEV_SIGNAL SIGEV_SIGNAL ++ SIGEV_NONE = 0, /* Other notification: meaningless. */ ++# define SIGEV_NONE SIGEV_NONE ++ /* Not yet supported by the kernel. */ ++ SIGEV_THREAD = 2, /* Deliver via thread creation. */ ++# define SIGEV_THREAD SIGEV_THREAD ++ SIGEV_KEVENT = 3, ++# define SIGEV_KEVENT SIGEV_KEVENT ++ SIGEV_THREAD_ID = 4, ++# define SIGEV_THREAD_ID SIGEV_THREAD_ID ++}; ++ ++#endif /* have _SIGNAL_H. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/signum.h +@@ -0,0 +1,80 @@ ++/* Signal number definitions. FreeBSD version. ++ Copyright (C) 1991-1993, 1996, 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifdef _SIGNAL_H ++ ++/* This file defines the fake signal functions and signal ++ number constants for 4.2 or 4.3 BSD-derived Unix system. */ ++ ++/* Fake signal functions. */ ++#define SIG_ERR ((__sighandler_t) -1) /* Error return. */ ++#define SIG_DFL ((__sighandler_t) 0) /* Default action. */ ++#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ ++ ++#define SIG_CATCH ((__sighandler_t) 2) /* FreeBSD specific ? */ ++#define SIG_HOLD ((__sighandler_t) 3) /* Add signal to hold mask. */ ++ ++/* Signals. */ ++#define SIGHUP 1 /* Hangup (POSIX). */ ++#define SIGINT 2 /* Interrupt (ANSI). */ ++#define SIGQUIT 3 /* Quit (POSIX). */ ++#define SIGILL 4 /* Illegal instruction (ANSI). */ ++#define SIGABRT SIGIOT /* Abort (ANSI). */ ++#define SIGTRAP 5 /* Trace trap (POSIX). */ ++#define SIGIOT 6 /* IOT trap (4.2 BSD). */ ++#define SIGEMT 7 /* EMT trap (4.2 BSD). */ ++#define SIGFPE 8 /* Floating-point exception (ANSI). */ ++#define SIGKILL 9 /* Kill, unblockable (POSIX). */ ++#define SIGBUS 10 /* Bus error (4.2 BSD). */ ++#define SIGSEGV 11 /* Segmentation violation (ANSI). */ ++#define SIGSYS 12 /* Bad argument to system call (4.2 BSD). */ ++#define SIGPIPE 13 /* Broken pipe (POSIX). */ ++#define SIGALRM 14 /* Alarm clock (POSIX). */ ++#define SIGTERM 15 /* Termination (ANSI). */ ++#define SIGURG 16 /* Urgent condition on socket (4.2 BSD). */ ++#define SIGSTOP 17 /* Stop, unblockable (POSIX). */ ++#define SIGTSTP 18 /* Keyboard stop (POSIX). */ ++#define SIGCONT 19 /* Continue (POSIX). */ ++#define SIGCHLD 20 /* Child status has changed (POSIX). */ ++#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ ++#define SIGTTIN 21 /* Background read from tty (POSIX). */ ++#define SIGTTOU 22 /* Background write to tty (POSIX). */ ++#define SIGIO 23 /* I/O now possible (4.2 BSD). */ ++#define SIGPOLL SIGIO /* Pollable event occurred (System V). */ ++#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */ ++#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */ ++#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */ ++#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */ ++#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ ++#define SIGINFO 29 /* Information request (4.4 BSD). */ ++#define SIGUSR1 30 /* User-defined signal 1 (POSIX). */ ++#define SIGUSR2 31 /* User-defined signal 2 (POSIX). */ ++ ++#define _NSIG 129 /* Biggest signal number + 1 ++ (including real-time signals). */ ++ ++#define SIGRTMIN (__libc_current_sigrtmin ()) ++#define SIGRTMAX (__libc_current_sigrtmax ()) ++ ++/* These are the hard limits of the kernel. These values should not be ++ used directly at user level. */ ++#define __SIGRTMIN 65 /* be in sync with FreeBSD kernel */ ++#define __SIGRTMAX 126 /* be in sync with FreeBSD kernel */ ++ ++#endif /* included. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sigset.h +@@ -0,0 +1,140 @@ ++/* __sig_atomic_t, __sigset_t, and related definitions. FreeBSD version. ++ Copyright (C) 1994-1996, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SIGSET_H_types ++# define _SIGSET_H_types 1 ++ ++typedef int __sig_atomic_t; ++ ++/* A `sigset_t' has a bit for each signal. */ ++__extension__ typedef struct ++ { ++ __extension__ union ++ { ++ unsigned int __sigbits[4]; ++ unsigned int __bits[4]; ++ }; ++ } __sigset_t; ++ ++#endif ++ ++ ++/* We only want to define these functions if was actually ++ included; otherwise we were included just to define the types. Since we ++ are namespace-clean, it wouldn't hurt to define extra macros. But ++ trouble can be caused by functions being defined (e.g., any global ++ register vars declared later will cause compilation errors). */ ++ ++#if !defined _SIGSET_H_fns && defined _SIGNAL_H ++# define _SIGSET_H_fns 1 ++ ++# ifndef _EXTERN_INLINE ++# define _EXTERN_INLINE __extern_inline ++# endif ++ ++/* Return a mask that includes the bit for SIG only. */ ++# define __sigmask(sig) ((unsigned int) 1 << ((sig) - 1) % 32) ++ ++/* Return the word index for SIG. */ ++# define __sigword(sig) (((sig) - 1) >> 5) ++ ++# if defined __GNUC__ && __GNUC__ >= 2 ++# define __sigemptyset(set) \ ++ (__extension__ ({ sigset_t *__set = (set); \ ++ __set->__sigbits[0] = 0; __set->__sigbits[1] = 0; \ ++ __set->__sigbits[2] = 0; __set->__sigbits[3] = 0; \ ++ 0; })) ++# define __sigfillset(set) \ ++ (__extension__ ({ sigset_t *__set = (set); \ ++ __set->__sigbits[0] = ~0; __set->__sigbits[1] = ~0; \ ++ __set->__sigbits[2] = ~0; __set->__sigbits[3] = ~0; \ ++ 0; })) ++ ++# ifdef __USE_GNU ++/* The POSIX does not specify for handling the whole signal set in one ++ command. This is often wanted and so we define three more functions ++ here. */ ++# define __sigisemptyset(set) \ ++ (__extension__ ({ const sigset_t *__set = (set); \ ++ __set->__sigbits[0] == 0 \ ++ && __set->__sigbits[1] == 0 \ ++ && __set->__sigbits[2] == 0 \ ++ && __set->__sigbits[3] == 0; })) ++# define __sigandset(dest, left, right) \ ++ (__extension__ ({ sigset_t *__dest = (dest); \ ++ const sigset_t *__left = (left); \ ++ const sigset_t *__right = (right); \ ++ __dest->__sigbits[0] = \ ++ __left->__sigbits[0] & __right->__sigbits[0]; \ ++ __dest->__sigbits[1] = \ ++ __left->__sigbits[1] & __right->__sigbits[1]; \ ++ __dest->__sigbits[2] = \ ++ __left->__sigbits[2] & __right->__sigbits[2]; \ ++ __dest->__sigbits[3] = \ ++ __left->__sigbits[3] & __right->__sigbits[3]; \ ++ 0; })) ++# define __sigorset(dest, left, right) \ ++ (__extension__ ({ sigset_t *__dest = (dest); \ ++ const sigset_t *__left = (left); \ ++ const sigset_t *__right = (right); \ ++ __dest->__sigbits[0] = \ ++ __left->__sigbits[0] | __right->__sigbits[0]; \ ++ __dest->__sigbits[1] = \ ++ __left->__sigbits[1] | __right->__sigbits[1]; \ ++ __dest->__sigbits[2] = \ ++ __left->__sigbits[2] | __right->__sigbits[2]; \ ++ __dest->__sigbits[3] = \ ++ __left->__sigbits[3] | __right->__sigbits[3]; \ ++ 0; })) ++# endif ++# endif ++ ++/* These functions needn't check for a bogus signal number -- error ++ checking is done in the non __ versions. */ ++ ++extern int __sigismember (__const __sigset_t *, int); ++extern int __sigaddset (__sigset_t *, int); ++extern int __sigdelset (__sigset_t *, int); ++ ++# ifdef __USE_EXTERN_INLINES ++ ++_EXTERN_INLINE int ++__sigismember (__const __sigset_t *__set, int __sig) ++{ ++ return (__set->__sigbits[__sigword (__sig)] & __sigmask (__sig) ? 1 : 0); ++} ++ ++_EXTERN_INLINE int ++__sigaddset (__sigset_t *__set, int __sig) ++{ ++ __set->__sigbits[__sigword (__sig)] |= __sigmask (__sig); ++ return 0; ++} ++ ++_EXTERN_INLINE int ++__sigdelset (__sigset_t *__set, int __sig) ++{ ++ __set->__sigbits[__sigword (__sig)] &= ~__sigmask (__sig); ++ return 0; ++} ++ ++# endif ++ ++ ++#endif /* ! _SIGSET_H_fns. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/socket.h +@@ -0,0 +1,388 @@ ++/* System-specific socket constants and types. FreeBSD version. ++ Copyright (C) 1991-1992,1994-1999,2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef __BITS_SOCKET_H ++#define __BITS_SOCKET_H 1 ++ ++#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H ++# error "Never include directly; use instead." ++#endif ++ ++#define __need_size_t ++#define __need_NULL ++#include ++ ++#include /* XXX Is this allowed? */ ++#include ++ ++/* Type for length arguments in socket calls. */ ++#ifndef __socklen_t_defined ++typedef __socklen_t socklen_t; ++# define __socklen_t_defined ++#endif ++ ++ ++/* Types of sockets. */ ++enum __socket_type ++{ ++ SOCK_STREAM = 1, /* Sequenced, reliable, connection-based ++ byte streams. */ ++#define SOCK_STREAM SOCK_STREAM ++ SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams ++ of fixed maximum length. */ ++#define SOCK_DGRAM SOCK_DGRAM ++ SOCK_RAW = 3, /* Raw protocol interface. */ ++#define SOCK_RAW SOCK_RAW ++ SOCK_RDM = 4, /* Reliably-delivered messages. */ ++#define SOCK_RDM SOCK_RDM ++ SOCK_SEQPACKET = 5 /* Sequenced, reliable, connection-based, ++ datagrams of fixed maximum length. */ ++#define SOCK_SEQPACKET SOCK_SEQPACKET ++}; ++ ++/* Protocol families. */ ++#define PF_UNSPEC 0 /* Unspecified. */ ++#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ ++#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ ++#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ ++#define PF_INET 2 /* IP protocol family. */ ++#define PF_IMPLINK 3 /* ARPAnet IMP protocol. */ ++#define PF_PUP 4 /* PUP protocols. */ ++#define PF_CHAOS 5 /* MIT Chaos protocols. */ ++#define PF_NS 6 /* Xerox NS protocols. */ ++#define PF_ISO 7 /* ISO protocols. */ ++#define PF_OSI PF_ISO ++#define PF_ECMA 8 /* ECMA protocols. */ ++#define PF_DATAKIT 9 /* AT&T Datakit protocols. */ ++#define PF_CCITT 10 /* CCITT protocols (X.25 et al). */ ++#define PF_SNA 11 /* IBM SNA protocol. */ ++#define PF_DECnet 12 /* DECnet protocols. */ ++#define PF_DLI 13 /* Direct data link interface. */ ++#define PF_LAT 14 /* DEC Local Area Transport protocol. */ ++#define PF_HYLINK 15 /* NSC Hyperchannel protocol. */ ++#define PF_APPLETALK 16 /* Don't use this. */ ++#define PF_ROUTE 17 /* Internal Routing Protocol. */ ++#define PF_LINK 18 /* Link layer interface. */ ++#define PF_XTP 19 /* eXpress Transfer Protocol (no AF). */ ++#define PF_COIP 20 /* Connection-oriented IP, aka ST II. */ ++#define PF_CNT 21 /* Computer Network Technology. */ ++#define PF_RTIP 22 /* Help Identify RTIP packets. **/ ++#define PF_IPX 23 /* Novell Internet Protocol. */ ++#define PF_SIP 24 /* Simple Internet Protocol. */ ++#define PF_PIP 25 /* Help Identify PIP packets. */ ++#define PF_ISDN 26 /* Integrated Services Digital Network. */ ++#define PF_KEY 27 /* Internal key-management function. */ ++#define PF_INET6 28 /* IP version 6. */ ++#define PF_NATM 29 /* Native ATM access. */ ++#define PF_ATM 30 /* ATM. */ ++#define PF_HDRCMPLT 31 /* Used by BPF to not rewrite headers in ++ interface output routine. */ ++#define PF_NETGRAPH 32 /* Netgraph sockets. */ ++#define PF_MAX 33 ++ ++/* Address families. */ ++#define AF_UNSPEC PF_UNSPEC ++#define AF_LOCAL PF_LOCAL ++#define AF_UNIX PF_UNIX ++#define AF_FILE PF_FILE ++#define AF_INET PF_INET ++#define AF_IMPLINK PF_IMPLINK ++#define AF_PUP PF_PUP ++#define AF_CHAOS PF_CHAOS ++#define AF_NS PF_NS ++#define AF_ISO PF_ISO ++#define AF_OSI PF_OSI ++#define AF_ECMA PF_ECMA ++#define AF_DATAKIT PF_DATAKIT ++#define AF_CCITT PF_CCITT ++#define AF_SNA PF_SNA ++#define AF_DECnet PF_DECnet ++#define AF_DLI PF_DLI ++#define AF_LAT PF_LAT ++#define AF_HYLINK PF_HYLINK ++#define AF_APPLETALK PF_APPLETALK ++#define AF_ROUTE PF_ROUTE ++#define AF_LINK PF_LINK ++#define pseudo_AF_XTP PF_XTP ++#define AF_COIP PF_COIP ++#define AF_CNT PF_CNT ++#define pseudo_AF_RTIP PF_RTIP ++#define AF_IPX PF_IPX ++#define AF_SIP PF_SIP ++#define pseudo_AF_PIP PF_PIP ++#define AF_ISDN PF_ISDN ++#define AF_E164 AF_ISDN /* CCITT E.164 recommendation. */ ++#define pseudo_AF_KEY PF_KEY ++#define AF_INET6 PF_INET6 ++#define AF_NATM PF_NATM ++#define AF_ATM PF_ATM ++#define pseudo_AF_HDRCMPLT PF_HDRCMPLT ++#define AF_NETGRAPH PF_NETGRAPH ++#define AF_MAX PF_MAX ++ ++/* Maximum queue length specifiable by listen. */ ++#define SOMAXCONN 128 /* 5 on the original 4.4 BSD. */ ++ ++/* Get the definition of the macro to define the common sockaddr members. */ ++#include ++ ++/* Structure describing a generic socket address. */ ++struct sockaddr ++ { ++ __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ ++ char sa_data[14]; /* Address data. */ ++ }; ++ ++ ++/* Structure large enough to hold any socket address (with the historical ++ exception of AF_UNIX). We reserve 128 bytes. */ ++#if ULONG_MAX > 0xffffffff ++# define __ss_aligntype __uint64_t ++#else ++# define __ss_aligntype __uint32_t ++#endif ++#define _SS_SIZE 128 ++#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype))) ++ ++struct sockaddr_storage ++ { ++ __SOCKADDR_COMMON (ss_); /* Address family, etc. */ ++ __ss_aligntype __ss_align; /* Force desired alignment. */ ++ char __ss_padding[_SS_PADSIZE]; ++ }; ++ ++ ++/* Bits in the FLAGS argument to `send', `recv', et al. */ ++enum ++ { ++ MSG_OOB = 0x01, /* Process out-of-band data. */ ++#define MSG_OOB MSG_OOB ++ MSG_PEEK = 0x02, /* Peek at incoming messages. */ ++#define MSG_PEEK MSG_PEEK ++ MSG_DONTROUTE = 0x04, /* Don't use local routing. */ ++#define MSG_DONTROUTE MSG_DONTROUTE ++ MSG_EOR = 0x08, /* Data completes record. */ ++#define MSG_EOR MSG_EOR ++ MSG_TRUNC = 0x10, /* Data discarded before delivery. */ ++#define MSG_TRUNC MSG_TRUNC ++ MSG_CTRUNC = 0x20, /* Control data lost before delivery. */ ++#define MSG_CTRUNC MSG_CTRUNC ++ MSG_WAITALL = 0x40, /* Wait for full request or error. */ ++#define MSG_WAITALL MSG_WAITALL ++ MSG_DONTWAIT = 0x80, /* This message should be nonblocking. */ ++#define MSG_DONTWAIT MSG_DONTWAIT ++ MSG_EOF = 0x100, /* Data completes connection. */ ++#define MSG_EOF MSG_EOF ++ MSG_NOTIFICATION = 0x2000,/* SCTP notification */ ++#define MSG_NOTIFICATION MSG_NOTIFICATION ++ MSG_NBIO = 0x4000,/*FIONBIO mode, used by fifofs */ ++#define MSG_NBIO MSG_NBIO ++ MSG_COMPAT = 0x8000,/* Used in sendit(). */ ++#define MSG_COMPAT MSG_COMPAT ++ MSG_NOSIGNAL = 0x20000 /* do not generate SIGPIPE on EOF */ ++#define MSG_NOSIGNAL MSG_NOSIGNAL ++ }; ++ ++ ++/* Structure describing messages sent by ++ `sendmsg' and received by `recvmsg'. */ ++struct msghdr ++ { ++ void *msg_name; /* Address to send to/receive from. */ ++ socklen_t msg_namelen; /* Length of address data. */ ++ ++ struct iovec *msg_iov; /* Vector of data to send/receive into. */ ++ int msg_iovlen; /* Number of elements in the vector. */ ++ ++ void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ ++ socklen_t msg_controllen; /* Ancillary data buffer length. */ ++ ++ int msg_flags; /* Flags in received message. */ ++ }; ++ ++/* Structure used for storage of ancillary data object information. */ ++struct cmsghdr ++ { ++ socklen_t cmsg_len; /* Length of data in cmsg_data plus length ++ of cmsghdr structure. */ ++ int cmsg_level; /* Originating protocol. */ ++ int cmsg_type; /* Protocol specific type. */ ++#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L ++ __extension__ unsigned char __cmsg_data __flexarr __attribute__ ((aligned (__alignof__(size_t)))); /* Ancillary data. */ ++#endif ++ }; ++ ++#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) ++ ++#define CMSG_FIRSTHDR(mhdr) \ ++ ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ ++ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) ++ ++#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ ++ & (size_t) ~(sizeof (size_t) - 1)) ++#define CMSG_SPACE(len) (CMSG_ALIGN (len) \ ++ + CMSG_ALIGN (sizeof (struct cmsghdr))) ++#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) ++ ++/* Ancillary data object manipulation macros. */ ++#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L ++# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) ++#else ++# define CMSG_DATA(cmsg) ((unsigned char *) (cmsg) + CMSG_ALIGN(sizeof (struct cmsghdr))) ++#endif ++ ++extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, ++ struct cmsghdr *__cmsg) __THROW; ++#ifdef __USE_EXTERN_INLINES ++# ifndef _EXTERN_INLINE ++# define _EXTERN_INLINE __extern_inline ++# endif ++_EXTERN_INLINE struct cmsghdr * ++__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) ++{ ++ if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) ++ /* The kernel header does this so there may be a reason. */ ++ return 0; ++ ++ __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg ++ + CMSG_ALIGN (__cmsg->cmsg_len)); ++ if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control ++ + __mhdr->msg_controllen) ++ || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) ++ > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) ++ /* No more entries. */ ++ return 0; ++ return __cmsg; ++} ++#endif /* Use `extern inline'. */ ++ ++/* Socket level message types. */ ++enum ++ { ++ SCM_RIGHTS = 0x01, /* Access rights (array of int). */ ++#define SCM_RIGHTS SCM_RIGHTS ++ SCM_TIMESTAMP = 0x02, /* Timestamp (struct timeval). */ ++#define SCM_TIMESTAMP SCM_TIMESTAMP ++ SCM_CREDS = 0x03 /* Process creds (struct cmsgcred). */ ++#define SCM_CREDS SCM_CREDS ++ }; ++ ++/* Unfortunately, BSD practice dictates this structure be of fixed size. ++ If there are more than CMGROUP_MAX groups, the list is truncated. ++ (On GNU systems, the `cmcred_euid' field is just the first in the ++ list of effective UIDs.) */ ++#define CMGROUP_MAX 16 ++ ++/* Structure delivered by SCM_CREDS. This describes the identity of the ++ sender of the data simultaneously received on the socket. By BSD ++ convention, this is included only when a sender on a AF_LOCAL socket ++ sends cmsg data of this type and size; the sender's structure is ++ ignored, and the system fills in the various IDs of the sender process. */ ++struct cmsgcred ++ { ++ __pid_t cmcred_pid; ++ __uid_t cmcred_uid; ++ __uid_t cmcred_euid; ++ __gid_t cmcred_gid; ++ short cmcred_ngroups; ++ __gid_t cmcred_groups[CMGROUP_MAX]; ++ }; ++ ++/* Protocol number used to manipulate socket-level options ++ with `getsockopt' and `setsockopt'. */ ++#define SOL_SOCKET 0xffff ++ ++/* Socket-level options for `getsockopt' and `setsockopt'. */ ++enum ++ { ++ SO_DEBUG = 0x0001, /* Record debugging information. */ ++#define SO_DEBUG SO_DEBUG ++ SO_ACCEPTCONN = 0x0002, /* Accept connections on socket. */ ++#define SO_ACCEPTCONN SO_ACCEPTCONN ++ SO_REUSEADDR = 0x0004, /* Allow reuse of local addresses. */ ++#define SO_REUSEADDR SO_REUSEADDR ++ SO_KEEPALIVE = 0x0008, /* Keep connections alive and send ++ SIGPIPE when they die. */ ++#define SO_KEEPALIVE SO_KEEPALIVE ++ SO_DONTROUTE = 0x0010, /* Don't do local routing. */ ++#define SO_DONTROUTE SO_DONTROUTE ++ SO_BROADCAST = 0x0020, /* Allow transmission of ++ broadcast messages. */ ++#define SO_BROADCAST SO_BROADCAST ++ SO_USELOOPBACK = 0x0040, /* Use the software loopback to avoid ++ hardware use when possible. */ ++#define SO_USELOOPBACK SO_USELOOPBACK ++ SO_LINGER = 0x0080, /* Block on close of a reliable ++ socket to transmit pending data. */ ++#define SO_LINGER SO_LINGER ++ SO_OOBINLINE = 0x0100, /* Receive out-of-band data in-band. */ ++#define SO_OOBINLINE SO_OOBINLINE ++ SO_REUSEPORT = 0x0200, /* Allow local address and port reuse. */ ++#define SO_REUSEPORT SO_REUSEPORT ++ SO_TIMESTAMP = 0x0400, /* Timestamp received dgram traffic. */ ++#define SO_TIMESTAMP SO_TIMESTAMP ++ SO_SNDBUF = 0x1001, /* Send buffer size. */ ++#define SO_SNDBUF SO_SNDBUF ++ SO_RCVBUF = 0x1002, /* Receive buffer. */ ++#define SO_RCVBUF SO_RCVBUF ++ SO_SNDLOWAT = 0x1003, /* Send low-water mark. */ ++#define SO_SNDLOWAT SO_SNDLOWAT ++ SO_RCVLOWAT = 0x1004, /* Receive low-water mark. */ ++#define SO_RCVLOWAT SO_RCVLOWAT ++ SO_SNDTIMEO = 0x1005, /* Send timeout. */ ++#define SO_SNDTIMEO SO_SNDTIMEO ++ SO_RCVTIMEO = 0x1006, /* Receive timeout. */ ++#define SO_RCVTIMEO SO_RCVTIMEO ++ SO_ERROR = 0x1007, /* Get and clear error status. */ ++#define SO_ERROR SO_ERROR ++ SO_STYLE = 0x1008, /* Get socket connection style. */ ++#define SO_STYLE SO_STYLE ++ SO_TYPE = SO_STYLE /* Compatible name for SO_STYLE. */ ++#define SO_TYPE SO_TYPE ++ }; ++ ++/* Socket options. */ ++#define LOCAL_PEERCRED 0x001 /* retrieve peer credentials */ ++#define LOCAL_CREDS 0x002 /* pass credentials to receiver */ ++#define LOCAL_CONNWAIT 0x004 /* connects block until accepted */ ++ ++/* Structure used to manipulate the SO_LINGER option. */ ++struct linger ++ { ++ int l_onoff; /* Nonzero to linger on close. */ ++ int l_linger; /* Time to linger. */ ++ }; ++ ++ ++#ifdef __USE_BSD ++ ++struct sf_hdtr; ++ ++__BEGIN_DECLS ++ ++extern int bsd_sendfile (int __in_fd, int __out_sock, ++ __off_t __in_offset, size_t __nbytes, ++ struct sf_hdtr *__hdtr, __off_t *__sockbytes, ++ int __flags) __THROW; ++ ++__END_DECLS ++ ++#endif /* Use BSD */ ++ ++#endif /* bits/socket.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/stat.h +@@ -0,0 +1,219 @@ ++/* Copyright (C) 1992, 1996-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_STAT_H && !defined _FCNTL_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_STAT_H ++#define _BITS_STAT_H 1 ++ ++/* This structure needs to be defined in accordance with the ++ implementation of __stat, __fstat, and __lstat. */ ++ ++#include ++ ++/* Versions of the 'struct stat' data structure. */ ++#define _STAT_VER_ostat 0 /* 'struct ostat' in /usr/src/sys/sys/stat.h */ ++#define _STAT_VER_stat 1 /* 'struct stat' in /usr/src/sys/sys/stat.h */ ++#define _STAT_VER_nstat 2 /* 'struct nstat' in /usr/src/sys/sys/stat.h */ ++#define _STAT_VER_gstat 3 /* glibc's 'struct stat' without LFS */ ++/* By default we use _STAT_VER_gstat, but we support also _STAT_VER_stat */ ++#define _STAT_VER _STAT_VER_gstat ++ ++/* Structure describing file characteristics. */ ++struct stat ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++#ifndef __USE_FILE_OFFSET64 ++ __ino_t st_ino; /* File serial number. */ ++#else ++ __ino64_t st_ino; /* File serial number. */ ++#endif ++ ++ __mode_t st_mode; /* File mode. */ ++ __mode_t __pad_mode; /* __mode_t is 16 bit, fill to 32 bit to retain previous ABI */ ++ __nlink_t st_nlink; /* Link count. */ ++ __nlink_t __pad_nlink; /* __nlink_t is 16 bit, fill to 32 bit to retain previous ABI */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++#if defined __USE_MISC || defined __USE_XOPEN2K8 ++ /* Nanosecond resolution timestamps are stored in a format ++ equivalent to 'struct timespec'. This is the type used ++ whenever possible but the Unix namespace rules do not allow the ++ identifier 'timespec' to appear in the header. ++ Therefore we have to handle the use of this header in strictly ++ standard-compliant sources special. */ ++ struct timespec st_atim; /* Time of last access. */ ++ struct timespec st_mtim; /* Time of last modification. */ ++ struct timespec st_ctim; /* Time of last status change. */ ++# define st_atime st_atim.tv_sec /* Backward compatibility. */ ++# define st_mtime st_mtim.tv_sec ++# define st_ctime st_ctim.tv_sec ++#else ++ __time_t st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ __time_t st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ __time_t st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++#endif ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __quad_t __unused1[2]; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct stat64 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino64_t st_ino; /* File serial number. */ ++ ++ __mode_t st_mode; /* File mode. */ ++ __mode_t __pad_mode; /* __mode_t is 16 bit, fill to 32 bit to retain previous ABI */ ++ __nlink_t st_nlink; /* Link count. */ ++ __nlink_t __pad_nlink; /* __nlink_t is 16 bit, fill to 32 bit to retain previous ABI */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++#if defined __USE_MISC || defined __USE_XOPEN2K8 ++ /* Nanosecond resolution timestamps are stored in a format ++ equivalent to 'struct timespec'. This is the type used ++ whenever possible but the Unix namespace rules do not allow the ++ identifier 'timespec' to appear in the header. ++ Therefore we have to handle the use of this header in strictly ++ standard-compliant sources special. */ ++ struct timespec st_atim; /* Time of last access. */ ++ struct timespec st_mtim; /* Time of last modification. */ ++ struct timespec st_ctim; /* Time of last status change. */ ++# define st_atime st_atim.tv_sec /* Backward compatibility. */ ++# define st_mtime st_mtim.tv_sec ++# define st_ctime st_ctim.tv_sec ++#else ++ __time_t st_atime; /* Time of last access. */ ++ long int st_atimensec; /* Nanoseconds of last access. */ ++ __time_t st_mtime; /* Time of last modification. */ ++ long int st_mtimensec; /* Nanoseconds of last modification. */ ++ __time_t st_ctime; /* Time of last status change. */ ++ long int st_ctimensec; /* Nanoseconds of last status change. */ ++#endif ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __quad_t __unused1[2]; ++ }; ++#endif ++ ++/* Encoding of the file mode. These are the standard Unix values, ++ but POSIX.1 does not specify what values should be used. */ ++ ++#define __S_IFMT 0170000 /* These bits determine file type. */ ++ ++/* File types. */ ++#define __S_IFDIR 0040000 /* Directory. */ ++#define __S_IFCHR 0020000 /* Character device. */ ++#define __S_IFBLK 0060000 /* Block device. */ ++#define __S_IFREG 0100000 /* Regular file. */ ++#define __S_IFLNK 0120000 /* Symbolic link. */ ++#define __S_IFSOCK 0140000 /* Socket. */ ++#define __S_IFWHT 0160000 /* Whiteout. */ ++#define __S_IFIFO 0010000 /* FIFO. */ ++ ++/* POSIX.1b objects. */ ++#define __S_TYPEISMQ(buf) 0 ++#define __S_TYPEISSEM(buf) 0 ++#define __S_TYPEISSHM(buf) 0 ++ ++/* Protection bits. */ ++ ++#define __S_ISUID 04000 /* Set user ID on execution. */ ++#define __S_ISGID 02000 /* Set group ID on execution. */ ++#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ ++#define __S_IREAD 0400 /* Read by owner. */ ++#define __S_IWRITE 0200 /* Write by owner. */ ++#define __S_IEXEC 0100 /* Execute by owner. */ ++ ++#ifdef __USE_BSD ++ ++/* Definitions of flags stored in file flags word. */ ++ ++/* Super-user and owner changeable flags. */ ++# define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */ ++# define UF_NODUMP 0x00000001 /* do not dump file */ ++# define UF_IMMUTABLE 0x00000002 /* file may not be changed */ ++# define UF_APPEND 0x00000004 /* writes to file may only append */ ++# define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */ ++# define UF_NOUNLINK 0x00000010 /* file may not be removed or renamed */ ++ ++/* Super-user changeable flags. */ ++# define SF_SETTABLE 0xffff0000 /* mask of superuser changeable flags */ ++# define SF_ARCHIVED 0x00010000 /* file is archived */ ++# define SF_IMMUTABLE 0x00020000 /* file may not be changed */ ++# define SF_APPEND 0x00040000 /* writes to file may only append */ ++# define SF_NOUNLINK 0x00100000 /* file may not be removed or renamed */ ++# define SF_SNAPSHOT 0x00200000 /* snapshot inode */ ++ ++__BEGIN_DECLS ++ ++/* Set file flags for FILE to FLAGS. */ ++extern int chflags (__const char *__file, unsigned long int __flags) __THROW; ++ ++/* Set file flags of the file referred to by FD to FLAGS. */ ++extern int fchflags (int __fd, unsigned long int __flags) __THROW; ++ ++/* Set file flags for FILE to FLAGS without following symlinks. */ ++extern int lchflags(__const char *__file, int __flags); ++ ++/* Get device name in /dev with a device number of dev and a file type ++ matching the one encoded in type. */ ++extern char *devname(__dev_t dev, __mode_t type) __THROW; ++ ++/* Store at most BUFLEN characters of the device name in /dev with a ++ device number of dev and a file type matching the one encoded in type. */ ++extern char *devname_r(__dev_t dev, __mode_t type, char *buf, int buflen) __THROW; ++ ++__END_DECLS ++ ++#endif /* __USE_BSD */ ++ ++#endif /* bits/stat.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/stat16.h +@@ -0,0 +1,56 @@ ++/* Copyright (C) 2002, 2006, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This structure corresponds to the standard FreeBSD 'struct stat' ++ (i.e. _STAT_VER_stat), and is used by the stat() system call family. */ ++ ++struct stat16 ++ { ++ __dev_t st_dev; /* Device containing the file. */ ++ __ino_t st_ino; /* File serial number. */ ++ ++ __uint16_t st_mode; /* File mode. */ ++ __uint16_t st_nlink; /* Link count. */ ++ ++ __uid_t st_uid; /* User ID of the file's owner. */ ++ __gid_t st_gid; /* Group ID of the file's group. */ ++ ++ __dev_t st_rdev; /* Device number, if device. */ ++ ++ struct timespec st_atimespec; /* time of last access */ ++ struct timespec st_mtimespec; /* time of last data modification */ ++ struct timespec st_ctimespec; /* time of last file status change */ ++ ++ __off_t st_size; /* Size of file, in bytes. */ ++ ++ __blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ ++ ++ __blksize_t st_blksize; /* Optimal block size for I/O. */ ++ ++ __uint32_t st_flags; /* User defined flags. */ ++ ++ __uint32_t st_gen; /* Generation number. */ ++ ++ __uint32_t __unused1; ++ ++ __time_t st_birthtime; /* Time of file creation. */ ++ long int st_birthtimensec; /* Nanoseconds of file creation. */ ++ ++#define _BIRTH_PADSIZE (16 - sizeof(__time_t) - sizeof (long int)) ++ char __birth_padding[_BIRTH_PADSIZE]; ++ }; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statfs.h +@@ -0,0 +1,91 @@ ++/* Definition of `struct statfs', information about a filesystem. ++ Copyright (C) 1996-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_STATFS_H ++#define _BITS_STATFS_H 1 ++ ++#if !defined _SYS_STATFS_H && !defined _SYS_MOUNT_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++struct statfs ++ { ++ unsigned long f_version; ++ unsigned long f_bsize; ++ unsigned long f_iosize; ++#ifndef __USE_FILE_OFFSET64 ++ __fsblkcnt_t f_blocks; ++ __fsblkcnt_t f_bfree; ++ __fsblkcnt_t f_bavail; ++ __fsfilcnt_t f_files; ++ __fsfilcnt_t f_ffree; ++#else ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++#endif ++ __fsid_t f_fsid; ++ __uid_t f_owner; ++ int f_type; ++ int f_flags; ++ unsigned long int f_syncwrites; ++ unsigned long int f_asyncwrites; ++ char f_fstypename[16]; ++ char f_mntonname[80]; ++ unsigned long int f_syncreads; ++ unsigned long int f_asyncreads; ++ unsigned short f_namemax; ++ char f_mntfromname[80]; ++ short __unused3; ++ long __unused4[2]; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct statfs64 ++ { ++ unsigned long f_version; ++ unsigned long f_bsize; ++ unsigned long f_iosize; ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++ __fsid_t f_fsid; ++ __uid_t f_owner; ++ int f_type; ++ int f_flags; ++ unsigned long int f_syncwrites; ++ unsigned long int f_asyncwrites; ++ char f_fstypename[16]; ++ char f_mntonname[80]; ++ unsigned long int f_syncreads; ++ unsigned long int f_asyncreads; ++ unsigned short f_namemax; ++ char f_mntfromname[80]; ++ short __unused3; ++ long __unused4[2]; ++ }; ++#endif ++ ++#endif /* _BITS_STATFS_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/statvfs.h +@@ -0,0 +1,97 @@ ++/* Definition of `struct statvfs', information about a filesystem. ++ Copyright (C) 1998, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_STATVFS_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++ ++#if __WORDSIZE == 32 ++#define _STATVFSBUF_F_UNUSED ++#endif ++ ++struct statvfs ++ { ++ unsigned long int f_bsize; ++ unsigned long int f_frsize; ++#ifndef __USE_FILE_OFFSET64 ++ __fsblkcnt_t f_blocks; ++ __fsblkcnt_t f_bfree; ++ __fsblkcnt_t f_bavail; ++ __fsfilcnt_t f_files; ++ __fsfilcnt_t f_ffree; ++ __fsfilcnt_t f_favail; ++#else ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++ __fsfilcnt64_t f_favail; ++#endif ++ unsigned long int f_fsid; ++#ifdef _STATVFSBUF_F_UNUSED ++ int __f_unused; ++#endif ++ unsigned long int f_flag; ++ unsigned long int f_namemax; ++ unsigned int f_spare[6]; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct statvfs64 ++ { ++ unsigned long int f_bsize; ++ unsigned long int f_frsize; ++ __fsblkcnt64_t f_blocks; ++ __fsblkcnt64_t f_bfree; ++ __fsblkcnt64_t f_bavail; ++ __fsfilcnt64_t f_files; ++ __fsfilcnt64_t f_ffree; ++ __fsfilcnt64_t f_favail; ++ unsigned long int f_fsid; ++#ifdef _STATVFSBUF_F_UNUSED ++ int __f_unused; ++#endif ++ unsigned long int f_flag; ++ unsigned long int f_namemax; ++ unsigned int f_spare[6]; ++ }; ++#endif ++ ++/* Definitions for the flag in `f_flag'. */ ++enum ++{ ++ ST_RDONLY = 1, /* Mount read-only. */ ++#define ST_RDONLY ST_RDONLY ++ ST_NOSUID = 2 /* Ignore suid and sgid bits. */ ++#define ST_NOSUID ST_NOSUID ++#ifdef __USE_GNU ++ , ++ ST_NODEV = 4, /* Disallow access to device special files. */ ++# define ST_NODEV ST_NODEV ++ ST_NOEXEC = 8, /* Disallow program execution. */ ++# define ST_NOEXEC ST_NOEXEC ++ ST_SYNCHRONOUS = 16, /* Writes are synced at once. */ ++# define ST_SYNCHRONOUS ST_SYNCHRONOUS ++ ST_NOATIME = 0x10000000 /* Do not update access times. */ ++# define ST_NOATIME ST_NOATIME ++#endif /* Use GNU. */ ++}; +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/sys_errlist.h +@@ -0,0 +1,33 @@ ++/* Declare sys_errlist and sys_nerr, or don't. Compatibility (do) version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _STDIO_H ++# error "Never include directly; use instead." ++#endif ++ ++/* sys_errlist and sys_nerr are deprecated. Use strerror instead. */ ++ ++#ifdef __USE_BSD ++extern int sys_nerr; ++extern __const char *__const sys_errlist[]; ++#endif ++#ifdef __USE_GNU ++extern int _sys_nerr; ++extern __const char *__const _sys_errlist[]; ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/syslog-path.h +@@ -0,0 +1,31 @@ ++/* -- _PATH_LOG definition ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SYSLOG_H ++# error "Never include this file directly. Use instead" ++#endif ++ ++#ifndef _BITS_SYSLOG_PATH_H ++#define _BITS_SYSLOG_PATH_H 1 ++ ++/* On kFreeBSD, named pipes are not allowed in /dev (devfs), so we pick this ++ alternate path. */ ++#define _PATH_LOG "/var/run/log" ++ ++#endif /* bits/syslog-path.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/termios.h +@@ -0,0 +1,253 @@ ++/* termios type and macro definitions. FreeBSD version. ++ Copyright (C) 1993-1994,1996-1997,1999,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _TERMIOS_H ++# error "Never include directly; use instead." ++#endif ++ ++/* These macros are also defined in some files (with ++ numerically identical values), but this serves to shut up cpp's ++ complaining. */ ++#ifdef __USE_BSD ++ ++# ifdef MDMBUF ++# undef MDMBUF ++# endif ++# ifdef FLUSHO ++# undef FLUSHO ++# endif ++# ifdef PENDIN ++# undef PENDIN ++# endif ++ ++#endif /* __USE_BSD */ ++ ++#ifdef ECHO ++# undef ECHO ++#endif ++#ifdef TOSTOP ++# undef TOSTOP ++#endif ++#ifdef NOFLSH ++# undef NOFLSH ++#endif ++ ++ ++typedef unsigned char cc_t; ++typedef unsigned int speed_t; ++typedef unsigned int tcflag_t; ++ ++#define NCCS 20 ++struct termios ++ { ++ tcflag_t c_iflag; /* input mode flags */ ++ tcflag_t c_oflag; /* output mode flags */ ++ tcflag_t c_cflag; /* control mode flags */ ++ tcflag_t c_lflag; /* local mode flags */ ++ cc_t c_cc[NCCS]; /* control characters */ ++ speed_t c_ispeed; /* input speed */ ++ speed_t c_ospeed; /* output speed */ ++#define __ispeed c_ispeed ++#define __ospeed c_ospeed ++#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1 ++#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1 ++ }; ++ ++/* c_cc characters */ ++#define VEOF 0 ++#define VEOL 1 ++#define VEOL2 2 ++#define VERASE 3 ++#define VWERASE 4 ++#define VKILL 5 ++#define VREPRINT 6 ++#ifdef __USE_BSD ++# define VERASE2 7 ++#endif ++#define VINTR 8 ++#define VQUIT 9 ++#define VSUSP 10 ++#ifdef __USE_BSD ++# define VDSUSP 11 ++#endif ++#define VSTART 12 ++#define VSTOP 13 ++#define VLNEXT 14 ++#define VDISCARD 15 ++#define VMIN 16 ++#define VTIME 17 ++#ifdef __USE_BSD ++# define VSTATUS 18 ++#endif ++ ++/* c_iflag bits */ ++#define IGNBRK 0000001 ++#define BRKINT 0000002 ++#define IGNPAR 0000004 ++#define PARMRK 0000010 ++#define INPCK 0000020 ++#define ISTRIP 0000040 ++#define INLCR 0000100 ++#define IGNCR 0000200 ++#define ICRNL 0000400 ++#define IXON 0001000 ++#define IXOFF 0002000 ++#define IXANY 0004000 ++#define IMAXBEL 0020000 ++ ++/* c_oflag bits */ ++#define OPOST (1 << 0) /* Perform output processing. */ ++#define ONLCR (1 << 1) /* Map NL to CR-NL on output. */ ++#if defined __USE_MISC || defined __USE_XOPEN ++# define TAB0 (0 << 2) /* no tab delay and expansion */ ++# define TAB3 (1 << 2) /* expand tabs to spaces */ ++# define TABDLY TAB3 /* tab delay mask */ ++# define OXTABS TAB3 ++# define XTABS TAB3 ++#endif ++#ifdef __USE_BSD ++# define ONOEOT (1 << 3) /* Discard EOT (^D) on output. */ ++#endif ++#define OCRNL (1 << 4) /* map CR to NL on output */ ++#define ONOCR (1 << 5) /* no CR output at column 0 */ ++#define ONLRET (1 << 6) /* NL performs CR function */ ++ ++/* c_cflag bit meaning */ ++#ifdef __USE_BSD ++# define CIGNORE (1 << 0) /* Ignore these control flags. */ ++#endif ++#define CSIZE (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask). */ ++#define CS5 (0 << 8) /* 5 bits per byte. */ ++#define CS6 (1 << 8) /* 6 bits per byte. */ ++#define CS7 (2 << 8) /* 7 bits per byte. */ ++#define CS8 (3 << 8) /* 8 bits per byte. */ ++#define CSTOPB (1 << 10) /* Two stop bits instead of one. */ ++#define CREAD (1 << 11) /* Enable receiver. */ ++#define PARENB (1 << 12) /* Parity enable. */ ++#define PARODD (1 << 13) /* Odd parity instead of even. */ ++#define HUPCL (1 << 14) /* Hang up on last close. */ ++#define CLOCAL (1 << 15) /* Ignore modem status lines. */ ++#ifdef __USE_BSD ++# define CCTS_OFLOW (1 << 16) /* CTS flow control of output. */ ++# define CRTS_IFLOW (1 << 17) /* RTS flow control of input. */ ++# define CRTSCTS (CCTS_OFLOW|CRTS_IFLOW) /* CTS/RTS flow control. */ ++# define CDTR_IFLOW (1 << 18) /* DTR flow control of input. */ ++# define CDSR_OFLOW (1 << 19) /* DSR flow control of output. */ ++# define CCAR_OFLOW (1 << 20) /* DCD flow control of output. */ ++# define MDMBUF (1 << 20) /* Carrier flow control of output. */ ++#endif ++ ++/* c_lflag bits */ ++#ifdef __USE_BSD ++# define ECHOKE (1 << 0) /* Visual erase for KILL. */ ++#endif ++#define _ECHOE (1 << 1) /* Visual erase for ERASE. */ ++#define ECHOE _ECHOE ++#define _ECHOK (1 << 2) /* Echo NL after KILL. */ ++#define ECHOK _ECHOK ++#define _ECHO (1 << 3) /* Enable echo. */ ++#define ECHO _ECHO ++#define _ECHONL (1 << 4) /* Echo NL even if ECHO is off. */ ++#define ECHONL _ECHONL ++#ifdef __USE_BSD ++# define ECHOPRT (1 << 5) /* Hardcopy visual erase. */ ++# define ECHOCTL (1 << 6) /* Echo control characters as ^X. */ ++#endif ++#define _ISIG (1 << 7) /* Enable signals. */ ++#define ISIG _ISIG ++#define _ICANON (1 << 8) /* Do erase and kill processing. */ ++#define ICANON _ICANON ++#ifdef __USE_BSD ++# define ALTWERASE (1 << 9) /* Alternate WERASE algorithm. */ ++#endif ++#define _IEXTEN (1 << 10) /* Enable DISCARD and LNEXT. */ ++#define IEXTEN _IEXTEN ++#define _EXTPROC (1 << 11) /* External processing. */ ++#define EXTPROC _EXTPROC ++#define _TOSTOP (1 << 22) /* Send SIGTTOU for background output. */ ++#define TOSTOP _TOSTOP ++#ifdef __USE_BSD ++# define FLUSHO (1 << 23) /* Output being flushed (state). */ ++# define NOKERNINFO (1 << 25) /* Disable VSTATUS. */ ++# define PENDIN (1 << 29) /* Retype pending input (state). */ ++#endif ++#define _NOFLSH (1 << 31) /* Disable flush after interrupt. */ ++#define NOFLSH _NOFLSH ++ ++ /* Input and output baud rates. */ ++#define B0 0 /* Hang up. */ ++#define B50 50 /* 50 baud. */ ++#define B75 75 /* 75 baud. */ ++#define B110 110 /* 110 baud. */ ++#define B134 134 /* 134.5 baud. */ ++#define B150 150 /* 150 baud. */ ++#define B200 200 /* 200 baud. */ ++#define B300 300 /* 300 baud. */ ++#define B600 600 /* 600 baud. */ ++#define B1200 1200 /* 1200 baud. */ ++#define B1800 1800 /* 1800 baud. */ ++#define B2400 2400 /* 2400 baud. */ ++#define B4800 4800 /* 4800 baud. */ ++#define B9600 9600 /* 9600 baud. */ ++#define B19200 19200 /* 19200 baud. */ ++#define B38400 38400 /* 38400 baud. */ ++#define B76800 76800 ++#ifdef __USE_MISC ++# define EXTA 19200 ++# define EXTB 38400 ++#endif ++#define B7200 7200 ++#define B14400 14400 ++#define B28800 28800 ++#define B57600 57600 ++#define B115200 115200 ++#define B230400 230400 ++#define B460800 460800 ++#define B500000 500000 ++#define B576000 576000 ++#define B921600 921600 ++#define B1000000 1000000 ++#define B1152000 1152000 ++#define B1500000 1500000 ++#define B2000000 2000000 ++#define B2500000 2500000 ++#define B3000000 3000000 ++#define B3500000 3500000 ++#define B4000000 4000000 ++#define __MAX_BAUD B4000000 ++ ++/* tcflow() and TCXONC use these */ ++#define TCOOFF 1 ++#define TCOON 2 ++#define TCIOFF 3 ++#define TCION 4 ++ ++/* tcflush() and TCFLSH use these */ ++#define TCIFLUSH 1 ++#define TCOFLUSH 2 ++#define TCIOFLUSH 3 ++ ++/* tcsetattr uses these */ ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 ++#ifdef __USE_BSD ++# define TCSASOFT 0x10 /* Flag: Don't alter hardware state. */ ++#endif ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/time.h +@@ -0,0 +1,98 @@ ++/* System-dependent timing definitions. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef __need_timeval ++# ifndef _BITS_TIME_H ++# define _BITS_TIME_H 1 ++ ++/* ISO/IEC 9899:1990 7.12.1: ++ The macro `CLOCKS_PER_SEC' is the number per second of the value ++ returned by the `clock' function. */ ++/* CAE XSH, Issue 4, Version 2: ++ The value of CLOCKS_PER_SEC is required to be 1 million on all ++ XSI-conformant systems. */ ++# define CLOCKS_PER_SEC 1000000l ++ ++# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K ++/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK ++ presents the real value for clock ticks per second for the system. */ ++# define CLK_TCK 128 ++# endif ++ ++# ifdef __USE_POSIX199309 ++/* Identifier for system-wide realtime clock. */ ++# define CLOCK_REALTIME 0 ++/* High-resolution timer from the CPU. */ ++# define CLOCK_PROCESS_CPUTIME_ID 2 ++/* Thread-specific CPU-time clock. */ ++# define CLOCK_THREAD_CPUTIME_ID 3 ++/* Monotonic system-wide clock. */ ++# define CLOCK_MONOTONIC 4 ++/* These are BSD specific clocks. */ ++# ifdef __USE_BSD ++# define CLOCK_VIRTUAL 1 ++# define CLOCK_PROF 2 ++# define CLOCK_UPTIME 5 /* FreeBSD-specific. */ ++# define CLOCK_UPTIME_PRECISE 7 /* FreeBSD-specific. */ ++# define CLOCK_UPTIME_FAST 8 /* FreeBSD-specific. */ ++# define CLOCK_REALTIME_PRECISE 9 /* FreeBSD-specific. */ ++# define CLOCK_REALTIME_FAST 10 /* FreeBSD-specific. */ ++# define CLOCK_MONOTONIC_PRECISE 11 /* FreeBSD-specific. */ ++# define CLOCK_MONOTONIC_FAST 12 /* FreeBSD-specific. */ ++# define CLOCK_SECOND 13 /* FreeBSD-specific. */ ++# endif ++ ++/* Flag to indicate time is absolute. */ ++# define TIMER_RELTIME 0 /* relative timer */ ++# define TIMER_ABSTIME 1 /* absolute timer */ ++# endif ++ ++ ++/* Getkerninfo clock information structure */ ++struct clockinfo ++ { ++ int hz; /* clock frequency */ ++ int tick; /* micro-seconds per hz tick */ ++ int spare; ++ int stathz; /* statistics clock frequency */ ++ int profhz; /* profiling clock frequency */ ++ }; ++ ++# endif /* bits/time.h */ ++#endif ++ ++#ifdef __need_timeval ++# undef __need_timeval ++# ifndef _STRUCT_TIMEVAL ++# define _STRUCT_TIMEVAL 1 ++# include ++ ++/* A time value that is accurate to the nearest ++ microsecond but also has a range of years. */ ++struct timeval ++ { ++ __time_t tv_sec; /* Seconds. */ ++ __suseconds_t tv_usec; /* Microseconds. */ ++ }; ++# endif /* struct timeval */ ++#endif /* need timeval */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/typesizes.h +@@ -0,0 +1,82 @@ ++/* bits/typesizes.h -- underlying types for *_t. kFreeBSD version. ++ Copyright (C) 2002, 2003, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_TYPES_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_TYPESIZES_H ++#define _BITS_TYPESIZES_H 1 ++ ++/* See for the meaning of these macros. This file exists so ++ that need not vary across different GNU platforms. */ ++ ++#define __DEV_T_TYPE __U32_TYPE ++#define __UID_T_TYPE __U32_TYPE ++#define __GID_T_TYPE __U32_TYPE ++#define __INO_T_TYPE __U32_TYPE ++#define __INO64_T_TYPE __UQUAD_TYPE ++#define __MODE_T_TYPE __U16_TYPE ++#define __NLINK_T_TYPE __U16_TYPE ++#define __OFF_T_TYPE __SQUAD_TYPE ++#define __OFF64_T_TYPE __SQUAD_TYPE ++#define __PID_T_TYPE __S32_TYPE ++#define __RLIM_T_TYPE __SQUAD_TYPE ++#define __RLIM64_T_TYPE __SQUAD_TYPE ++#define __BLKCNT_T_TYPE __SQUAD_TYPE ++#define __BLKCNT64_T_TYPE __SQUAD_TYPE ++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE ++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE ++#define __ID_T_TYPE __U32_TYPE ++#define __CLOCK_T_TYPE __S32_TYPE ++ ++/* ++ * This one is a bit tricky. It needs to match the size ++ * in the sys/${arch}/include/_types.h typedefs. ++ * ++ * However, for i386 and amd64 we started with __SLONGWORD_TYPE ++ * and we need to maintain ABI. Even if size is the same, using ++ * a different type may affect C++ ABI (this distinction is ++ * necessary to implement function overload), so it must stay ++ * with __SLONGWORD_TYPE. ++ */ ++#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) ++#define __TIME_T_TYPE __SLONGWORD_TYPE ++#else ++#define __TIME_T_TYPE __S64_TYPE ++#endif ++ ++#define __USECONDS_T_TYPE __U32_TYPE ++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE ++#define __DADDR_T_TYPE __SQUAD_TYPE ++#define __SWBLK_T_TYPE __S32_TYPE ++#define __KEY_T_TYPE __SLONGWORD_TYPE ++#define __CLOCKID_T_TYPE __S32_TYPE ++#define __TIMER_T_TYPE __S32_TYPE ++#define __BLKSIZE_T_TYPE __U32_TYPE ++#define __FSID_T_TYPE union { int __val[2]; int val[2]; } ++#define __SSIZE_T_TYPE __SWORD_TYPE ++ ++/* Number of descriptors that can fit in an `fd_set'. */ ++#define __FD_SETSIZE 1024 ++ ++ ++#endif /* bits/typesizes.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/uio.h +@@ -0,0 +1,55 @@ ++/* Copyright (C) 1996-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UIO_H && !defined _FCNTL_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_UIO_H ++#define _BITS_UIO_H 1 ++ ++#include ++ ++ ++/* `struct iovec' -- Structure describing a section of memory. */ ++ ++struct iovec ++{ ++ /* Starting address. */ ++ __ptr_t iov_base; ++ /* Length in bytes. */ ++ size_t iov_len; ++}; ++ ++/* Maximum number of 'struct iovec's that can be passed to a readv() or ++ writev() system call. For larger arrays of 'struct iovec', the libc ++ uses a single read() or write() call to guarantee atomicity. */ ++#define UIO_MAXIOV 1024 ++ ++#ifdef __USE_BSD ++enum uio_rw { UIO_READ, UIO_WRITE }; ++ ++/* Segment flag values. */ ++enum uio_seg { ++ UIO_USERSPACE, /* from user data space */ ++ UIO_SYSSPACE, /* from system space */ ++ UIO_NOCOPY /* don't copy, already in object */ ++}; ++#endif ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/utsname.h +@@ -0,0 +1,27 @@ ++/* Copyright (C) 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_UTSNAME_H ++# error "Never include directly; use instead." ++#endif ++ ++/* Length of the entries in 'struct utsname' is 32. */ ++#define _UTSNAME_LENGTH 32 ++ ++/* But the version entry is longer. */ ++#define _UTSNAME_VERSION_LENGTH 256 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/waitflags.h +@@ -0,0 +1,37 @@ ++/* Definitions of flag bits for `waitpid' et al. ++ Copyright (C) 1992, 1996-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_WAIT_H && !defined _STDLIB_H ++# error "Never include directly; use instead." ++#endif ++ ++ ++/* Bits in the third argument to `waitpid'. */ ++#define WNOHANG 1 /* Don't block waiting. */ ++#define WUNTRACED 2 /* Report status of stopped children. */ ++ ++/* Bits in the fourth argument to `waitid'. */ ++#define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */ ++#define WCONTINUED 4 /* Report continued child. */ ++#define WNOWAIT 8 /* Poll only. Don't delete the proc entry. */ ++ ++#define __WCLONE 0x80000000 /* Wait for cloned process. */ ++#ifdef __USE_BSD ++# define WLINUXCLONE __WCLONE /* FreeBSD name for __WCLONE. */ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/bits/waitstatus.h +@@ -0,0 +1,105 @@ ++/* Definitions of status bits for `wait' et al. ++ Copyright (C) 1992,1994,1996,1997,2000,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_WAIT_H && !defined _STDLIB_H ++# error "Never include directly; use instead." ++#endif ++ ++ ++/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */ ++#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8) ++ ++/* If WIFSIGNALED(STATUS), the terminating signal. */ ++#define __WTERMSIG(status) ((status) & 0x7f) ++ ++/* If WIFSTOPPED(STATUS), the signal that stopped the child. */ ++#define __WSTOPSIG(status) __WEXITSTATUS(status) ++ ++/* Nonzero if STATUS indicates normal termination. */ ++#define __WIFEXITED(status) (__WTERMSIG(status) == 0) ++ ++/* Nonzero if STATUS indicates termination by a signal. */ ++#define __WIFSIGNALED(status) \ ++ (((signed char) (((status) & 0x7f) + 1) >> 1) > 0) ++ ++/* Nonzero if STATUS indicates the child is stopped. */ ++#define __WIFSTOPPED(status) (((status) & 0x7f) == 0x7f) ++ ++/* Nonzero if STATUS indicates the child continued after a stop. We only ++ define this if provides the WCONTINUED flag bit. */ ++#ifdef WCONTINUED ++# define __WIFCONTINUED(status) ((status) == __W_CONTINUED) ++#endif ++ ++/* Nonzero if STATUS indicates the child dumped core. */ ++#define __WCOREDUMP(status) ((status) & __WCOREFLAG) ++ ++/* Macros for constructing status values. */ ++#define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) ++#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) ++ ++/* Linux uses 0xffff, BSD uses SIGCONT */ ++#define __W_CONTINUED 0x13 ++#define __WCOREFLAG 0x80 ++ ++ ++#ifdef __USE_BSD ++ ++# include ++ ++union wait ++ { ++ int w_status; ++ struct ++ { ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++ unsigned int __w_termsig:7; /* Terminating signal. */ ++ unsigned int __w_coredump:1; /* Set if dumped core. */ ++ unsigned int __w_retcode:8; /* Return code if exited normally. */ ++ unsigned int:16; ++# endif /* Little endian. */ ++# if __BYTE_ORDER == __BIG_ENDIAN ++ unsigned int:16; ++ unsigned int __w_retcode:8; ++ unsigned int __w_coredump:1; ++ unsigned int __w_termsig:7; ++# endif /* Big endian. */ ++ } __wait_terminated; ++ struct ++ { ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++ unsigned int __w_stopval:8; /* W_STOPPED if stopped. */ ++ unsigned int __w_stopsig:8; /* Stopping signal. */ ++ unsigned int:16; ++# endif /* Little endian. */ ++# if __BYTE_ORDER == __BIG_ENDIAN ++ unsigned int:16; ++ unsigned int __w_stopsig:8; /* Stopping signal. */ ++ unsigned int __w_stopval:8; /* W_STOPPED if stopped. */ ++# endif /* Big endian. */ ++ } __wait_stopped; ++ }; ++ ++# define w_termsig __wait_terminated.__w_termsig ++# define w_coredump __wait_terminated.__w_coredump ++# define w_retcode __wait_terminated.__w_retcode ++# define w_stopsig __wait_stopped.__w_stopsig ++# define w_stopval __wait_stopped.__w_stopval ++ ++#endif /* Use BSD. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/brk.c +@@ -0,0 +1,50 @@ ++/* Copyright (C) 2004, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_obreak (void *addr); ++libc_hidden_proto (__syscall_obreak) ++ ++extern void _end; ++ ++/* sbrk.c expects this. */ ++void *__curbrk = &_end; ++ ++/* Set the end of the process's data space to ADDR. ++ Return 0 if successful, -1 if not. */ ++int ++__brk (addr) ++ void *addr; ++{ ++ if (addr < &_end) ++ return 0; ++ ++ if (INLINE_SYSCALL (obreak, 1, addr) == -1) ++ { ++ __set_errno (ENOMEM); ++ return -1; ++ } ++ ++ __curbrk = addr; ++ return 0; ++} ++weak_alias (__brk, brk) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/check_fds.c +@@ -0,0 +1 @@ ++void __libc_check_standard_fds (void) {;} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/check_native.c +@@ -0,0 +1,42 @@ ++/* Determine whether interfaces use native transport. Dummy version. ++ Copyright (C) 2008 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++ ++void ++__check_native (uint32_t a1_index, int *a1_native, ++ uint32_t a2_index, int *a2_native) ++{ ++ ++#warning __check_native() not yet implemented ++ return; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/check_pf.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_getres.c +@@ -0,0 +1,42 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++int __syscall_clock_getres(clockid_t clock_id, struct timespec *tp); ++libc_hidden_proto (__syscall_clock_getres) ++ ++# define SYSDEP_GETRES \ ++ case CLOCK_REALTIME: \ ++ case CLOCK_MONOTONIC: \ ++ case CLOCK_REALTIME_FAST: \ ++ case CLOCK_REALTIME_PRECISE: \ ++ case CLOCK_MONOTONIC_FAST: \ ++ case CLOCK_MONOTONIC_PRECISE: \ ++ case CLOCK_UPTIME: \ ++ case CLOCK_UPTIME_FAST: \ ++ case CLOCK_UPTIME_PRECISE: \ ++ case CLOCK_VIRTUAL: \ ++ case CLOCK_SECOND: \ ++ retval = INLINE_SYSCALL (clock_getres, 2, clock_id, res); \ ++ break ++ ++/* We handled the REALTIME clock here. */ ++# define HANDLED_REALTIME 1 ++ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_gettime.c +@@ -0,0 +1,42 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include "kernel-posix-cpu-timers.h" ++ ++int __syscall_clock_gettime(clockid_t clock_id, struct timespec *tp); ++libc_hidden_proto (__syscall_clock_gettime) ++ ++# define SYSDEP_GETTIME \ ++ case CLOCK_REALTIME: \ ++ case CLOCK_MONOTONIC: \ ++ case CLOCK_REALTIME_FAST: \ ++ case CLOCK_REALTIME_PRECISE: \ ++ case CLOCK_MONOTONIC_FAST: \ ++ case CLOCK_MONOTONIC_PRECISE: \ ++ case CLOCK_UPTIME: \ ++ case CLOCK_UPTIME_FAST: \ ++ case CLOCK_UPTIME_PRECISE: \ ++ case CLOCK_VIRTUAL: \ ++ case CLOCK_SECOND: \ ++ retval = INLINE_SYSCALL (clock_gettime, 2, clock_id, tp); \ ++ break ++ ++/* We handled the REALTIME clock here. */ ++# define HANDLED_REALTIME 1 ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/clock_settime.c +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include "kernel-posix-cpu-timers.h" ++ ++int __syscall_clock_settime(clockid_t clock_id, const struct timespec *tp); ++libc_hidden_proto (__syscall_clock_settime) ++ ++# define SYSDEP_SETTIME \ ++ case CLOCK_REALTIME: \ ++ retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \ ++ break ++/* We handled the REALTIME clock here. */ ++# define HANDLED_REALTIME 1 ++ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/clone.c +@@ -0,0 +1,143 @@ ++/* Create a thread. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define __clone __no_broken_clone_decl ++#include ++#include ++#include ++#include ++#include ++#undef __clone ++ ++ ++#include ++ ++static inline int ++__kernel_osreldate(void) ++{ ++ static int osreldate; ++ ++ int mib[2]; ++ size_t size; ++ ++ if (osreldate == 0) ++ { ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_OSRELDATE; ++ size = sizeof osreldate; ++ if (__sysctl(mib, 2, &osreldate, &size, NULL, 0) == -1) ++ return (-1); ++ } ++ return (osreldate); ++} ++ ++/* __start_thread (flags, child_stack, fn, arg) ++ is roughly equivalent to ++ ++ int retval = __rfork (flags); ++ if (retval == 0) ++ { ++ // Here we are in the child thread. ++ %stackpointer = child_stack; ++ _exit (fn (arg)); ++ } ++ return retval; ++ ++ but it cannot be done in portable C because it must access fn and arg ++ after having replaced the stack pointer. */ ++ ++extern int __start_thread (int flags, void *child_stack, ++ int (*fn) (void *), void *arg); ++ ++int __clone (int (*fn) (void *), void *child_stack, int flags, void *arg) ++{ ++ int rfork_flags = RFPROC; ++ ++ if (fn == NULL || child_stack == NULL) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ /* This implementation of clone() does not support all Linux flags. */ ++ if (flags & ~(CSIGNAL | CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND ++ | CLONE_VFORK | CLONE_SYSVSEM)) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if ((flags & CSIGNAL) != SIGCHLD) ++ { ++ if (__kernel_osreldate() >= 802510) ++ /* we slightly cheat here, */ ++ /* the 9.x snapshot prior to r223966 does not support it too */ ++ { ++ if ((flags & CSIGNAL) & ~RFTSIGMASK) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ rfork_flags |= (RFTSIGZMB | RFTSIGFLAGS(flags & CSIGNAL)); ++ } ++ else ++ { ++ if ((flags & CSIGNAL) & ~RFTHPNMASK) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ if ((flags & CSIGNAL) == 0) ++ rfork_flags |= (RFLINUXTHPN | ((SIGCHLD) << RFTHPNSHIFT)); ++ else ++ rfork_flags |= (RFLINUXTHPN | ((flags & CSIGNAL) << RFTHPNSHIFT)); ++ } ++ } ++ if (flags & CLONE_VM) ++ rfork_flags |= RFMEM; ++ ++ if (flags & CLONE_FS) ++ /* Sharing the filesystem related info (umask, cwd, root dir) ++ is not supported by rfork. Ignore this; let's hope programs ++ will set their umask and cwd before spawning threads. */ ++ ; ++ ++ if (flags & CLONE_SYSVSEM) ++ /* Ignore this; it has been introduced into linuxthreads in post 2.4 glibc */ ++ ; ++ ++ if (!(flags & CLONE_FILES)) ++ rfork_flags |= RFFDG; ++ ++ if (flags & CLONE_SIGHAND) ++ { ++ rfork_flags |= RFSIGSHARE; ++ /* Also set the undocumented flag RFTHREAD. It has the effect that when ++ the thread leader exits, all threads belonging to it are killed. */ ++ rfork_flags |= RFTHREAD; ++ } ++ ++ if (flags & CLONE_VFORK) ++ rfork_flags |= RFPPWAIT; ++ ++ return __start_thread (rfork_flags, child_stack, fn, arg); ++} ++ ++weak_alias (__clone, clone) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/configure +@@ -0,0 +1,353 @@ ++# This file is generated from configure.in by Autoconf. DO NOT EDIT! ++ # Local configure fragment for sysdeps/unix/bsd/bsd4.4/kfreebsd. ++ ++case "$machine" in ++ x86_64*) ++ echo "Adding extra sysnames for kfreebsd/x86_64/elf" ++ sysnames="ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf $sysnames" ++ ;; ++ mips*) ++ echo "Adding extra sysnames for kfreebsd/mips/elf" ++ sysnames="ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/elf $sysnames" ++ ;; ++esac ++ ++# The kFreeBSD headers can be found in ++# /usr/src/sys/ ++# Check whether this directory is available. ++if test -z "$sysheaders" && ++ test "x$cross_compiling" = xno && ++ test -d /usr/src/sys/ ; then ++ sysheaders="/usr/src/sys/" ++ ccheaders=`$CC -print-file-name=include` ++ SYSINCLUDES="-I $sysheaders" ++fi ++ ++# Don't bother trying to generate any glue code to be compatible with the ++# existing system library, because we are the only system library. ++inhibit_glue=yes ++ ++if test -n "$sysheaders"; then ++ OLD_CPPFLAGS=$CPPFLAGS ++ CPPFLAGS="$CPPFLAGS $SYSINCLUDES" ++fi ++ ++ ++echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6 ++if test "${ac_cv_prog_egrep+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | (grep -E '(a|b)') >/dev/null 2>&1 ++ then ac_cv_prog_egrep='grep -E' ++ else ac_cv_prog_egrep='egrep' ++ fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 ++echo "${ECHO_T}$ac_cv_prog_egrep" >&6 ++ EGREP=$ac_cv_prog_egrep ++ ++ ++echo "$as_me:$LINENO: checking installed kFreeBSD kernel header files" >&5 ++echo $ECHO_N "checking installed kFreeBSD kernel header files... $ECHO_C" >&6 ++if test "${libc_cv_kfreebsd600+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version < (6 *100000+ 0 *1000+ 0) /* 6.0.0 */ ++eat flaming death ++#endif ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "eat flaming death" >/dev/null 2>&1; then ++ libc_cv_kfreebsd600='TOO OLD!' ++else ++ libc_cv_kfreebsd600='6.0.0 or later' ++fi ++rm -f conftest* ++ ++fi ++echo "$as_me:$LINENO: result: $libc_cv_kfreebsd600" >&5 ++echo "${ECHO_T}$libc_cv_kfreebsd600" >&6 ++if test "$libc_cv_kfreebsd600" != '6.0.0 or later'; then ++ { { echo "$as_me:$LINENO: error: GNU libc requires kernel header files from ++kFreeBSD 6.0.0 or later to be installed before configuring. ++The kernel header files are found usually in /usr/src/sys/; make sure ++these directories use files from kFreeBSD 6.0.0 or later. ++This check uses , so ++make sure that file was built correctly when installing the kernel header ++files. To use kernel headers not from /usr/src/sys/, use the ++configure option --with-headers." >&5 ++echo "$as_me: error: GNU libc requires kernel header files from ++kFreeBSD 6.0.0 or later to be installed before configuring. ++The kernel header files are found usually in /usr/src/sys/; make sure ++these directories use files from kFreeBSD 6.0.0 or later. ++This check uses , so ++make sure that file was built correctly when installing the kernel header ++files. To use kernel headers not from /usr/src/sys/, use the ++configure option --with-headers." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++# Check whether --enable-compatible-utmp or --disable-compatible-utmp was given. ++if test "${enable_compatible_utmp+set}" = set; then ++ enableval="$enable_compatible_utmp" ++ enable_utmp_compat=$enableval ++else ++ enable_utmp_compat=no ++fi; ++if test "$enable_utmp_compat" = no; then ++ utmp_subdir=utmp-utmpx ++else ++ utmp_subdir=utmp-compat ++fi ++sysnames="$sysnames sysdeps/unix/bsd/bsd4.4/kfreebsd/$utmp_subdir" ++ ++# If the user gave a minimal version number test whether the available ++# kernel headers are young enough. Additionally we have minimal ++# kernel versions for some architectures. If a previous configure fragment ++# set arch_minimum_kernel already, let that override our defaults here. ++# Note that we presume such a fragment has set libc_cv_gcc_unwind_find_fde ++# if appropriate too. ++test -n "$arch_minimum_kernel" || ++case "$machine" in ++ i386*) ++ libc_cv_gcc_unwind_find_fde=yes ++ arch_minimum_kernel=6.0.0 ++ ;; ++ x86_64*) ++ arch_minimum_kernel=6.0.0 ++ ;; ++ *) ++ arch_minimum_kernel=6.0.0 ++ ;; ++esac ++if test -n "$minimum_kernel"; then ++ ++ user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)) ++ arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)) ++ ++ if test $user_version -lt $arch_version; then ++ { echo "$as_me:$LINENO: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&5 ++echo "$as_me: WARNING: minimum kernel version reset to $arch_minimum_kernel" >&2;} ++ minimum_kernel=$arch_minimum_kernel ++ fi ++else ++ if test $arch_minimum_kernel != '6.0.0'; then ++ minimum_kernel=$arch_minimum_kernel ++ fi ++fi ++ ++if test -n "$minimum_kernel"; then ++ echo "$as_me:$LINENO: checking for kernel header at least $minimum_kernel" >&5 ++echo $ECHO_N "checking for kernel header at least $minimum_kernel... $ECHO_C" >&6 ++ hdrnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 100000 + \2 * 1000 + \3)/'`; ++ decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`; ++ abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`; ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if __FreeBSD_kernel_version < $hdrnum ++eat flaming death ++#endif ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "eat flaming death" >/dev/null 2>&1; then ++ libc_minimum_kernel='too old!' ++else ++ libc_minimum_kernel=ok ++fi ++rm -f conftest* ++ ++ echo "$as_me:$LINENO: result: $libc_minimum_kernel" >&5 ++echo "${ECHO_T}$libc_minimum_kernel" >&6 ++ if test "$libc_minimum_kernel" = ok; then ++ cat >>confdefs.h <<_ACEOF ++#define __KFREEBSD_KERNEL_VERSION $decnum ++_ACEOF ++ ++ cat >>confdefs.h <<_ACEOF ++#define __ABI_TAG_VERSION $abinum ++_ACEOF ++ ++ else ++ { { echo "$as_me:$LINENO: error: *** The available kernel headers are older than the requested ++*** compatible kernel version" >&5 ++echo "$as_me: error: *** The available kernel headers are older than the requested ++*** compatible kernel version" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++fi ++ ++if test -n "$sysheaders"; then ++ CPPFLAGS=$OLD_CPPFLAGS ++fi ++# The Linux filesystem standard prescribes where to place "essential" ++# files. I.e., when the installation prefix is "/usr" we have to place ++# shared library objects and the configuration files on the root partition ++# in /lib and /etc. ++case "$prefix" in ++/usr | /usr/) ++ # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib ++ case $machine in ++ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \ ++ mips/mips64/n64/* ) ++ libc_cv_slibdir="/lib64" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib64'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ mips/mips64/n32/* ) ++ libc_cv_slibdir="/lib32" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib32'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ *) ++ libc_cv_slibdir="/lib" ++ ;; ++ esac ++ # Allow the user to override the path with --sysconfdir ++ if test $sysconfdir = '${prefix}/etc'; then ++ libc_cv_sysconfdir=/etc ++ else ++ libc_cv_sysconfdir=$sysconfdir ++ fi ++ libc_cv_rootsbindir="/sbin" ++ ;; ++esac ++ ++ ++# Put exception handling support into libc, so that not every shared ++# library needs to include it. ++# FIXME: Does not work yet. ++libc_cv_gcc_unwind_find_fde=no ++ ++ ++# Under kFreeBSD the LinuxThreads or (may be later) NPTL add-on should be available. ++case $add_ons in ++ # Only one of the add-ons should be available. ++ *linuxthreads*nptl*|*nptl*linuxthreads*) ++ echo "\ ++*** LinuxThreads and NPTL add-ons are both available. Only one must be used." ++ exit 1 ++ ;; ++ # It is available. Good. ++ *linuxthreads*) ++ linuxthreads_missing= ++ ;; ++ *nptl*) ++ linuxthreads_missing= ++ ;; ++ *) ++ linuxthreads_missing=yes ++ ;; ++esac ++ ++if test "$linuxthreads_missing"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems it is normal to compile GNU libc with the ++*** \`linuxthreads' add-on. Without that, the library will be ++*** incompatible with normal GNU/kFreeBSD systems. ++*** If you really mean to not use this add-on, run configure again ++*** using the extra parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Are you sure you do not want to use the \`linuxthreads' ++*** add-on?" ++ fi ++fi ++ ++if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems the GNU C Library should not be installed into ++*** /usr/local since this might make your system totally unusable. ++*** We strongly advise to use a different prefix. For details read the FAQ. ++*** If you really mean to do this, run configure again using the extra ++*** parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Do you really want to install the GNU C Library into /usr/local? ++*** This might make your system totally unusable, for details read the FAQ." ++ fi ++fi ++ ++ ++# One kFreeBSD we use ldconfig. ++use_ldconfig=yes ++ ++# We need some extensions to the `ldd' script. ++case "$machine" in ++ x86_64*) ++ ldd_rewrite_script=../ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ldd-rewrite.sed ++ ;; ++ *) ++ ;; ++esac ++ ++ ++if test $host = $build; then ++ # If $prefix/include/{net,scsi} are symlinks, make install will ++ # clobber what they're linked to (probably a kernel tree). ++ # test -L ought to work on all Linux boxes. ++ if test "x$prefix" != xNONE; then ++ ac_prefix=$prefix ++ else ++ ac_prefix=$ac_default_prefix ++ fi ++ echo "$as_me:$LINENO: checking for symlinks in ${ac_prefix}/include" >&5 ++echo $ECHO_N "checking for symlinks in ${ac_prefix}/include... $ECHO_C" >&6 ++ ac_message= ++ if test -L ${ac_prefix}/include/net; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/net is a symlink" ++ fi ++ if test -L ${ac_prefix}/include/scsi; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/scsi is a symlink" ++ fi ++ if test -n "$ac_message"; then ++ { { echo "$as_me:$LINENO: error: $ac_message ++\`make install' will destroy the target of the link(s). ++Delete the links and re-run configure, or better still, move the entire ++${ac_prefix}/include directory out of the way." >&5 ++echo "$as_me: error: $ac_message ++\`make install' will destroy the target of the link(s). ++Delete the links and re-run configure, or better still, move the entire ++${ac_prefix}/include directory out of the way." >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6 ++ fi ++fi ++ ++# We support internal syscalls. ++# It is advertised as inlined syscalls availability ... ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_INLINED_SYSCALLS 1 ++_ACEOF +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/configure.in +@@ -0,0 +1,277 @@ ++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. ++# Local configure fragment for sysdeps/unix/bsd/bsd4.4/kfreebsd. ++ ++case "$machine" in ++ x86_64*) ++ echo "Adding extra sysnames for kfreebsd/x86_64/elf" ++ sysnames="ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf $sysnames" ++ ;; ++ mips*) ++ echo "Adding extra sysnames for kfreebsd/mips/elf" ++ sysnames="ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/elf $sysnames" ++ ;; ++esac ++ ++# The kFreeBSD headers can be found in ++# /usr/src/sys/ ++# Check whether this directory is available. ++if test -z "$sysheaders" && ++ test "x$cross_compiling" = xno && ++ test -d /usr/src/sys/ ; then ++ sysheaders="/usr/src/sys/" ++ ccheaders=`$CC -print-file-name=include` ++ dnl We don't have to use -nostdinc. We just want one more directory ++ dnl to be used. ++ SYSINCLUDES="-I $sysheaders" ++fi ++ ++# Don't bother trying to generate any glue code to be compatible with the ++# existing system library, because we are the only system library. ++inhibit_glue=yes ++ ++define([LIBC_KFREEBSD_VERSION],[6.0.0])dnl ++if test -n "$sysheaders"; then ++ OLD_CPPFLAGS=$CPPFLAGS ++ CPPFLAGS="$CPPFLAGS $SYSINCLUDES" ++fi ++define([libc_cv_kfreebsdVER], [libc_cv_kfreebsd]patsubst(LIBC_KFREEBSD_VERSION,[\.]))dnl ++AC_CACHE_CHECK(installed kFreeBSD kernel header files, libc_cv_kfreebsdVER, [dnl ++AC_EGREP_CPP([eat flaming death], [#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if !defined __FreeBSD_kernel_version || __FreeBSD_kernel_version < ]dnl ++patsubst(LIBC_KFREEBSD_VERSION,[^\([^.]*\)\.\([^.]*\)\.\([^.]*\)$],dnl ++[ (\1 *100000+ \2 *1000+ \3) /* \1.\2.\3 */])[ ++eat flaming death ++#endif], ++ libc_cv_kfreebsdVER='TOO OLD!', ++ libc_cv_kfreebsdVER='LIBC_KFREEBSD_VERSION or later')]) ++if test "$libc_cv_kfreebsdVER" != 'LIBC_KFREEBSD_VERSION or later'; then ++ AC_MSG_ERROR([GNU libc requires kernel header files from ++kFreeBSD LIBC_KFREEBSD_VERSION or later to be installed before configuring. ++The kernel header files are found usually in /usr/src/sys/; make sure ++these directories use files from kFreeBSD LIBC_KFREEBSD_VERSION or later. ++This check uses , so ++make sure that file was built correctly when installing the kernel header ++files. To use kernel headers not from /usr/src/sys/, use the ++configure option --with-headers.]) ++fi ++ ++AC_ARG_ENABLE(compatible-utmp, dnl ++[ --disable-compatible-utmp use a struct utmp which is the same as struct ++ utmpx, as on kFreeBSD, but incompatible with FreeBSD], ++ enable_utmp_compat=$enableval, enable_utmp_compat=no) ++if test "$enable_utmp_compat" = no; then ++ utmp_subdir=utmp-utmpx ++else ++ utmp_subdir=utmp-compat ++fi ++sysnames="$sysnames sysdeps/unix/bsd/bsd4.4/kfreebsd/$utmp_subdir" ++ ++# If the user gave a minimal version number test whether the available ++# kernel headers are young enough. Additionally we have minimal ++# kernel versions for some architectures. If a previous configure fragment ++# set arch_minimum_kernel already, let that override our defaults here. ++# Note that we presume such a fragment has set libc_cv_gcc_unwind_find_fde ++# if appropriate too. ++test -n "$arch_minimum_kernel" || ++case "$machine" in ++ i386*) ++ libc_cv_gcc_unwind_find_fde=yes ++ arch_minimum_kernel=6.0.0 ++ ;; ++ x86_64*) ++ arch_minimum_kernel=6.0.0 ++ ;; ++ *) ++ arch_minimum_kernel=6.0.0 ++ ;; ++esac ++if test -n "$minimum_kernel"; then ++ changequote(,) ++ user_version=$((`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)) ++ arch_version=$((`echo "$arch_minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)) ++ changequote([,]) ++ if test $user_version -lt $arch_version; then ++ AC_MSG_WARN([minimum kernel version reset to $arch_minimum_kernel]) ++ minimum_kernel=$arch_minimum_kernel ++ fi ++else ++ if test $arch_minimum_kernel != '6.0.0'; then ++ minimum_kernel=$arch_minimum_kernel ++ fi ++fi ++ ++if test -n "$minimum_kernel"; then ++ AC_MSG_CHECKING(for kernel header at least $minimum_kernel) ++changequote(,)dnl ++ hdrnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 100000 + \2 * 1000 + \3)/'`; ++ decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`; ++ abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`; ++changequote([,])dnl ++ AC_EGREP_CPP([eat flaming death], [#include ++#if !defined(__FreeBSD_kernel_version) && defined(__FreeBSD_version) ++#define __FreeBSD_kernel_version __FreeBSD_version ++#endif ++#if __FreeBSD_kernel_version < $hdrnum ++eat flaming death ++#endif], libc_minimum_kernel='too old!', libc_minimum_kernel=ok) ++ AC_MSG_RESULT($libc_minimum_kernel) ++ if test "$libc_minimum_kernel" = ok; then ++ AC_DEFINE_UNQUOTED(__KFREEBSD_KERNEL_VERSION, $decnum) ++ AC_DEFINE_UNQUOTED(__ABI_TAG_VERSION, $abinum) ++ else ++ AC_MSG_ERROR([*** The available kernel headers are older than the requested ++*** compatible kernel version]) ++ fi ++fi ++ ++if test -n "$sysheaders"; then ++ CPPFLAGS=$OLD_CPPFLAGS ++fi ++# The Linux filesystem standard prescribes where to place "essential" ++# files. I.e., when the installation prefix is "/usr" we have to place ++# shared library objects and the configuration files on the root partition ++# in /lib and /etc. ++case "$prefix" in ++/usr | /usr/) ++ # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib ++ case $machine in ++ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \ ++ mips/mips64/n64/* ) ++ libc_cv_slibdir="/lib64" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib64'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ mips/mips64/n32/* ) ++ libc_cv_slibdir="/lib32" ++ if test "$libdir" = '${exec_prefix}/lib'; then ++ libdir='${exec_prefix}/lib32'; ++ # Locale data can be shared between 32bit and 64bit libraries ++ libc_cv_localedir='${exec_prefix}/lib/locale' ++ fi ++ ;; ++ *) ++ libc_cv_slibdir="/lib" ++ ;; ++ esac ++ # Allow the user to override the path with --sysconfdir ++ if test $sysconfdir = '${prefix}/etc'; then ++ libc_cv_sysconfdir=/etc ++ else ++ libc_cv_sysconfdir=$sysconfdir ++ fi ++ libc_cv_rootsbindir="/sbin" ++ ;; ++esac ++ ++ ++# Put exception handling support into libc, so that not every shared ++# library needs to include it. ++# FIXME: Does not work yet. ++libc_cv_gcc_unwind_find_fde=no ++ ++ ++# Under kFreeBSD the LinuxThreads or (may be later) NPTL add-on should be available. ++case $add_ons in ++ # Only one of the add-ons should be available. ++ *linuxthreads*nptl*|*nptl*linuxthreads*) ++ echo "\ ++*** LinuxThreads and NPTL add-ons are both available. Only one must be used." ++ exit 1 ++ ;; ++ # It is available. Good. ++ *linuxthreads*) ++ linuxthreads_missing= ++ ;; ++ *nptl*) ++ linuxthreads_missing= ++ ;; ++ *) ++ linuxthreads_missing=yes ++ ;; ++esac ++ ++if test "$linuxthreads_missing"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems it is normal to compile GNU libc with the ++*** \`linuxthreads' add-on. Without that, the library will be ++*** incompatible with normal GNU/kFreeBSD systems. ++*** If you really mean to not use this add-on, run configure again ++*** using the extra parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Are you sure you do not want to use the \`linuxthreads' ++*** add-on?" ++ fi ++fi ++ ++if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then ++ if test $enable_sanity = yes; then ++ echo "\ ++*** On GNU/kFreeBSD systems the GNU C Library should not be installed into ++*** /usr/local since this might make your system totally unusable. ++*** We strongly advise to use a different prefix. For details read the FAQ. ++*** If you really mean to do this, run configure again using the extra ++*** parameter \`--disable-sanity-checks'." ++ exit 1 ++ else ++ echo "\ ++*** WARNING: Do you really want to install the GNU C Library into /usr/local? ++*** This might make your system totally unusable, for details read the FAQ." ++ fi ++fi ++ ++ ++# One kFreeBSD we use ldconfig. ++use_ldconfig=yes ++ ++# We need some extensions to the `ldd' script. ++changequote(,) ++case "$machine" in ++ x86_64*) ++ ldd_rewrite_script=../ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ldd-rewrite.sed ++ ;; ++ *) ++ ;; ++esac ++changequote([,]) ++ ++if test $host = $build; then ++ # If $prefix/include/{net,scsi} are symlinks, make install will ++ # clobber what they're linked to (probably a kernel tree). ++ # test -L ought to work on all Linux boxes. ++ if test "x$prefix" != xNONE; then ++ ac_prefix=$prefix ++ else ++ ac_prefix=$ac_default_prefix ++ fi ++ AC_MSG_CHECKING([for symlinks in ${ac_prefix}/include]) ++ ac_message= ++ if test -L ${ac_prefix}/include/net; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/net is a symlink" ++ fi ++ if test -L ${ac_prefix}/include/scsi; then ++ ac_message="$ac_message ++ ${ac_prefix}/include/scsi is a symlink" ++ fi ++ if test -n "$ac_message"; then ++ AC_MSG_ERROR([$ac_message ++\`make install' will destroy the target of the link(s). ++Delete the links and re-run configure, or better still, move the entire ++${ac_prefix}/include directory out of the way.]) ++ else ++ AC_MSG_RESULT(ok) ++ fi ++fi ++ ++# We support internal syscalls. ++# It is advertised as inlined syscalls availability ... ++AC_DEFINE(HAVE_INLINED_SYSCALLS) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/connect.c +@@ -0,0 +1,69 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* According to POSIX.1-2004 the len argument specifies the length of ++ the sockaddr structure pointed to by the addrarg argument. However ++ the FreeBSD kernel waits the actual length of the address stored ++ there. The code below emulate this behaviour. */ ++ ++extern int __libc_sa_len (sa_family_t __af); ++extern int __libc_sa_len_internal (sa_family_t __af); ++ ++extern int __syscall_connect (int fd, __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen); ++libc_hidden_proto (__syscall_connect) ++ ++/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). ++ For connectionless socket types, just set the default address to send to ++ and the only address from which to accept transmissions. ++ Return 0 on success, -1 for errors. */ ++ ++int ++__libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen) ++{ ++ socklen_t new_addrlen; ++ ++#ifndef NOT_IN_libc ++ new_addrlen = INTUSE(__libc_sa_len) ((addr.__sockaddr__)->sa_family); ++#else ++ new_addrlen = __libc_sa_len ((addr.__sockaddr__)->sa_family); ++#endif ++ ++ /* Only allow a smaller size, otherwise it could lead to ++ stack corruption */ ++ if (new_addrlen < addrlen) ++ addrlen = new_addrlen; ++ ++ /* We pass 3 arguments. */ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (connect, 3, fd, addr.__sockaddr__, addrlen); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ int result = INLINE_SYSCALL (connect, 3, fd, addr.__sockaddr__, addrlen); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++strong_alias (__libc_connect, __connect_internal) ++weak_alias (__libc_connect, __connect) ++weak_alias (__libc_connect, connect) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/devname.c +@@ -0,0 +1,69 @@ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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 ++#include ++#include ++ ++char * ++__devname_r(__dev_t dev, __mode_t type, char *buf, int len) ++{ ++ int i; ++ size_t j; ++ const char *r; ++ ++ if ((type & S_IFMT) == S_IFCHR) { ++ j = len; ++ i = __sysctlbyname("kern.devname", buf, &j, &dev, sizeof (dev)); ++ if (i == 0) ++ return (buf); ++ } ++ ++ /* Finally just format it */ ++ if (dev == NODEV) ++ r = "#NODEV"; ++ else ++ r = "#%c:%d:0x%x"; ++ __snprintf(buf, len, r, ++ (type & S_IFMT) == S_IFCHR ? 'C' : 'B', major(dev), minor(dev)); ++ return (buf); ++} ++ ++ ++char * ++__devname(__dev_t dev, __mode_t type) ++{ ++ static char buf[SPECNAMELEN + 1]; ++ ++ return(__devname_r(dev, type, buf, sizeof(buf))); ++} ++weak_alias (__devname_r, devname_r) ++weak_alias (__devname, devname) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-execstack.c +@@ -0,0 +1,58 @@ ++/* Stack executability handling for GNU dynamic linker. Linux version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++extern int __stack_prot attribute_relro attribute_hidden; ++ ++ ++int ++internal_function ++_dl_make_stack_executable (void **stack_endp) ++{ ++ /* This gives us the highest/lowest page that needs to be changed. */ ++ uintptr_t page = ((uintptr_t) *stack_endp ++ & -(intptr_t) GLRO(dl_pagesize)); ++ ++ /* Challenge the caller. */ ++ if (__builtin_expect (__check_caller (RETURN_ADDRESS (0), ++ allow_ldso|allow_libpthread) != 0, 0) ++ || __builtin_expect (*stack_endp != __libc_stack_end, 0)) ++ return EPERM; ++ ++ if (__builtin_expect (__mprotect ((void *) page, GLRO(dl_pagesize), ++ __stack_prot) != 0, 0)) ++ return errno; ++ ++ /* Clear the address. */ ++ *stack_endp = NULL; ++ ++ /* Remember that we changed the permission. */ ++ GL(dl_stack_flags) |= PF_X; ++ ++ return 0; ++} ++rtld_hidden_def (_dl_make_stack_executable) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-origin.c +@@ -0,0 +1,123 @@ ++/* Find path of executable. ++ Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 1998. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++const char *_self_program_name_from_auxv attribute_hidden; ++ ++static int ++_dl_self_name(char *buf, int buflen) ++{ ++ int len, wdlen; ++ ++ /* try /proc/self/exe symlink. */ ++ len = __readlink("/proc/self/exe", buf, buflen); ++ ++ if (len > 0 && buf[0] == '/') ++ return len; ++ ++ if (!_self_program_name_from_auxv) ++ return -1; ++ ++ len = strlen(_self_program_name_from_auxv); ++ if (len > 0 && _self_program_name_from_auxv[0] == '/') ++ { ++ /* absolute file name */ ++ if (len < buflen) ++ { ++ strcpy(buf, _self_program_name_from_auxv); ++ return len; ++ } ++ memcpy(buf, _self_program_name_from_auxv, buflen); ++ buf[buflen - 1] = 0; ++ return buflen - 1; ++ }; ++ ++ /* relative file name, do our best */ ++ if (NULL == __getcwd(buf, buflen)) ++ return -1; ++ ++ wdlen = strlen(buf); ++ buf[wdlen] = '/'; ++ if ((wdlen + len + 1) < buflen) ++ { ++ strcpy(buf + wdlen + 1, _self_program_name_from_auxv); ++ return wdlen + len + 1; ++ } ++ memcpy(buf + wdlen + 1, _self_program_name_from_auxv, buflen - wdlen - 1); ++ buf[buflen - 1] = 0; ++ return buflen - 1; ++} ++ ++ ++ ++const char * ++_dl_get_origin (void) ++{ ++ char linkval[2*PATH_MAX]; ++ char *result; ++ int len; ++ ++ len = _dl_self_name(linkval, sizeof(linkval)); ++ ++ if (len > 0) ++ { ++ /* We can use this value. */ ++ while (len > 1 && linkval[len - 1] != '/') ++ --len; ++ result = (char *) malloc (len + 1); ++ if (result == NULL) ++ result = (char *) -1; ++ else if (len == 1) ++ memcpy (result, "/", 2); ++ else ++ *((char *) __mempcpy (result, linkval, len - 1)) = '\0'; ++ } ++ else ++ { ++ result = (char *) -1; ++ /* We use the environment variable LD_ORIGIN_PATH. If it is set make ++ a copy and strip out trailing slashes. */ ++ if (GLRO(dl_origin_path) != NULL) ++ { ++ size_t len = strlen (GLRO(dl_origin_path)); ++ result = (char *) malloc (len + 1); ++ if (result == NULL) ++ result = (char *) -1; ++ else ++ { ++ char *cp = __mempcpy (result, GLRO(dl_origin_path), len); ++ while (cp > result + 1 && cp[-1] == '/') ++ --cp; ++ *cp = '\0'; ++ } ++ } ++ } ++ ++ return result; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-osinfo.h +@@ -0,0 +1,98 @@ ++/* Operating system specific code for generic dynamic loader functions. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#ifndef MIN ++# define MIN(a,b) (((a)<(b))?(a):(b)) ++#endif ++ ++#ifdef SHARED ++/* This is the function used in the dynamic linker to print the fatal error ++ message. */ ++static inline void ++__attribute__ ((__noreturn__)) ++dl_fatal (const char *str) ++{ ++ _dl_dprintf (2, str); ++ _exit (1); ++} ++#endif ++ ++#define DL_SYSDEP_OSCHECK(FATAL) \ ++ do { \ ++ /* Test whether the kernel is new enough. This test is only performed \ ++ if the library is not compiled to run on all kernels. */ \ ++ \ ++ int version = _dl_discover_osversion (); \ ++ if (__builtin_expect (version >= 0, 1)) \ ++ { \ ++ if (__builtin_expect (GLRO(dl_osversion) == 0, 1) \ ++ || GLRO(dl_osversion) > version) \ ++ GLRO(dl_osversion) = version; \ ++ \ ++ /* Now we can test with the required version. */ \ ++ if (__KFREEBSD_KERNEL_VERSION > 0 && \ ++ version < __KFREEBSD_KERNEL_VERSION) \ ++ /* Not sufficent. */ \ ++ FATAL ("FATAL: kernel too old\n"); \ ++ } \ ++ else if (__KFREEBSD_KERNEL_VERSION > 0) \ ++ FATAL ("FATAL: cannot determine kernel version\n"); \ ++ } while (0) ++ ++static inline uintptr_t __attribute__ ((always_inline)) ++_dl_setup_stack_chk_guard (void *dl_random) ++{ ++ uintptr_t ret; ++#ifdef ENABLE_STACKGUARD_RANDOMIZE ++ int fd = __open ("/dev/urandom", O_RDONLY); ++ if (fd >= 0) ++ { ++ ssize_t reslen = __read (fd, &ret, sizeof (ret)); ++ __close (fd); ++ if (reslen == (ssize_t) sizeof (ret)) ++ return ret; ++ } ++#endif ++ ret = 0; ++ unsigned char *p = (unsigned char *) &ret; ++ p[sizeof (ret) - 1] = 255; ++ p[sizeof (ret) - 2] = '\n'; ++ return ret; ++} ++ ++static inline uintptr_t __attribute__ ((always_inline)) ++_dl_setup_pointer_guard (void *dl_random, uintptr_t stack_chk_guard) ++{ ++ uintptr_t ret; ++ ++ ret = stack_chk_guard; ++# ifndef HP_TIMING_NONAVAIL ++ hp_timing_t now; ++ HP_TIMING_NOW (now); ++ ret ^= now; ++# endif ++ return ret; ++} ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-support.c +@@ -0,0 +1,44 @@ ++/* Dynamic linker system dependencies for GNU/kFreeBSD. ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define _dl_aux_init _dl_aux_init_ignored_code ++#include ++#include ++#undef _dl_aux_init ++ ++#ifdef HAVE_AUX_VECTOR ++void ++internal_function ++_dl_aux_init (ElfW(auxv_t) *av) ++{ ++ for (; av->a_type != AT_NULL; ++av) ++ switch (av->a_type) ++ { ++ case AT_PAGESZ: ++ GLRO(dl_pagesize) = av->a_un.a_val; ++ break; ++ case AT_PHDR: ++ GL(dl_phdr) = (void *) av->a_un.a_val; ++ break; ++ case AT_PHNUM: ++ GL(dl_phnum) = av->a_un.a_val; ++ break; ++ } ++} ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-sysdep.c +@@ -0,0 +1,253 @@ ++/* Dynamic linker system dependencies for GNU/kFreeBSD. ++ Copyright (C) 1995-1998,2000-2008,2009,2010,2011 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* For SHARED, use the generic dynamic linker system interface code. */ ++/* otherwise the code is in dl-support.c */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#ifdef SHARED ++# define _dl_sysdep_start _dl_sysdep_start_ignored_code ++# define _dl_show_auxv _dl_show_auxv_ignored_code ++# include ++# include ++# undef _dl_sysdep_start ++# undef _dl_show_auxv ++ ++extern const char *_self_program_name_from_auxv attribute_hidden; ++ ++ElfW(Addr) ++_dl_sysdep_start (void **start_argptr, ++ void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum, ++ ElfW(Addr) *user_entry, ElfW(auxv_t) *auxv)) ++{ ++ const ElfW(Phdr) *phdr = NULL; ++ ElfW(Word) phnum = 0; ++ ElfW(Addr) user_entry; ++ ElfW(auxv_t) *av; ++ uid_t uid = 0; ++ gid_t gid = 0; ++#ifdef NEED_DL_SYSINFO ++ uintptr_t new_sysinfo = 0; ++#endif ++ ++ __libc_stack_end = DL_STACK_END (start_argptr); ++ DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ, ++ _dl_auxv); ++ ++ user_entry = (ElfW(Addr)) ENTRY_POINT; ++ GLRO(dl_platform) = NULL; /* Default to nothing known about the platform. */ ++ ++ for (av = _dl_auxv; av->a_type != AT_NULL; av++) ++ switch (av->a_type) ++ { ++ case AT_PHDR: ++ phdr = (void *) av->a_un.a_val; ++ break; ++ case AT_PHNUM: ++ phnum = av->a_un.a_val; ++ break; ++ case AT_PAGESZ: ++ GLRO(dl_pagesize) = av->a_un.a_val; ++ break; ++ case AT_ENTRY: ++ user_entry = av->a_un.a_val; ++ break; ++ case AT_EXECPATH: ++ _self_program_name_from_auxv = (char *) av->a_un.a_val; ++ break; ++#ifdef NEED_DL_BASE_ADDR ++ case AT_BASE: ++ _dl_base_addr = av->a_un.a_val; ++ break; ++#endif ++ } ++ ++ { ++ /* Fill in the values we have not gotten from the kernel through the ++ auxiliary vector. */ ++# undef SEE ++# define SEE(UID, var, uid) \ ++ var ^= __get##uid () ++ SEE (UID, uid, uid); ++ SEE (EUID, uid, euid); ++ SEE (GID, gid, gid); ++ SEE (EGID, gid, egid); ++ ++ /* If one of the two pairs of IDs does not match this is a setuid ++ or setgid run. */ ++ INTUSE(__libc_enable_secure) = uid | gid; ++ } ++ ++#ifndef HAVE_AUX_PAGESIZE ++ if (GLRO(dl_pagesize) == 0) ++ GLRO(dl_pagesize) = __getpagesize (); ++#endif ++ ++#if defined NEED_DL_SYSINFO ++ /* Only set the sysinfo value if we also have the vsyscall DSO. */ ++ if (GLRO(dl_sysinfo_dso) != 0 && new_sysinfo) ++ GLRO(dl_sysinfo) = new_sysinfo; ++#endif ++ ++#ifdef DL_SYSDEP_INIT ++ DL_SYSDEP_INIT; ++#endif ++ ++#ifdef DL_PLATFORM_INIT ++ DL_PLATFORM_INIT; ++#endif ++ ++ /* Determine the length of the platform name. */ ++ if (GLRO(dl_platform) != NULL) ++ GLRO(dl_platformlen) = strlen (GLRO(dl_platform)); ++ ++ if (__sbrk (0) == _end) ++ /* The dynamic linker was run as a program, and so the initial break ++ starts just after our bss, at &_end. The malloc in dl-minimal.c ++ will consume the rest of this page, so tell the kernel to move the ++ break up that far. When the user program examines its break, it ++ will see this new value and not clobber our data. */ ++ __sbrk (GLRO(dl_pagesize) ++ - ((_end - (char *) 0) & (GLRO(dl_pagesize) - 1))); ++ ++ /* If this is a SUID program we make sure that FDs 0, 1, and 2 are ++ allocated. If necessary we are doing it ourself. If it is not ++ possible we stop the program. */ ++ if (__builtin_expect (INTUSE(__libc_enable_secure), 0)) ++ __libc_check_standard_fds (); ++ ++ (*dl_main) (phdr, phnum, &user_entry, _dl_auxv); ++ return user_entry; ++} ++ ++void ++internal_function ++_dl_show_auxv (void) ++{ ++ char buf[64]; ++ ElfW(auxv_t) *av; ++ ++ /* Terminate string. */ ++ buf[63] = '\0'; ++ ++ /* The following code assumes that the AT_* values are encoded ++ starting from 0 with AT_NULL, 1 for AT_IGNORE, and all other values ++ close by (otherwise the array will be too large). In case we have ++ to support a platform where these requirements are not fulfilled ++ some alternative implementation has to be used. */ ++ for (av = _dl_auxv; av->a_type != AT_NULL; ++av) ++ { ++ static const struct ++ { ++ const char label[17]; ++ enum { unknown = 0, dec, hex, str, ignore } form : 8; ++ } auxvars[] = ++ { ++ [AT_EXECFD - 2] = { "EXECFD: ", dec }, ++ [AT_PHDR - 2] = { "PHDR: 0x", hex }, ++ [AT_PHENT - 2] = { "PHENT: ", dec }, ++ [AT_PHNUM - 2] = { "PHNUM: ", dec }, ++ [AT_PAGESZ - 2] = { "PAGESZ: ", dec }, ++ [AT_BASE - 2] = { "BASE: 0x", hex }, ++ [AT_FLAGS - 2] = { "FLAGS: 0x", hex }, ++ [AT_ENTRY - 2] = { "ENTRY: 0x", hex }, ++#ifndef __powerpc__ ++ /* For some odd reason these are not in sys/powerpc/include/elf.h. */ ++ [AT_NOTELF - 2] = { "NOTELF: ", hex }, ++ [AT_UID - 2] = { "UID: ", dec }, ++ [AT_EUID - 2] = { "EUID: ", dec }, ++ [AT_GID - 2] = { "GID: ", dec }, ++ [AT_EGID - 2] = { "EGID: ", dec }, ++#endif ++ [AT_EXECPATH - 2] = { "EXECPATH ", str }, ++ [AT_CANARY - 2] = { "CANARY: 0x", hex }, ++ [AT_CANARYLEN - 2] = { "CANARYLEN: ", dec }, ++ [AT_OSRELDATE - 2] = { "OSRELDATE: ", dec }, ++ [AT_NCPUS - 2] = { "NCPUS: ", dec }, ++ [AT_PAGESIZES - 2] = { "PAGESIZES: 0x", hex }, ++ [AT_PAGESIZESLEN - 2] = { "PAGESIZESLEN: ", dec }, ++ [AT_STACKPROT - 2] = { "STACKPROT: 0x", hex }, ++ }; ++ unsigned int idx = (unsigned int) (av->a_type - 2); ++ ++ if ((unsigned int) av->a_type < 2u || auxvars[idx].form == ignore) ++ continue; ++ ++ assert (AT_NULL == 0); ++ assert (AT_IGNORE == 1); ++ ++ if (idx < sizeof (auxvars) / sizeof (auxvars[0]) ++ && auxvars[idx].form != unknown) ++ { ++ const char *val = (char *) av->a_un.a_val; ++ ++ if (__builtin_expect (auxvars[idx].form, dec) == dec) ++ val = _itoa ((unsigned long int) av->a_un.a_val, ++ buf + sizeof buf - 1, 10, 0); ++ else if (__builtin_expect (auxvars[idx].form, hex) == hex) ++ val = _itoa ((unsigned long int) av->a_un.a_val, ++ buf + sizeof buf - 1, 16, 0); ++ ++ _dl_printf ("AT_%s%s\n", auxvars[idx].label, val); ++ ++ continue; ++ } ++ ++ /* Unknown value: print a generic line. */ ++ char buf2[17]; ++ buf2[sizeof (buf2) - 1] = '\0'; ++ const char *val2 = _itoa ((unsigned long int) av->a_un.a_val, ++ buf2 + sizeof buf2 - 1, 16, 0); ++ const char *val = _itoa ((unsigned long int) av->a_type, ++ buf + sizeof buf - 1, 16, 0); ++ _dl_printf ("AT_??? (0x%s): 0x%s\n", val, val2); ++ } ++} ++#endif ++ ++int ++attribute_hidden ++_dl_discover_osversion (void) ++{ ++ int request[2] = { CTL_KERN, KERN_OSRELDATE }; ++ size_t len; ++ int version; ++ ++ len = sizeof(version); ++ if (__sysctl (request, 2, &version, &len, NULL, 0) < 0) ++ return -1; ++ ++/* ++ * scheme is: Rxx ++ * 'R' is 0 if release branch or x.0-CURRENT before RELENG_*_0 ++ * is created, otherwise 1. ++ */ ++ ++ /* Convert to the GLIBC versioning system */ ++ return ((version / 100000) << 16) /* major */ ++ | (((version % 100000) / 1000) << 8) /* minor 0 - 99 */ ++ | ((version % 200)); /* subrelease 0 - 199 */ ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/dl-sysdep.h +@@ -0,0 +1,26 @@ ++/* System-specific settings for dynamic linker code. Linux version. ++ Copyright (C) 2005, 2008 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include_next ++ ++#ifndef __ASSEMBLER__ ++/* Get version of the OS. */ ++extern int _dl_discover_osversion (void) attribute_hidden; ++# define HAVE_DL_DISCOVER_OSVERSION 1 ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/faccessat.c +@@ -0,0 +1,198 @@ ++/* Test for access to file, relative to open directory. Linux version. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_faccessat (int fd, const char *path, int mode, int flag); ++libc_hidden_proto (__syscall_faccessat) ++ ++/* ++ The FreeBSD kernel do not test file access correctly when the ++ process' real user ID is superuser. In particular, they always return ++ zero when testing execute permissions without regard to whether the ++ file is executable. ++ ++ While this behaviour conforms to POSIX.1-2008, it is explicitely ++ discouraged. This wrapper implements the recommended behaviour. ++ */ ++ ++int ++faccessat (fd, file, mode, flag) ++ int fd; ++ const char *file; ++ int mode; ++ int flag; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (faccessat, 4, fd, file, mode, flag); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ { ++ if ((result == 0) && (mode & X_OK)) ++ { ++ uid_t uid = (flag & AT_EACCESS) ? __geteuid () : __getuid (); ++ if (uid == 0) ++ { ++ struct stat64 stats; ++ if (fstatat64 (fd, file, &stats, flag & AT_SYMLINK_NOFOLLOW)) ++ return -1; ++ if ((stats.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == 0) ++ { ++ __set_errno (EACCES); ++ return -1; ++ } ++ } ++ } ++ return result; ++ } ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (flag & ~(AT_SYMLINK_NOFOLLOW | AT_EACCESS)) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if ((!(flag & AT_EACCESS) || !__libc_enable_secure) ++ && !(flag & AT_SYMLINK_NOFOLLOW)) ++ { ++ /* If we are not set-uid or set-gid, access does the same. */ ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = ++ (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ return __access (file, mode); ++ } ++#endif ++ ++ struct stat64 stats; ++ if (fstatat64 (fd, file, &stats, flag & AT_SYMLINK_NOFOLLOW)) ++ return -1; ++ ++ mode &= (X_OK | W_OK | R_OK); /* Clear any bogus bits. */ ++#if R_OK != S_IROTH || W_OK != S_IWOTH || X_OK != S_IXOTH ++# error Oops, portability assumptions incorrect. ++#endif ++ ++ if (mode == F_OK) ++ return 0; /* The file exists. */ ++ ++ uid_t uid = (flag & AT_EACCESS) ? __geteuid () : __getuid (); ++ ++ /* The super-user can read and write any file, and execute any file ++ that anyone can execute. */ ++ if (uid == 0 && ((mode & X_OK) == 0 ++ || (stats.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))) ++ return 0; ++ ++ int granted = (uid == stats.st_uid ++ ? (unsigned int) (stats.st_mode & (mode << 6)) >> 6 ++ : (stats.st_gid == ((flag & AT_EACCESS) ++ ? __getegid () : __getgid ()) ++ || __group_member (stats.st_gid)) ++ ? (unsigned int) (stats.st_mode & (mode << 3)) >> 3 ++ : (stats.st_mode & mode)); ++ ++ if (granted == mode) ++ return 0; ++ ++ __set_errno (EACCES); ++ return -1; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fchmodat.c +@@ -0,0 +1,138 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_fchmodat (int fd, const char *path, ++ mode_t mode, int flag); ++libc_hidden_proto (__syscall_fchmodat) ++ ++/* This is specific to kFreeBSD. */ ++extern int __lchmod (__const char *__file, __mode_t __mode); ++ ++int ++fchmodat (fd, file, mode, flag) ++ int fd; ++ const char *file; ++ mode_t mode; ++ int flag; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (fchmodat, 4, fd, file, mode, flag); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (flag & ~AT_SYMLINK_NOFOLLOW) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ if (flag & AT_SYMLINK_NOFOLLOW) ++ return __lchmod(file, mode); ++ else ++ return __chmod(file, mode); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fchownat.c +@@ -0,0 +1,137 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_fchownat (int fd, const char *path, uid_t uid, ++ gid_t gid, int flag); ++libc_hidden_proto (__syscall_fchownat) ++ ++/* Change the owner and group of FILE. */ ++int ++fchownat (fd, file, owner, group, flag) ++ int fd; ++ const char *file; ++ uid_t owner; ++ gid_t group; ++ int flag; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (fchownat, 5, fd, file, owner, group, flag); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (flag & ~AT_SYMLINK_NOFOLLOW) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ if (flag & AT_SYMLINK_NOFOLLOW) ++ return __lchown(file, owner, group); ++ else ++ return __chown(file, owner, group); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fcntl.c +@@ -0,0 +1,69 @@ ++/* Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include /* Must come before . */ ++#include ++#include ++ ++#include ++ ++ ++#ifndef NO_CANCELLATION ++int ++__fcntl_nocancel (int fd, int cmd, ...) ++{ ++ va_list ap; ++ void *arg; ++ ++ va_start (ap, cmd); ++ arg = va_arg (ap, void *); ++ va_end (ap); ++ ++ return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg); ++} ++#endif ++ ++ ++int ++__libc_fcntl (int fd, int cmd, ...) ++{ ++ va_list ap; ++ void *arg; ++ ++ va_start (ap, cmd); ++ arg = va_arg (ap, void *); ++ va_end (ap); ++ ++ if (SINGLE_THREAD_P || cmd != F_SETLKW) ++ return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = INLINE_SYSCALL (fcntl, 3, fd, cmd, arg); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++libc_hidden_def (__libc_fcntl) ++ ++weak_alias (__libc_fcntl, __fcntl) ++libc_hidden_weak (__fcntl) ++weak_alias (__libc_fcntl, fcntl) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fexecve.c +@@ -0,0 +1,103 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_fexecve (int fd, char *const argv[], char *const envp[]); ++libc_hidden_proto (__syscall_fexecve); ++ ++/* Execute the file FD refers to, overlaying the running program image. ++ ARGV and ENVP are passed to the new program, as for `execve'. */ ++int ++fexecve (fd, argv, envp) ++ int fd; ++ char *const argv[]; ++ char *const envp[]; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (fexecve, 3, fd, argv, envp); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (fd < 0 || argv == NULL || envp == NULL) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type == KF_TYPE_VNODE && ++ kf->kf_vnode_type == KF_VTYPE_VREG) ++ return __execve (kf->kf_path, argv, envp); ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ __set_errno (EINVAL); ++ return -1; ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstat.c +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__fhstat (const fhandle_t *fhp, struct stat *buf) ++{ ++ struct stat16 buf16; ++ ++ if (__syscall_fhstat (fhp, &buf16) < 0) ++ return -1; ++ ++ /* Convert a 'struct stat16' to 'struct stat'. */ ++ stat16_to_stat (&buf16, buf); ++ ++ return 0; ++} ++ ++weak_alias (__fhstat, fhstat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstat64.c +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++fhstat64 (const fhandle_t *fhp, struct stat64 *buf) ++{ ++ struct stat16 buf16; ++ ++ if (__syscall_fhstat (fhp, &buf16) < 0) ++ return -1; ++ ++ /* Convert a 'struct stat16' to 'struct stat64'. */ ++ stat16_to_stat64 (&buf16, buf); ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstatfs.c +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++int ++fhstatfs (const fhandle_t *fhp, struct statfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fhstatfs (fhp, &kbuf) < 0) ++ return -1; ++ ++ statfs5_to_statfs (&kbuf, buf); ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fhstatfs64.c +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++int ++fhstatfs64 (const fhandle_t *fhp, struct statfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fhstatfs (fhp, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statfs64'. */ ++ statfs5_to_statfs64 (&kbuf, buf); ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatfs.c +@@ -0,0 +1,38 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++__fstatfs (int fd, struct statfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ statfs5_to_statfs (&kbuf, buf); ++ ++ return 0; ++} ++weak_alias (__fstatfs, fstatfs) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatfs64.c +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++__fstatfs64 (int fd, struct statfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statfs64'. */ ++ statfs5_to_statfs64 (&kbuf, buf); ++ ++ return 0; ++} ++ ++weak_alias (__fstatfs64, fstatfs64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatvfs.c +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++fstatvfs (int fd, struct statvfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs'. */ ++ statfs5_to_statvfs (&kbuf, buf); ++ ++ return 0; ++} ++libc_hidden_def (fstatvfs) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fstatvfs64.c +@@ -0,0 +1,41 @@ ++/* Return information about the filesystem on which FD resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FD resides. */ ++int ++__fstatvfs64 (int fd, struct statvfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_fstatfs (fd, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs64'. */ ++ statfs5_to_statvfs64 (&kbuf, buf); ++ ++ return 0; ++} ++ ++weak_alias (__fstatvfs64, fstatvfs64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate.c +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_ftruncate (int __fd, __off_t __length) __THROW; ++libc_hidden_proto (__syscall_ftruncate) ++extern int __syscall_freebsd6_ftruncate (int __fd, int __unused1, ++ __off_t __length) __THROW; ++libc_hidden_proto (__syscall_freebsd6_ftruncate) ++ ++int ++__ftruncate (int fd, __off_t length) ++{ ++ int result; ++ ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (ftruncate, 2, fd, length); ++ ++#ifndef __ASSUME_TRUNCATE_SYSCALL ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_ftruncate, 3, fd, 0, length); ++#endif ++ ++ return result; ++} ++ ++weak_alias (__ftruncate, ftruncate) ++ ++/* 'ftruncate64' is the same as 'ftruncate', because __off64_t == __off_t. */ ++strong_alias (__ftruncate, __ftruncate64) ++weak_alias (__ftruncate64, ftruncate64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ftruncate64.c +@@ -0,0 +1 @@ ++/* 'ftruncate64' is the same as 'ftruncate', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/futimesat.c +@@ -0,0 +1,138 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_futimesat (int fd, const char *path, ++ const struct timeval *times); ++libc_hidden_proto (__syscall_futimesat) ++ ++/* Change the access time of FILE relative to FD to TVP[0] and ++ the modification time of FILE to TVP[1]. */ ++int ++futimesat (fd, file, tvp) ++ int fd; ++ const char *file; ++ const struct timeval tvp[2]; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result; ++ ++ if (file == NULL) ++ return __futimes (fd, tvp); ++ ++ result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if ((file == NULL) || (fd != AT_FDCWD && file[0] != '/')) ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ if (file == NULL) ++ kf_buf = alloca (kf_len); ++ else ++ kf_buf = alloca (kf_len + filelen); ++ ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ if (file != NULL) ++ { ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ } ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ return __utimes(file, tvp); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstat.c +@@ -0,0 +1,48 @@ ++/* fxstat using FreeBSD fstat, nfstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__fxstat (int vers, int fd, struct stat *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_fstat (fd, __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat (&buf16, buf); ++ return result; ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ return __syscall_fstat (fd, CHECK_1 ((struct stat16 *) buf)); ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__fxstat) ++ ++weak_alias (__fxstat, _fxstat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstat64.c +@@ -0,0 +1,44 @@ ++/* fxstat using FreeBSD fstat, nfstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__fxstat64 (int vers, int fd, struct stat64 *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_fstat (fd, __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, buf); ++ return result; ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__fxstat64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstatat.c +@@ -0,0 +1,158 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++extern int __syscall_fstatat (int fd, const char *path, ++ struct stat16 *buf, int flag); ++libc_hidden_proto (__syscall_fstatat) ++ ++/* Get information about the file NAME relative to FD in ST. */ ++int ++__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result; ++ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ result = ++ INLINE_SYSCALL (fstatat, 4, fd, CHECK_STRING (file), ++ __ptrvalue (&buf16), flag); ++ if (result == 0) ++ stat16_to_stat (&buf16, st); ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ { ++ result = ++ INLINE_SYSCALL (fstatat, 4, fd, CHECK_STRING (file), ++ CHECK_1 ((struct stat16 *) st), flag); ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (flag & ~AT_SYMLINK_NOFOLLOW) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ if (flag & AT_SYMLINK_NOFOLLOW) ++ return __lxstat (vers, file, st); ++ else ++ return __xstat (vers, file, st); ++#endif ++} ++ ++libc_hidden_def (__fxstatat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/fxstatat64.c +@@ -0,0 +1,152 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++extern int __syscall_fstatat (int fd, const char *path, ++ struct stat16 *buf, int flag); ++libc_hidden_proto (__syscall_fstatat) ++ ++/* Get information about the file NAME relative to FD in ST. */ ++int ++__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result; ++ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ result = ++ INLINE_SYSCALL (fstatat, 4, fd, CHECK_STRING (file), ++ __ptrvalue (&buf16), flag); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, st); ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (flag & ~AT_SYMLINK_NOFOLLOW) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ if (flag & AT_SYMLINK_NOFOLLOW) ++ return __lxstat64 (vers, file, st); ++ else ++ return __xstat64 (vers, file, st); ++#endif ++} ++ ++libc_hidden_def (__fxstatat64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getcwd.c +@@ -0,0 +1,91 @@ ++/* Determine current working directory. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++/* The system calls only makes a lookup in the VFS cache, which can easily ++ fail. Therefore we use the generic version as a fallback. */ ++extern int __syscall_getcwd (char *__unbounded buf, unsigned int size); ++libc_hidden_proto (__syscall_getcwd) ++ ++static char *generic_getcwd (char *buf, size_t size) internal_function; ++ ++char * ++__getcwd (char *buf, size_t size) ++{ ++ char tmpbuf[PATH_MAX]; ++ ++ if (INLINE_SYSCALL (getcwd, 2, tmpbuf, PATH_MAX) >= 0) ++ { ++ size_t len = strlen (tmpbuf) + 1; ++ ++ if (size == 0) ++ { ++ if (__builtin_expect (buf != NULL, 0)) ++ { ++ __set_errno (EINVAL); ++ return NULL; ++ } ++ ++ buf = (char *) malloc (len); ++ if (__builtin_expect (buf == NULL, 0)) ++ { ++ __set_errno (ENOMEM); ++ return NULL; ++ } ++ } ++ else ++ { ++ if (size < len) ++ { ++ __set_errno (ERANGE); ++ return NULL; ++ } ++ ++ if (buf == NULL) ++ { ++ buf = (char *) malloc (size); ++ if (__builtin_expect (buf == NULL, 0)) ++ { ++ __set_errno (ENOMEM); ++ return NULL; ++ } ++ } ++ } ++ ++ memcpy (buf, tmpbuf, len); ++ return buf; ++ } ++ return generic_getcwd (buf, size); ++} ++ ++weak_alias (__getcwd, getcwd) ++ ++/* Get the code for the generic version. */ ++#define GETCWD_RETURN_TYPE static char * internal_function ++#define __getcwd generic_getcwd ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getdents.c +@@ -0,0 +1,90 @@ ++/* Read directory entries, 3 argument function. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#if 1 ++ ++/* Use the 3-argument system call. */ ++ ++extern int __syscall_getdents (int fd, char *buf, size_t nbytes); ++libc_hidden_proto (__syscall_getdents) ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Returns the number of bytes read; zero when at end of directory; or ++ -1 for errors. */ ++ssize_t ++internal_function ++__getdents (int fd, char *buf, size_t nbytes) ++{ ++ return __syscall_getdents (fd, buf, nbytes); ++} ++ ++/* Export getdents(). Not an internal_function. */ ++ssize_t ++getdents (int fd, char *buf, size_t nbytes) ++{ ++ return __syscall_getdents (fd, buf, nbytes); ++} ++ ++#else ++ ++/* Use the 4-argument system call. */ ++ ++extern int __syscall_getdirentries (int fd, char *buf, unsigned int nbytes, ++ long *basep); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Returns the number of bytes read; zero when at end of directory; or ++ -1 for errors. */ ++ssize_t ++internal_function ++__getdents (int fd, char *buf, size_t nbytes) ++{ ++ /* On 64-bit platforms, the system call differs from this function ++ because it takes an 'unsigned int', not a 'size_t'. */ ++ unsigned int nbytes32; ++ ++ nbytes32 = nbytes; ++ if (nbytes32 == nbytes) ++ return __syscall_getdirentries (fd, buf, nbytes32, NULL); ++ else ++ { ++ /* NBYTES is too large. */ ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++ ++/* Export getdents(). Not an internal_function. */ ++ssize_t ++getdents (int fd, char *buf, size_t nbytes) ++{ ++ return __getdents (fd, buf, nbytes); ++} ++ ++#endif ++ ++/* Since 'struct dirent64' == 'struct dirent', the functions '__getdents64' ++ and '__getdents' are equal. */ ++strong_alias (__getdents, __getdents64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getdents64.c +@@ -0,0 +1 @@ ++/* We have the function getdirentries64 in file getdirentries64.c. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getdirentries.c +@@ -0,0 +1,100 @@ ++/* Read directory entries, 4 argument function. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef GETDIRENTRIES ++# define GETDIRENTRIES getdirentries ++# define OFF_T off_t ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++ ++#if 1 ++ ++/* Use the 4-argument system call. */ ++ ++extern int __syscall_getdirentries (int fd, char *buf, unsigned int nbytes, ++ long *basep); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Reading starts at offset *BASEP, and *BASEP is updated with the new ++ position after reading. Returns the number of bytes read; zero when at ++ end of directory; or -1 for errors. */ ++/* FIXME: This is not what this function does. It starts reading at the ++ current position of FD, not at *BASEP. */ ++ssize_t ++GETDIRENTRIES (int fd, char *buf, size_t nbytes, OFF_T *basep) ++{ ++ /* On 32-bit platforms, the system call differs from this function because ++ it takes a 'long *', not an 'OFF_T *'. On 64-bit platforms, the system ++ call differs from this function because it takes an 'unsigned int', not ++ a 'size_t'. */ ++ unsigned int nbytes32; ++ ++ nbytes32 = nbytes; ++ if (nbytes32 == nbytes) ++ { ++ long base; ++ int result = __syscall_getdirentries (fd, buf, nbytes32, &base); ++ ++ if (result >= 0 && basep != NULL) ++ *basep = base; ++ return result; ++ } ++ else ++ { ++ /* NBYTES is too large. */ ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++ ++#else ++ ++/* Use the 3-argument system call. */ ++ ++extern int __syscall_getdents (int fd, char *buf, size_t nbytes); ++ ++/* Read directory entries from FD into BUF, reading at most NBYTES. ++ Reading starts at offset *BASEP, and *BASEP is updated with the new ++ position after reading. Returns the number of bytes read; zero when at ++ end of directory; or -1 for errors. */ ++/* FIXME: This is not what this function does. It starts reading at the ++ current position of FD, not at *BASEP. */ ++ssize_t ++GETDIRENTRIES (int fd, char *buf, size_t nbytes, OFF_T *basep) ++{ ++ OFF_T base = 0; ++ ssize_t result; ++ ++ if (basep) ++ base = __lseek (fd, (off_t) 0, SEEK_CUR); ++ ++ result = __syscall_getdents (fd, buf, nbytes); ++ ++ if (basep && result >= 0) ++ *basep = base; ++ return result; ++} ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getdirentries64.c +@@ -0,0 +1,5 @@ ++/* Since 'struct dirent64' == 'struct dirent', the functions 'getdirentries64' ++ and 'getdirentries' differ only in the type of the BASEP argument. */ ++#define GETDIRENTRIES getdirentries64 ++#define OFF_T off64_t ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getdomain.c +@@ -0,0 +1,50 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* Put the name of the current domain in no more than LEN bytes of NAME. ++ The result is null-terminated if LEN is large enough for the full ++ name and the terminator. */ ++ ++int ++getdomainname (char *name, size_t len) ++{ ++ /* Fetch the "kern.domainname" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_NISDOMAINNAME }; ++ size_t result_len = len; ++ ++ if (__sysctl (request, 2, name, &result_len, NULL, 0) < 0) ++ { ++ if (errno == ENOMEM) ++ __set_errno (ENAMETOOLONG); ++ return -1; ++ } ++ ++ if (result_len >= len) ++ { ++ __set_errno (ENAMETOOLONG); ++ return -1; ++ } ++ ++ name[result_len] = '\0'; ++ return 0; ++} ++libc_hidden_def (getdomainname) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getfsstat.c +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++int ++__getfsstat (struct statfs *buf, long bufsize, int flags) ++{ ++ long bufcount; ++ struct statfs_fbsd5 *tmpbuf; ++ int count, i; ++ ++ if (bufsize < 0) ++ bufsize = 0; ++ bufcount = bufsize / sizeof (struct statfs); ++ ++ if ((bufcount == 0) || (buf == NULL)) ++ tmpbuf = NULL; ++ else ++ tmpbuf = alloca(bufcount * sizeof (struct statfs_fbsd5)); ++ ++ count = __syscall_getfsstat (tmpbuf, bufcount * sizeof (struct statfs_fbsd5), flags); ++ if (tmpbuf && count > 0) ++ for (i = count - 1; i >= 0; i--) ++ statfs5_to_statfs (&tmpbuf[i], &buf[i]); ++ ++ return count; ++} ++ ++weak_alias (__getfsstat, getfsstat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getfsstat64.c +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++int ++__getfsstat64 (struct statfs64 *buf, long bufsize, int flags) ++{ ++ long bufcount; ++ struct statfs_fbsd5 *tmpbuf; ++ int count, i; ++ ++ if (bufsize < 0) ++ bufsize = 0; ++ bufcount = bufsize / sizeof (struct statfs64); ++ ++ if ((bufcount == 0) || (buf == NULL)) ++ tmpbuf = NULL; ++ else ++ tmpbuf = alloca(bufcount * sizeof (struct statfs_fbsd5)); ++ ++ count = __syscall_getfsstat (tmpbuf, bufcount * sizeof (struct statfs_fbsd5), flags); ++ if (tmpbuf && count > 0) ++ for (i = count - 1; i >= 0; i--) ++ statfs5_to_statfs64 (&tmpbuf[i], &buf[i]); ++ ++ return count; ++} ++ ++weak_alias (__getfsstat64, getfsstat64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/gethostid.c +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Return the current machine's Internet number. */ ++long int ++gethostid (void) ++{ ++ /* Fetch sysctl value of "kern.hostid". */ ++ int request[2] = { CTL_KERN, KERN_HOSTID }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 0; ++ ++ return result; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/gethostname.c +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* Put the name of the current host in no more than LEN bytes of NAME. ++ The result is null-terminated if LEN is large enough for the full ++ name and the terminator. */ ++ ++int ++__gethostname (char *name, size_t len) ++{ ++ /* Fetch the "kern.hostname" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_HOSTNAME }; ++ size_t result_len = len; ++ ++ if (__sysctl (request, 2, name, &result_len, NULL, 0) < 0) ++ { ++ if (errno == ENOMEM) ++ __set_errno (ENAMETOOLONG); ++ return -1; ++ } ++ ++ if (result_len >= len) ++ { ++ __set_errno (ENAMETOOLONG); ++ return -1; ++ } ++ ++ name[result_len] = '\0'; ++ return 0; ++} ++ ++weak_alias (__gethostname, gethostname) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getloadavg.c +@@ -0,0 +1,53 @@ ++/* Get system load averages. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++struct loadavg ++ { ++ unsigned int ldavg[3]; ++ long fscale; ++ }; ++ ++/* Put the 1 minute, 5 minute and 15 minute load averages into the first ++ NELEM elements of LOADAVG. Return the number written (never more than ++ three, but may be less than NELEM), or -1 if an error occurred. */ ++int ++getloadavg (double loadavg[], int nelem) ++{ ++ if (nelem > 3) ++ nelem = 3; ++ if (nelem > 0) ++ { ++ /* Fetch the "vm.loadavg" sysctl value. */ ++ int request[2] = { CTL_VM, VM_LOADAVG }; ++ struct loadavg result; ++ size_t result_len = sizeof (result); ++ int i; ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ return -1; ++ ++ for (i = 0; i < nelem; i++) ++ loadavg[i] = (double) result.ldavg[i] / (double) result.fscale; ++ } ++ return nelem; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getlogin.c +@@ -0,0 +1,50 @@ ++/* Non-reentrant function to return the current login name. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Defined in getlogin_r.c. */ ++extern char *__getlogin_cache; ++extern char __getlogin_cache_room[MAXLOGNAME]; ++ ++extern int __syscall_getlogin (char *__name, size_t __name_len); ++libc_hidden_proto (__syscall_getlogin) ++ ++/* Return the login name of the user, or NULL if it can't be determined. ++ The returned pointer, if not NULL, is good only until the next call. */ ++ ++char * ++getlogin (void) ++{ ++ if (__getlogin_cache == NULL) ++ { ++ if (INLINE_SYSCALL (getlogin, 2, __getlogin_cache_room, MAXLOGNAME) < 0) ++ return NULL; ++ /* The system call should return a NULL terminated name. */ ++ if (__memchr (__getlogin_cache_room, '\0', MAXLOGNAME) == NULL) ++ abort (); ++ __getlogin_cache = __getlogin_cache_room; ++ } ++ return (__getlogin_cache[0] ? __getlogin_cache : NULL); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getlogin_r.c +@@ -0,0 +1,70 @@ ++/* Reentrant function to return the current login name. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Cache the system call's return value. */ ++char *__getlogin_cache; ++/* The kernel never returns more than MAXLOGNAME bytes, therefore we don't ++ need more than that either. */ ++char __getlogin_cache_room[MAXLOGNAME]; ++ ++extern int __syscall_getlogin (char *__name, size_t __name_len); ++libc_hidden_proto (__syscall_getlogin) ++ ++/* Return at most NAME_LEN characters of the login name of the user in NAME. ++ If it cannot be determined or some other error occurred, return the error ++ code. Otherwise return 0. ++ Note that the getlogin_r function in FreeBSD libc returns a 'char *', ++ but SUSV2 wants a return type of 'int'. */ ++ ++int ++getlogin_r (char *name, size_t name_len) ++{ ++ size_t len; ++ ++ if (__getlogin_cache == NULL) ++ { ++ if (INLINE_SYSCALL (getlogin, 2, __getlogin_cache_room, MAXLOGNAME) < 0) ++ return -1; ++ /* The system call should return a NULL terminated name. */ ++ if (__memchr (__getlogin_cache_room, '\0', MAXLOGNAME) == NULL) ++ abort (); ++ __getlogin_cache = __getlogin_cache_room; ++ } ++ ++ len = strlen (__getlogin_cache); ++ if (__builtin_expect (len < name_len, 1)) ++ { ++ memcpy (name, __getlogin_cache, len + 1); ++ return 0; ++ } ++ else ++ { ++ __set_errno (ERANGE); ++ return -1; ++ } ++} ++libc_hidden_def (getlogin_r) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getmntinfo.c +@@ -0,0 +1,80 @@ ++/* Return list of mounted filesystems. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++static int mntbufsize; ++static struct statfs *mntbuf; ++ ++/* Return list of mounted filesystems. ++ Inherently not multithread-safe. */ ++int ++__getmntinfo (struct statfs **mntbufp, int flags) ++{ ++ for (;;) ++ { ++ int count = __getfsstat (NULL, 0, flags); ++ int count2; ++ ++ if (count < 0) ++ return 0; ++ ++ if (count == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count > mntbufsize) ++ { ++ if (mntbuf != NULL) ++ free (mntbuf); ++ mntbufsize = 0; ++ mntbuf = (struct statfs *) malloc (count * sizeof (struct statfs)); ++ if (mntbuf == NULL) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ mntbufsize = count; ++ } ++ ++ count2 = __getfsstat (mntbuf, count * sizeof (struct statfs), flags); ++ ++ if (count2 < 0) ++ return 0; ++ ++ if (count2 == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count2 <= count) ++ { ++ *mntbufp = mntbuf; ++ return count2; ++ } ++ } ++} ++ ++weak_alias (__getmntinfo, getmntinfo) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getmntinfo64.c +@@ -0,0 +1,78 @@ ++/* Return list of mounted filesystems. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++static int mntbufsize; ++static struct statfs64 *mntbuf; ++ ++/* Return list of mounted filesystems. ++ Inherently not multithread-safe. */ ++int ++getmntinfo64 (struct statfs64 **mntbufp, int flags) ++{ ++ for (;;) ++ { ++ int count = __getfsstat64 (NULL, 0, flags); ++ int count2; ++ ++ if (count < 0) ++ return 0; ++ ++ if (count == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count > mntbufsize) ++ { ++ if (mntbuf != NULL) ++ free (mntbuf); ++ mntbufsize = 0; ++ mntbuf = (struct statfs64 *) malloc (count * sizeof (struct statfs64)); ++ if (mntbuf == NULL) ++ { ++ __set_errno (ENOMEM); ++ return 0; ++ } ++ mntbufsize = count; ++ } ++ ++ count2 = __getfsstat64 (mntbuf, count * sizeof (struct statfs64), flags); ++ ++ if (count2 < 0) ++ return 0; ++ ++ if (count2 == 0) ++ { ++ __set_errno (0); ++ return 0; ++ } ++ ++ if (count2 <= count) ++ { ++ *mntbufp = mntbuf; ++ return count2; ++ } ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getosreldate.c +@@ -0,0 +1,58 @@ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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 ++#include ++ ++int ++__getosreldate(void) ++{ ++ static int osreldate; ++ ++ int mib[2]; ++ size_t size; ++ char *temp; ++ ++ if (osreldate == 0) ++ { ++ if ((temp = getenv("OSVERSION"))) { ++ osreldate = atoi(temp); ++ return (osreldate); ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_OSRELDATE; ++ size = sizeof osreldate; ++ if (__sysctl(mib, 2, &osreldate, &size, NULL, 0) == -1) ++ return (-1); ++ } ++ return (osreldate); ++} ++weak_alias (__getosreldate, getosreldate) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getpagesize.c +@@ -0,0 +1,42 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Return the system page size. */ ++int ++__getpagesize (void) ++{ ++ static int cached_pagesize /* = 0 */; ++ ++ if (cached_pagesize == 0) ++ { ++ /* Fetch sysctl value of "hw.pagesize". */ ++ int request[2] = { CTL_HW, HW_PAGESIZE }; ++ size_t result_len = sizeof (cached_pagesize); ++ ++ if (__sysctl (request, 2, &cached_pagesize, &result_len, NULL, 0) < 0) ++ return -1; ++ } ++ return cached_pagesize; ++} ++libc_hidden_def (__getpagesize) ++ ++weak_alias (__getpagesize, getpagesize) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getpt.c +@@ -0,0 +1,92 @@ ++/* Copyright (C) 1998-1999, 2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* Prefix for master pseudo terminal nodes. */ ++#define _PATH_PTY "/dev/pty" ++ ++ ++/* Letters indicating a series of pseudo terminals. */ ++#ifndef PTYNAME1 ++#define PTYNAME1 "pqrs" ++#endif ++const char __libc_ptyname1[] attribute_hidden = PTYNAME1; ++ ++/* Letters indicating the position within a series. */ ++#ifndef PTYNAME2 ++#define PTYNAME2 "0123456789abcdefghijklmnopqrstuv"; ++#endif ++const char __libc_ptyname2[] attribute_hidden = PTYNAME2; ++ ++ ++/* Open a master pseudo terminal and return its file descriptor. */ ++int ++__posix_openpt (int oflag) ++{ ++ char buf[sizeof (_PATH_PTY) + 2]; ++ const char *p, *q; ++ char *s; ++ ++ s = __mempcpy (buf, _PATH_PTY, sizeof (_PATH_PTY) - 1); ++ /* s[0] and s[1] will be filled in the loop. */ ++ s[2] = '\0'; ++ ++ for (p = __libc_ptyname1; *p != '\0'; ++p) ++ { ++ s[0] = *p; ++ ++ for (q = __libc_ptyname2; *q != '\0'; ++q) ++ { ++ int fd; ++ ++ s[1] = *q; ++ ++ fd = __open (buf, oflag); ++ if (fd >= 0) ++ { ++ if (!(oflag & O_NOCTTY)) ++ __ioctl (fd, TIOCSCTTY, NULL); ++ ++ return fd; ++ } ++ ++ if (errno == ENOENT) ++ return -1; ++ } ++ } ++ ++ __set_errno (ENOENT); ++ return -1; ++} ++ ++weak_alias (__posix_openpt, posix_openpt) ++ ++ ++int ++__getpt (void) ++{ ++ return __posix_openpt (O_RDWR); ++} ++ ++weak_alias (__getpt, getpt) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getrlimit64.c +@@ -0,0 +1 @@ ++/* 'getrlimit64' is the same as 'getrlimit', because __rlim64_t == __rlim_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getsysstats.c +@@ -0,0 +1,109 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++ ++int ++__get_nprocs (void) ++{ ++ /* Fetch sysctl value of "hw.ncpu". */ ++ int request[2] = { CTL_HW, HW_NCPU }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 1; ++ ++ return result; ++} ++ ++weak_alias (__get_nprocs, get_nprocs) ++ ++ ++int ++__get_nprocs_conf (void) ++{ ++ /* We don't know how to distinguish between configured and active CPUs. */ ++ return __get_nprocs (); ++} ++ ++weak_alias (__get_nprocs_conf, get_nprocs_conf) ++ ++ ++long int ++__get_phys_pages (void) ++{ ++ /* Fetch sysctl value of "hw.physmem". This is a little smaller than ++ the real installed memory size, but so what. */ ++ int request[2] = { CTL_HW, HW_PHYSMEM }; ++ unsigned long int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ return -1; ++ ++ return result / __getpagesize(); ++} ++ ++weak_alias (__get_phys_pages, get_phys_pages) ++ ++ ++long int ++__get_avphys_pages (void) ++{ ++#if 1 ++ int result1; ++ int result2; ++ { ++ /* Fetch sysctl value of "vm.stats.vm.v_inactive_count". */ ++ size_t result_len = sizeof (result1); ++ ++ if (__sysctlbyname ("vm.stats.vm.v_inactive_count", &result1, &result_len, ++ NULL, 0) < 0) ++ return -1; ++ } ++ { ++ /* Fetch sysctl value of "vm.stats.vm.v_free_count". */ ++ size_t result_len = sizeof (result2); ++ ++ if (__sysctlbyname ("vm.stats.vm.v_free_count", &result2, &result_len, ++ NULL, 0) < 0) ++ return -1; ++ } ++ ++ return result1 + result2; ++#else ++ /* This does not appear to work. */ ++ /* Fetch v_inactive_count field of sysctl value of "vm.vmmeter". */ ++ int request[2] = { CTL_VM, VM_METER }; ++ struct vmmeter result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ return -1; ++ ++ return result.v_inactive_count; ++#endif ++} ++ ++weak_alias (__get_avphys_pages, get_avphys_pages) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/getvfsbyname.c +@@ -0,0 +1,71 @@ ++/* ++ * Copyright (c) 1995 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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 ++#include ++#include ++#include ++#include ++ ++/* ++ * Given a filesystem name, determine if it is resident in the kernel, ++ * and if it is resident, return its xvfsconf structure. ++ */ ++int ++__getvfsbyname(fsname, vfcp) ++ const char *fsname; ++ struct xvfsconf *vfcp; ++{ ++ struct xvfsconf *xvfsp; ++ size_t buflen; ++ int cnt, i; ++ ++ if (sysctlbyname("vfs.conflist", NULL, &buflen, NULL, 0) < 0) ++ return (-1); ++ xvfsp = malloc(buflen); ++ if (xvfsp == NULL) ++ return (-1); ++ if (sysctlbyname("vfs.conflist", xvfsp, &buflen, NULL, 0) < 0) { ++ free(xvfsp); ++ return (-1); ++ } ++ cnt = buflen / sizeof(struct xvfsconf); ++ for (i = 0; i < cnt; i++) { ++ if (strcmp(fsname, xvfsp[i].vfc_name) == 0) { ++ memcpy(vfcp, xvfsp + i, sizeof(struct xvfsconf)); ++ free(xvfsp); ++ return (0); ++ } ++ } ++ free(xvfsp); ++ __set_errno (ENOENT); ++ return (-1); ++} ++weak_alias (__getvfsbyname, getvfsbyname) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/glob.c +@@ -0,0 +1,3 @@ ++/* 'glob64' is different from 'glob', because ++ 'struct stat64' != 'struct stat'. */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/glob64.c +@@ -0,0 +1,3 @@ ++/* 'glob64' is different from 'glob', because ++ 'struct stat64' != 'struct stat'. */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/gtty.c +@@ -0,0 +1,2 @@ ++/* use stub only variant */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/Makefile +@@ -0,0 +1,19 @@ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += \ ++ sys/io.h \ ++ sys/perm.h \ ++ sys/vm86.h ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),misc) ++# For and . ++sysdep_routines += i386_get_ioperm i386_set_ioperm iopl ++# For . ++sysdep_routines += i386_vm86 ++# For . ++sysdep_routines += i386_get_ldt i386_set_ldt ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/Versions +@@ -0,0 +1,7 @@ ++libc { ++ GLIBC_2.2.6 { ++ i386_get_ioperm; i386_set_ioperm; i386_vm86; ++ ioperm; iopl; ++ i386_get_ldt; i386_set_ldt; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/____longjmp_chk.S +@@ -0,0 +1,7 @@ ++/* Jump to the position specified by ENV, causing the ++ setjmp call there to return VAL, or 1 if VAL is 0. ++ void __longjmp (__jmp_buf env, int val). */ ++ ++#warning longjmp_chk unimplemented ++#define __longjmp ____longjmp_chk ++#include<__longjmp.S> +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/mcontext.h +@@ -0,0 +1,111 @@ ++/* Machine-dependent processor state structure for FreeBSD. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. i386 version. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/*- ++ * Copyright (c) 1999 Marcel Moolenaar ++ * 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 ++ * in this position and unchanged. ++ * 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. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. ++ * ++ * based on $FreeBSD: src/sys/i386/include/ucontext.h,v 1.10 2002/12/02 19:58:55 deischen Exp $ ++ */ ++ ++/* Whole processor state. */ ++typedef struct ++ { ++ /* ++ * The first 20 fields must match the definition of ++ * sigcontext. So that we can support sigcontext ++ * and ucontext_t at the same time. ++ */ ++ ++ int mc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ int mc_gs; ++ int mc_fs; ++ int mc_es; ++ int mc_ds; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ int mc_edi; ++ int mc_esi; ++ int mc_ebp; ++ int mc_isp; /* Not used; sc_esp is used instead. */ ++ int mc_ebx; ++ int mc_edx; ++ int mc_ecx; ++ int mc_eax; ++ ++ int mc_trapno; ++ int mc_err; ++ ++ int mc_eip; /* Instruction pointer. */ ++ int mc_cs; /* Code segment register. */ ++ ++ int mc_efl; /* Processor flags. */ ++ ++ int mc_esp; /* This stack pointer is used. */ ++ int mc_ss; /* Stack segment register. */ ++ ++ int mc_len; /* sizeof(mcontext_t) */ ++#define _MC_FPFMT_NODEV 0x10000 /* device not present or configured */ ++#define _MC_FPFMT_387 0x10001 ++#define _MC_FPFMT_XMM 0x10002 ++ int mc_fpformat; ++#define _MC_FPOWNED_NONE 0x20000 /* FP state not used */ ++#define _MC_FPOWNED_FPU 0x20001 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 0x20002 /* FP state came from PCB */ ++ int mc_ownedfp; ++ int mc_spare1[1]; /* align next field to 16 bytes */ ++ /* ++ * See for the internals of mc_fpstate[]. ++ */ ++ int mc_fpstate[128] __attribute__((aligned(16))); ++ int mc_spare2[8]; ++ } mcontext_t; ++ ++/* Traditional BSD names for some members. */ ++#define mc_eflags mc_efl +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/bits/sigcontext.h +@@ -0,0 +1,97 @@ ++/* Machine-dependent signal context structure for FreeBSD. i386 version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++/* State of this thread when the signal was taken. ++ The unions below are for compatibility with Linux (whose sigcontext ++ components don't have sc_ prefix) */ ++__extension__ struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ int sc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ union { int sc_gs; int gs; }; ++ union { int sc_fs; int fs; }; ++ union { int sc_es; int es; }; ++ union { int sc_ds; int ds; }; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ union { int sc_edi; int edi; }; ++ union { int sc_esi; int esi; }; ++ union { int sc_ebp; int ebp; }; ++ union { int sc_isp; int isp; }; /* Not used; sc_esp is used instead. */ ++ union { int sc_ebx; int ebx; }; ++ union { int sc_edx; int edx; }; ++ union { int sc_ecx; int ecx; }; ++ union { int sc_eax; int eax; }; ++ ++ union { int sc_trapno; int trapno; }; ++ union { int sc_err; int err; }; ++ ++ union { int sc_eip; int eip; }; /* Instruction pointer. */ ++ union { int sc_cs; int cs; }; /* Code segment register. */ ++ ++ union { int sc_efl; int eflags; }; /* Processor flags. */ ++ ++ union { int sc_esp; int esp; }; /* This stack pointer is used. */ ++ union { int sc_ss; int ss; }; /* Stack segment register. */ ++ ++ int sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ int sc_fpformat; ++ int sc_ownedfp; ++ int sc_spare1[1]; ++ int sc_fpstate[128] __attribute__((aligned(16))); ++ int sc_spare2[8]; ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_esp /* Stack pointer. */ ++#define sc_fp sc_ebp /* Frame pointer. */ ++#define sc_pc sc_eip /* Process counter. */ ++#define sc_ps sc_efl ++#define sc_eflags sc_efl ++ ++#if 1 /* FIXME: These need verification. */ ++ ++/* Codes for SIGILL. */ ++#define ILL_PRIVIN_FAULT 1 ++#define ILL_ALIGN_FAULT 14 ++#define ILL_FPOP_FAULT 24 ++ ++/* Codes for SIGBUS. */ ++#define BUS_PAGE_FAULT 12 ++#define BUS_SEGNP_FAULT 26 ++#define BUS_STK_FAULT 27 ++#define BUS_SEGM_FAULT 29 ++ ++#endif ++ ++#endif /* _BITS_SIGCONTEXT_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/dl-machine.h +@@ -0,0 +1,145 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. ++ FreeBSD i386 specific version of dl_platform_init() ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++/* For FreeBSD we redefine an initialization function. ++ This is called very early in dl_sysdep_start. */ ++ ++#if 0 ++Under FreeBSD: ++#define AT_EXECPATH 15 /* Path to the executable. */ ++ ++Under Linux: ++#define AT_PLATFORM 15 /* String identifying platform. */ ++ ++Filled entries from kernel: ++ ++ if (args->execfd != -1) ++ AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd); ++ AUXARGS_ENTRY(pos, AT_PHDR, args->phdr); ++ AUXARGS_ENTRY(pos, AT_PHENT, args->phent); ++ AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum); ++ AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz); ++ AUXARGS_ENTRY(pos, AT_FLAGS, args->flags); ++ AUXARGS_ENTRY(pos, AT_ENTRY, args->entry); ++ AUXARGS_ENTRY(pos, AT_BASE, args->base); ++ if (imgp->execpathp != 0) ++ AUXARGS_ENTRY(pos, AT_EXECPATH, imgp->execpathp); ++ AUXARGS_ENTRY(pos, AT_NULL, 0); ++ ++#endif ++ ++#include_next ++ ++#undef DL_PLATFORM_INIT ++#define DL_PLATFORM_INIT dl_platform_kfreebsd_i386_init () ++ ++#ifndef _DL_MACHINE_KFREEBSD ++#define _DL_MACHINE_KFREEBSD ++ ++#define X86_EFLAGS_AC 0x00040000 /* Alignment Check */ ++#define X86_EFLAGS_ID 0x00200000 /* CPUID detection flag */ ++ ++static inline int try_flip_flags(int val) ++{ ++ int ret; ++ __asm__( ++ "pushfl\n\t" ++ "pushfl\n\t" ++ "popl %%ecx\n\t" ++ "xorl %%ecx,%%eax\n\t" ++ "pushl %%eax\n\t" ++ "popfl\n\t" ++ "pushfl\n\t" ++ "popl %%eax\n\t" ++ "xorl %%ecx,%%eax\n\t" ++ "popfl\n\t" ++ : "=a" (ret) ++ : "0" (val) ++ : "cx" ++ ); ++ return ret; ++} ++ ++static inline void cpuid(int op, int *eax, int *edx) ++{ ++ __asm__( ++ "push %%ebx\n\t" ++ "cpuid\n\t" ++ "pop %%ebx\n\t" ++ : "=a" (*eax), ++ "=d" (*edx) ++ : "0" (op) ++ : "cx" ++ ); ++} ++ ++static inline void __attribute__ ((unused)) ++dl_platform_kfreebsd_i386_init (void) ++{ ++ /* we don't have reasonable AT_PLATFORM from kernel ++ try to use cpuid to get one, also guess AT_HWCAP */ ++ ++ int val, hwcap; ++ ++ val = try_flip_flags(X86_EFLAGS_AC | X86_EFLAGS_ID); ++ ++ if (!(val & X86_EFLAGS_AC)) ++ { ++ /* 386 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[0]; ++ GLRO(dl_hwcap) = 0; ++ } ++ else if (!(val & X86_EFLAGS_ID)) ++ { ++ /* 486 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[1]; ++ GLRO(dl_hwcap) = 0; ++ } ++ else ++ { ++ cpuid(0, &val, &hwcap); ++ if (val == 0) ++ { ++ /* 486 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[1]; ++ GLRO(dl_hwcap) = 0; ++ } ++ else ++ { ++ cpuid(1, &val, &hwcap); ++ GLRO(dl_hwcap) = hwcap; ++ switch (val & 0xf00) ++ { ++ case 0x400: /* 486 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[1]; ++ break; ++ case 0x500: /* 586 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[2]; ++ break; ++ default: /* 686 */ ++ GLRO(dl_platform) = GLRO(dl_x86_platforms)[3]; ++ } ++ } ++ } ++} ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/dl-procinfo.h +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/get_clockfreq.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/getcontext.S +@@ -0,0 +1,38 @@ ++/* Save current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__getcontext) ++ clc ++ movl 0(%esp), %ecx /* save the return PC value */ ++ ++ DO_CALL (getcontext, 1) ++ jb SYSCALL_ERROR_LABEL ++ ++ addl $4, %esp /* remove stale return address */ ++ jmp *%ecx ++ ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__getcontext) ++ ++weak_alias(__getcontext, getcontext) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ioperm.c +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++i386_get_ioperm (unsigned long int from, unsigned long int *num, int *turned_on) ++{ ++ struct i386_ioperm_args args; ++ ++ args.start = from; ++ ++ if (__sysarch (I386_GET_IOPERM, &args) < 0) ++ return -1; ++ ++ *num = args.length; ++ *turned_on = args.enable; ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_get_ldt.c +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++int ++i386_get_ldt (int from, union descriptor *descs, int num) ++{ ++ struct i386_ldt_args args; ++ ++ args.start = from; ++ args.descs = descs; ++ args.num = num; ++ ++ if (__sysarch (I386_GET_LDT, &args) < 0) ++ return -1; ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ioperm.c +@@ -0,0 +1,34 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++i386_set_ioperm (unsigned long int from, unsigned long int num, int turn_on) ++{ ++ struct i386_ioperm_args args; ++ ++ args.start = from; ++ args.length = num; ++ args.enable = turn_on; ++ ++ return __sysarch (I386_SET_IOPERM, &args); ++} ++ ++strong_alias (i386_set_ioperm, ioperm) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_set_ldt.c +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++int ++i386_set_ldt (int from, union descriptor *descs, int num) ++{ ++ struct i386_ldt_args args; ++ ++ args.start = from; ++ args.descs = descs; ++ args.num = num; ++ ++ if (__sysarch (I386_SET_LDT, &args) < 0) ++ return -1; ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i386_vm86.c +@@ -0,0 +1,31 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++i386_vm86 (int cmd, void *arg) ++{ ++ struct i386_vm86_args args; ++ ++ args.sub_op = cmd; ++ args.sub_args = arg; ++ ++ return __sysarch (I386_VM86, &args); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i486/linuxthreads/pt-machine.h +@@ -0,0 +1,8 @@ ++ ++/* i486+ is almost same as plain i386 version */ ++#include_next ++ ++/* but compare-and-swap is always available */ ++ ++#undef TEST_FOR_COMPARE_AND_SWAP ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i586/linuxthreads/pt-machine.h +@@ -0,0 +1,8 @@ ++ ++/* i486+ is almost same as plain i386 version */ ++#include_next ++ ++/* but compare-and-swap is always available */ ++ ++#undef TEST_FOR_COMPARE_AND_SWAP ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/i686/linuxthreads/pt-machine.h +@@ -0,0 +1,8 @@ ++ ++/* i486+ is almost same as plain i386 version */ ++#include_next ++ ++/* but compare-and-swap is always available */ ++ ++#undef TEST_FOR_COMPARE_AND_SWAP ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/iopl.c +@@ -0,0 +1,54 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include /* open */ ++#include /* close */ ++ ++static int __iopl_fd = -1; ++ ++int ++iopl (int level) ++ { ++ switch (level) ++ { ++ case 3: ++ if (__iopl_fd != -1) ++ return 0; ++ ++ __iopl_fd = __open ("/dev/io", O_RDWR); ++ if (__iopl_fd == -1) ++ { ++ if (errno == EACCES) ++ __set_errno (EPERM); ++ return -1; ++ } ++ return 0; ++ ++ case 0: ++ if (__iopl_fd != -1) ++ if (__close (__iopl_fd) == -1) ++ return 1; ++ return 0; ++ ++ default: ++ __set_errno (EINVAL); ++ return -1; ++ } ++ } +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/ldconfig.h +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#define SYSDEP_KNOWN_INTERPRETER_NAMES \ ++ { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ ++ { "/libexec/ld-elf.so.1", FLAG_ELF_LIBC5 }, ++ ++#define SYSDEP_KNOWN_LIBRARY_NAMES \ ++ { "libc.so.0.1", FLAG_ELF_LIBC6 }, \ ++ { "libm.so.1", FLAG_ELF_LIBC6 }, \ ++ { "libc.so.4", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.4", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.5", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.5", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.6", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.6", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.7", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.7", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.8", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.8", FLAG_ELF_LIBC5 }, +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/linuxthreads/pt-machine.h +@@ -0,0 +1,76 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ ix86 version for FreeBSD. ++ Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public License as ++ published by the Free Software Foundation; either version 2.1 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _FREEBSD_PT_MACHINE_H ++#define _FREEBSD_PT_MACHINE_H 1 ++ ++/* ++ some parts are common with linux/i386 version ++ ++ linux specific parts should be in ++ linuxthreads/sysdeps/unix/sysv/linux/i386/ ++ but they are included directly in ++ linuxthreads/sysdeps/i386/ ++ ++ so include them ++ ++ */ ++ ++#include ++#include ++ ++/* hack them */ ++ ++#ifndef __ASSEMBLER__ ++ ++#undef INIT_THREAD_SELF ++#undef FREE_THREAD ++ ++/* The P4 and above really want some help to prevent overheating. */ ++#define BUSY_WAIT_NOP __asm__ ("rep; nop") ++ ++/* and add few FreeBSD specifics */ ++ ++#include ++ ++/* Initialize the thread-unique value. */ ++ ++#define INIT_THREAD_SELF(descr, nr) \ ++{ \ ++ long tmp; \ ++ tmp = (long) descr; \ ++ if (sysarch(I386_SET_GSBASE, &tmp) != 0) \ ++ { \ ++ abort(); \ ++ } \ ++} ++ ++#define FREE_THREAD(descr, nr) do { } while (0) ++ ++#endif /* __ASSEMBLER__ */ ++ ++/* We want the OS to assign stack addresses. */ ++#define FLOATING_STACKS 1 ++ ++/* Maximum size of the stack if the rlimit is unlimited. */ ++#define ARCH_STACK_MAX_SIZE 8*1024*1024 ++ ++#endif /* _FREEBSD_PT_MACHINE_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/linuxthreads/sysdep-cancel.h +@@ -0,0 +1,166 @@ ++/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Jakub Jelinek , 2002. ++ Modification for FreeBSD by Petr Salinger, 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ SINGLE_THREAD_P; \ ++ jne L(pseudo_cancel); \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ ret; \ ++ L(pseudo_cancel): \ ++ CENABLE \ ++ movl %eax, %ecx; \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ int $0x80; \ ++ PUSHRESULT; \ ++ movl %ecx, %eax; \ ++ CDISABLE; \ ++ POPRESULT; \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++/* ++ on FreeBSD some syscalls return result in pair edx+eax, ++ therefore proper way would be ++ ++# define PUSHRESULT pushl %edx; pushl %eax; pushfl ++# define POPRESULT popfl; popl %eax; popl %edx ++ ++ for FreeBSD 5.4 affected syscalls are ++ ++ lseek() ++ fork() ++ vfork() ++ rfork() ++ pipe() ++ ++ none of them is cancelable, therefore ++*/ ++ ++# define PUSHRESULT pushl %eax; cfi_adjust_cfa_offset (4); pushfl; cfi_adjust_cfa_offset (4) ++# define POPRESULT popfl; cfi_adjust_cfa_offset (-4); popl %eax; cfi_adjust_cfa_offset (-4) ++ ++# ifdef IS_IN_libpthread ++# define CENABLE call __pthread_enable_asynccancel; ++# define CDISABLE call __pthread_disable_asynccancel ++# elif defined IS_IN_librt ++# ifdef PIC ++# define CENABLE pushl %ebx; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (ebx, 0); \ ++ call __i686.get_pc_thunk.bx; \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ ++ call __librt_enable_asynccancel@PLT; \ ++ popl %ebx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (ebx); ++# define CDISABLE pushl %ebx; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (ebx, 0); \ ++ call __i686.get_pc_thunk.bx; \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ ++ call __librt_disable_asynccancel@PLT; \ ++ popl %ebx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (ebx); ++# else ++# define CENABLE call __librt_enable_asynccancel; ++# define CDISABLE call __librt_disable_asynccancel ++# endif ++# else ++# define CENABLE call __libc_enable_asynccancel; ++# define CDISABLE call __libc_disable_asynccancel ++# endif ++ ++#if !defined NOT_IN_libc ++# define __local_multiple_threads __libc_multiple_threads ++#elif defined IS_IN_libpthread ++# define __local_multiple_threads __pthread_multiple_threads ++#else ++# define __local_multiple_threads __librt_multiple_threads ++#endif ++ ++# ifndef __ASSEMBLER__ ++# if defined FLOATING_STACKS && USE___THREAD && defined PIC ++# define SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_header.data.multiple_threads) == 0, 1) ++# else ++extern int __local_multiple_threads ++# if !defined NOT_IN_libc || defined IS_IN_libpthread ++ attribute_hidden; ++# else ++ ; ++# endif ++# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) ++# endif ++# else ++# if !defined PIC ++# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads ++# elif defined FLOATING_STACKS && USE___THREAD ++# define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET ++# else ++# if !defined NOT_IN_libc || defined IS_IN_libpthread ++# define __SINGLE_THREAD_CMP cmpl $0, __local_multiple_threads@GOTOFF(%ecx) ++# else ++# define __SINGLE_THREAD_CMP \ ++ movl __local_multiple_threads@GOT(%ecx), %ecx;\ ++ cmpl $0, (%ecx) ++# endif ++# if !defined HAVE_HIDDEN || !USE___THREAD ++# define SINGLE_THREAD_P \ ++ SETUP_PIC_REG (cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ __SINGLE_THREAD_CMP ++# else ++# define SINGLE_THREAD_P \ ++ call __i686.get_pc_thunk.cx; \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ __SINGLE_THREAD_CMP ++# endif ++# endif ++# endif ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++# define NO_CANCELLATION 1 ++ ++#endif ++ ++#ifndef __ASSEMBLER__ ++# define RTLD_SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_header.data.multiple_threads) == 0, 1) ++#endif ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/linuxthreads/tls.h +@@ -0,0 +1,93 @@ ++/* Definition for thread-local data handling. linuxthreads/i386 version. ++ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD by Petr Salinger, 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_TLS_H ++#define _FREEBSD_TLS_H ++ ++#include ++ ++/* We can support TLS only if the floating-stack support is available. ++ To avoid bothering with the TLS support code at all, ++ use configure --without-tls. ++ ++ We need USE_TLS to be consistently defined, for ldsodefs.h conditionals. ++ But some of the code below can cause problems in building libpthread ++*/ ++ ++#if defined HAVE_TLS_SUPPORT \ ++ && (defined FLOATING_STACKS || !defined IS_IN_libpthread) ++ ++# ifndef __ASSEMBLER__ ++ ++#undef TLS_INIT_TP ++#undef TLS_SETUP_GS_SEGMENT ++ ++#include ++#include ++ ++ ++/* Code to initially initialize the thread pointer. This might need ++ special attention since 'errno' is not yet available and if the ++ operation can cause a failure 'errno' must not be touched. */ ++ ++# define TLS_DO_SET_GSBASE(descr) \ ++({ \ ++ long base = (long) descr; \ ++ int result; \ ++ asm volatile ( \ ++ "pushl %3\n\t" \ ++ "pushl %2\n\t" \ ++ "pushl %1\n\t" \ ++ "int $0x80\n\t" \ ++ "popl %3\n\t" \ ++ "popl %3\n\t" \ ++ "popl %3\n\t" \ ++ : "=a" (result) \ ++ : "0" (SYS_sysarch), \ ++ "i" (I386_SET_GSBASE), \ ++ "d" (&base) \ ++ : "memory", "cc" ); \ ++ result; \ ++}) ++ ++# define TLS_SETUP_GS_SEGMENT(descr, secondcall) \ ++ (TLS_DO_SET_GSBASE(descr) \ ++ ? "set_thread_area failed when setting up thread-local storage\n" : NULL) ++ ++/* The value of this macro is null if successful, or an error string. */ ++ ++# define TLS_INIT_TP(descr, secondcall) \ ++ ({ \ ++ void *_descr = (descr); \ ++ tcbhead_t *head = _descr; \ ++ \ ++ head->tcb = _descr; \ ++ /* For now the thread descriptor is at the same address. */ \ ++ head->self = _descr; \ ++ \ ++ INIT_SYSINFO; \ ++ TLS_SETUP_GS_SEGMENT (_descr, secondcall); \ ++ }) ++ ++# endif /* __ASSEMBLER__ */ ++ ++#endif /* HAVE_TLS_SUPPORT && (FLOATING_STACKS || !IS_IN_libpthread) */ ++ ++#endif /* _FREEBSD_TLS_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/linuxthreads/vfork.S +@@ -0,0 +1,69 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++# ifdef SHARED ++ call __i686.get_pc_thunk.cx ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx ++ cmpl $0, __libc_pthread_functions@GOTOFF(%ecx) ++# else ++ .weak pthread_create ++ movl $pthread_create, %eax ++ testl %eax, %eax ++# endif ++ jne HIDDEN_JUMPTARGET (__fork) ++ ++ /* Pop the return PC value into ECX. */ ++ popl %ecx ++ cfi_adjust_cfa_offset(-4) ++ ++ /* Perform the system call. */ ++ DO_CALL (vfork, 0) ++ jb L(error) /* Branch forward if it failed. */ ++ ++ /* In the parent process, %edx == 0, %eax == child pid. */ ++ /* In the child process, %edx == 1, %eax == parent pid. */ ++ ++ /* Change %eax to be 0 in the child process. */ ++ decl %edx ++ andl %edx, %eax ++ ++ /* Jump to the return PC. */ ++ jmp *%ecx ++ ++L(error): ++ /* Push back the return PC. */ ++ pushl %ecx ++ cfi_adjust_cfa_offset(4) ++ ++ /* Branch to the error handler, hidden in PSEUDO_END. */ ++ jmp SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/makecontext.S +@@ -0,0 +1,113 @@ ++/* Create new context. ++ Copyright (C) 2001,02 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 2001. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include ++ ++ ++ENTRY(__makecontext) ++ movl 4(%esp), %eax ++ ++ /* Load the address of the function we are supposed to run. */ ++ movl 8(%esp), %ecx ++ ++ /* Compute the address of the stack. The information comes from ++ to us_stack element. */ ++ movl oSS_SP(%eax), %edx ++ movl %ecx, oEIP(%eax) ++ addl oSS_SIZE(%eax), %edx ++ ++ /* Put the next context on the new stack (from the uc_link ++ element). */ ++ movl oLINK(%eax), %ecx ++ movl %ecx, -4(%edx) ++ ++ /* Remember the number of parameters for the exit handler since ++ it has to remove them. We store the number in the EBX register ++ which the function we will call must preserve. */ ++ movl 12(%esp), %ecx ++ movl %ecx, oEBX(%eax) ++ ++ /* Make room on the new stack for the parameters. */ ++ negl %ecx ++ leal -8(%edx,%ecx,4), %edx ++ negl %ecx ++ /* Store the future stack pointer. */ ++ movl %edx, oESP(%eax) ++ ++ /* Copy all the parameters. */ ++ jecxz 2f ++1: movl 12(%esp,%ecx,4), %eax ++ movl %eax, (%edx,%ecx,4) ++ decl %ecx ++ jnz 1b ++2: ++ ++ /* If the function we call returns we must continue with the ++ context which is given in the uc_link element. To do this ++ set the return address for the function the user provides ++ to a little bit of helper code which does the magic (see ++ below). */ ++#ifdef PIC ++ call 1f ++1: popl %ecx ++ addl $L(exitcode)-1b, %ecx ++ movl %ecx, (%edx) ++#else ++ movl $L(exitcode), (%edx) ++#endif ++ /* 'makecontext' returns no value. */ ++ ret ++ ++ /* This is the helper code which gets called if a function which ++ is registered with 'makecontext' returns. In this case we ++ have to install the context listed in the uc_link element of ++ the context 'makecontext' manipulated at the time of the ++ 'makecontext' call. If the pointer is NULL the process must ++ terminate. */ ++L(exitcode): ++ /* This removes the parameters passed to the function given to ++ 'makecontext' from the stack. EBX contains the number of ++ parameters (see above). */ ++ leal (%esp,%ebx,4), %esp ++ ++#ifdef PIC ++ call 1f ++1: popl %ebx ++ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx ++#endif ++ popl %eax /* This is the next context. */ ++ testl %eax, %eax ++ je 2f /* If it is zero exit. */ ++ ++ pushl %eax ++ call JUMPTARGET(__setcontext) ++ /* If this returns (which can happen if the syscall fails) we'll ++ exit the program with the return error value (-1). */ ++ ++2: pushl %eax ++ call HIDDEN_JUMPTARGET(exit) ++ /* The 'exit' call should never return. In case it does cause ++ the process to terminate. */ ++ hlt ++END(__makecontext) ++ ++weak_alias(__makecontext, makecontext) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/rfork.S +@@ -0,0 +1,44 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__rfork) ++ /* save the return PC value into ECX, ++ preserve stack frame with argument */ ++ movl 0(%esp), %ecx; ++ DO_CALL (rfork, 1) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ decl %edx ++ andl %edx, %eax ++ ++ popl %edx ++ cfi_adjust_cfa_offset(-4) ++ jmp *%ecx ++ ++L(pseudo_end): ++ ret ++PSEUDO_END (__rfork) ++ ++weak_alias (__rfork, rfork) ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sigcontextinfo.h +@@ -0,0 +1,35 @@ ++/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++native FreeBSD: ++ sighandler(int signum, int code, struct sigcontext * sg, void * fault_ip) ++posix like: ++ sighandler(int signum, siginfo_t * si, struct sigcontext * sg, void * fault_ip) ++*/ ++ ++#define SIGCONTEXT long _code, struct sigcontext * _sg, void * ++#define SIGCONTEXT_EXTRA_ARGS _code, _sg, ++ ++/* really, really, rest of glibc expects that struct sigcontext is the last argument */ ++#define GET_PC(ctx) ((void *) (_sg)->sc_eip) ++#define GET_FRAME(ctx) ((void *) (_sg)->sc_ebp) ++#define GET_STACK(ctx) ((void *) (_sg)->sc_esp) ++ ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/start_thread.S +@@ -0,0 +1,207 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++#include ++#include ++#define SIG_SETMASK 3 ++ ++ .text ++ENTRY (__start_thread) ++ /* End FDE now, because in the child the unwind info will be ++ wrong. */ ++ cfi_endproc ++ ++ /* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++ We need to pass 7 words of info to the child: stack, func, arg, ++ and the signal mask to restore. Since we have only 4 call-saved ++ registers available (%ebx, %esi, %edi, %ebp), we pass only the ++ stack pointer in a register, and the rest through the child's ++ stack. */ ++ pushl %ebp ++ movl %esp, %ebp ++ subl $36, %esp ++ movl %ebx, 32(%esp) ++ ++ movl 8(%ebp), %eax /* flags */ ++ testl $32, %eax /* flags & RFMEM */ ++ jz L(simple) ++ ++ /* Block all signals. */ ++ movl $-1, %eax ++ movl %eax, 16(%esp) ++ movl %eax, 20(%esp) ++ movl %eax, 24(%esp) ++ movl %eax, 28(%esp) ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl %eax, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ jb L(error) ++ ++ /* Copy all info to the child's stack. */ ++ movl 12(%ebp), %ebx /* stack */ ++ subl $32, %ebx /* room for func, arg, sigset_t */ ++ andl $-16, %ebx /* make it 16-bytes aligned */ ++ movl 16(%ebp), %eax /* func */ ++ movl 20(%ebp), %edx /* arg */ ++ movl %eax, 4(%ebx) ++ movl %edx, (%ebx) ++ movl 16(%esp), %eax /* sigset_t word 0 */ ++ movl 20(%esp), %edx /* sigset_t word 1 */ ++ movl %eax, 16(%ebx) ++ movl %edx, 20(%ebx) ++ movl 24(%esp), %eax /* sigset_t word 2 */ ++ movl 28(%esp), %edx /* sigset_t word 3 */ ++ movl %eax, 24(%ebx) ++ movl %edx, 28(%ebx) ++ ++ /* Perform the rfork system call. */ ++ movl 8(%ebp), %eax /* flags */ ++ movl %eax, 4(%esp) ++ DO_CALL (rfork, 1) ++ jb L(error_unmask) ++ ++ /* %edx is now 0 for the parent and 1 for the child. */ ++ testl %edx, %edx ++ jnz L(child) ++ ++ /* Save the child pid, currently in %eax. */ ++ movl %eax, %ebx ++ ++ /* Restore the previous signal mask. */ ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl $0, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ ++ /* Return the child pid, currently in %ebx. */ ++ movl %ebx, %eax ++ addl $32, %esp ++ popl %ebx ++ popl %ebp ++ ret ++ ++L(child):/* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ movl %ebx, %esp ++ /* Terminate the stack frame. */ ++ subl %ebp, %ebp ++ ++ movl 4(%esp), %edi ++ ++ /* Restore the previous signal mask. */ ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl $0, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ ++L(child1): ++ /* Call func (arg). */ ++ call *%edi ++ ++ /* Call _exit. */ ++#ifdef PIC ++ call L(here) ++L(here): ++ popl %ebx ++ addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx ++#endif ++ pushl %eax ++ call HIDDEN_JUMPTARGET (_exit) ++ ++L(simple):/* Simple case without signal mask handling. */ ++ ++ /* Copy all info to the child's stack. */ ++ movl 12(%ebp), %ebx /* stack */ ++ subl $8, %ebx /* room for func, arg */ ++ andl $-16, %ebx /* make it 16-bytes aligned */ ++ movl 16(%ebp), %eax /* func */ ++ movl 20(%ebp), %edx /* arg */ ++ movl %eax, 4(%ebx) ++ movl %edx, (%ebx) ++ ++ /* Perform the rfork system call. */ ++ movl 8(%ebp), %eax /* flags */ ++ movl %eax, 4(%esp) ++ DO_CALL (rfork, 1) ++ jb L(error) ++ ++ /* %edx is now 0 for the parent and 1 for the child. */ ++ testl %edx, %edx ++ jnz L(simple_child) ++ ++ /* Return the child pid, currently in %eax. */ ++ addl $32, %esp ++ popl %ebx ++ popl %ebp ++L(pseudo_end): ++ ret ++ ++L(simple_child):/* Here we are in the child thread. */ ++ ++ /* Set the stack pointer. */ ++ movl %ebx, %esp ++ /* Terminate the stack frame. */ ++ subl %ebp, %ebp ++ ++ movl 4(%esp), %edi ++ ++ jmp L(child1) ++ ++L(error_unmask): ++ ++ /* Save the error code, currently in %eax. */ ++ movl %eax, %ebx ++ ++ /* Restore the previous signal mask. */ ++ leal 16(%esp), %eax ++ movl $SIG_SETMASK, 4(%esp) ++ movl %eax, 8(%esp) ++ movl $0, 12(%esp) ++ DO_CALL (sigprocmask, 3) ++ ++ /* load saved error code */ ++ movl %ebx, %eax ++ ++L(error): ++ addl $32, %esp ++ popl %ebx ++ popl %ebp ++ jmp SYSCALL_ERROR_LABEL ++ cfi_startproc ++PSEUDO_END (__start_thread) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/swapcontext.S +@@ -0,0 +1,32 @@ ++/* swap current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__swapcontext) ++ clc ++ DO_CALL (swapcontext, 2) ++ jb SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__swapcontext) ++ ++weak_alias(__swapcontext, swapcontext) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/io.h +@@ -0,0 +1,180 @@ ++/* Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IO_H ++#define _SYS_IO_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* If TURN_ON is TRUE, request for permission to do direct i/o on the ++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O ++ permission off for that range. This call requires root privileges. ++ ++ Portability note: not all kFreeBSD platforms support this call. Most ++ platforms based on the PC I/O architecture probably will, however. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to ++ access any I/O port is granted. This call requires root ++ privileges. */ ++extern int iopl (int __level) __THROW; ++ ++#if defined __GNUC__ && __GNUC__ >= 2 ++ ++static __inline unsigned char ++inb (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned char ++inb_p (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw (unsigned short int port) ++{ ++ unsigned short _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw_p (unsigned short int port) ++{ ++ unsigned short int _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl (unsigned short int port) ++{ ++ unsigned int _v; ++ ++ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl_p (unsigned short int port) ++{ ++ unsigned int _v; ++ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline void ++outb (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outb_p (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outw (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (port)); ++ ++} ++ ++static __inline void ++outw_p (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outl (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outl_p (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++insb (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insw (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insl (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsb (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsw (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsl (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++#endif /* GNU C */ ++ ++__END_DECLS ++#endif /* _SYS_IO_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/perm.h +@@ -0,0 +1,43 @@ ++/* Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PERM_H ++#define _SYS_PERM_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* Set port input/output permissions. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++ ++/* Change I/O privilege level. */ ++extern int iopl (int __level) __THROW; ++ ++extern int i386_set_ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Retrieve a contiguous range of port input/output permissions. */ ++extern int i386_get_ioperm (unsigned long int __from, unsigned long int *__num, ++ int *__turned_on) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_PERM_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys/vm86.h +@@ -0,0 +1,53 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_VM86_H ++#define _SYS_VM86_H 1 ++ ++#include ++ ++/* Possible values for the 'cmd' argument to i386_vm86. */ ++enum ++ { ++ VM86_INIT = 1, ++#define VM86_INIT VM86_INIT ++ VM86_GET_VME = 3 ++#define VM86_GET_VME VM86_GET_VME ++ }; ++ ++/* Argument structure for VM86_INIT. */ ++struct vm86_init_args ++ { ++ int debug; ++ int cpu_type; ++ unsigned char int_map[32]; ++ }; ++ ++/* Argument structure for VM86_GET_VME. */ ++struct vm86_vme_args ++ { ++ int state; ++ }; ++ ++__BEGIN_DECLS ++ ++extern int i386_vm86 (int __cmd, void *__arg); ++ ++__END_DECLS ++ ++#endif /* _SYS_VM86_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_fork.S +@@ -0,0 +1,34 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__syscall_fork) ++ DO_CALL (fork, 0) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ decl r1 ++ andl r1, r0 ++L(pseudo_end): ++ ret ++PSEUDO_END (__syscall_fork) ++libc_hidden_def (__syscall_fork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_freebsd6_lseek.S +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* lseek returns a 64-bit result in %eax, %edx. This means that in the ++ error case we have to set both %eax and %edx to -1. */ ++ ++PSEUDO_NOERRNO(__syscall_freebsd6_lseek, freebsd6_lseek, 4) ++ jnb L(no_error) ++ call SYSCALL_ERROR_LABEL; ++ orl $-1, %edx; ++L(pseudo_end): ++L(no_error): ++ ret ++PSEUDO_END(__syscall_freebsd6_lseek) ++libc_hidden_def (__syscall_freebsd6_lseek) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sys_lseek.S +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* lseek returns a 64-bit result in %eax, %edx. This means that in the ++ error case we have to set both %eax and %edx to -1. */ ++ ++PSEUDO_NOERRNO(__syscall_lseek, lseek, 3) ++ jnb L(no_error) ++ call SYSCALL_ERROR_LABEL; ++ orl $-1, %edx; ++L(pseudo_end): ++L(no_error): ++ ret ++PSEUDO_END(__syscall_lseek) ++libc_hidden_def (__syscall_lseek) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysarch.h +@@ -0,0 +1,81 @@ ++/* Parameters for the architecture specific system call. i386 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSARCH_H ++#define _SYSARCH_H 1 ++ ++#include ++ ++/* Function that can be used as first argument to 'sysarch'. */ ++enum ++ { ++ I386_GET_LDT = 0, ++#define I386_GET_LDT I386_GET_LDT ++ I386_SET_LDT = 1, ++#define I386_SET_LDT I386_SET_LDT ++ I386_GET_IOPERM = 3, ++#define I386_GET_IOPERM I386_GET_IOPERM ++ I386_SET_IOPERM = 4, ++#define I386_SET_IOPERM I386_SET_IOPERM ++ I386_VM86 = 6, ++#define I386_VM86 I386_VM86 ++ I386_GET_FSBASE = 7, ++#define I386_GET_FSBASE I386_GET_FSBASE ++ I386_SET_FSBASE = 8, ++#define I386_SET_FSBASE I386_SET_FSBASE ++ I386_GET_GSBASE = 9, ++#define I386_GET_GSBASE I386_GET_GSBASE ++ I386_SET_GSBASE = 10 ++#define I386_SET_GSBASE I386_SET_GSBASE ++ }; ++ ++/* Argument struct for I386_GET_LDT and I386_SET_LDT. */ ++struct i386_ldt_args ++ { ++ int start; ++ union descriptor *descs; ++ int num; ++ }; ++ ++/* Argument struct for I386_GET_IOPERM and I386_SET_IOPERM. */ ++struct i386_ioperm_args ++ { ++ unsigned int start; ++ unsigned int length; ++ int enable; ++ }; ++ ++/* Argument struct for I386_VM86. */ ++struct i386_vm86_args ++ { ++ int sub_op; ++ void *sub_args; ++ }; ++ ++__BEGIN_DECLS ++ ++extern int sysarch (int __cmd, void *__arg); ++ ++#ifdef _LIBC ++extern int __sysarch (int __cmd, void *__arg); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYSARCH_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/syscall.S +@@ -0,0 +1,34 @@ ++/* Copyright (C) 1993, 1995-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++ .text; ++ENTRY (__syscall) ++ popl %ecx /* Pop return address into %ecx. */ ++ cfi_adjust_cfa_offset (-4) ++ movl 0(%esp), %eax /* Load syscall number into %eax. */ ++ int $0x80 /* Do the system call. */ ++ pushl %ecx /* Push back return address. */ ++ cfi_adjust_cfa_offset (4) ++ jb SYSCALL_ERROR_LABEL; /* Jump to error handler if error. */ ++ ++L(pseudo_end): ++ ret /* Return to caller. */ ++PSEUDO_END (__syscall) ++weak_alias (__syscall, syscall) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/syscalls-internal.h +@@ -0,0 +1,88 @@ ++/* generally used "internal syscalls" ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef KFREEBSD_INTERNAL_SYSCALLS_H ++#define KFREEBSD_INTERNAL_SYSCALLS_H ++ ++#include ++ ++/* ++ for now, we do not care whether syscall succeeded, ++ we do not have defined ++ INTERNAL_SYSCALL_ERROR_P and INTERNAL_SYSCALL_ERRNO ++ we do not store errno at all ++ to be sure, we return void ++*/ ++ ++#undef INTERNAL_SYSCALL_DECL ++#undef INTERNAL_SYSCALL_NCS ++#undef INTERNAL_SYSCALL ++#undef INTERNAL_SYSCALL_ERROR_P ++#undef INTERNAL_SYSCALL_ERRNO ++ ++#define INTERNAL_SYSCALL_DECL(err) \ ++ do { } while (0) ++ ++#define INTERNAL_SYSCALL(name, err, nr, args...) \ ++ INTERNAL_SYSCALL_##name(name, err, nr, ##args) ++ ++ ++#define INTERNAL_SYSCALL_close(name, err, nr, fd) \ ++(void)({ \ ++ register long int _a1 = (long int) (fd); \ ++ register long int result; \ ++ asm volatile ( \ ++ "pushl %2\n\t" \ ++ "pushl %1\n\t" \ ++ "int $0x80\n\t" \ ++ "popl %2\n\t" \ ++ "popl %2\n\t" \ ++ : "=a" (result) \ ++ : "0" ((long int) SYS_##name), \ ++ "d" (_a1) \ ++ : "memory", "cc" ); \ ++ result; \ ++}) ++ ++#define INTERNAL_SYSCALL_writev(name, err, nr, fd, iov, cnt) \ ++(void)({ \ ++ register long int _a1 = (long int) (fd); \ ++ register long int _a2 = (long int) (iov); \ ++ register long int _a3 = (long int) (cnt); \ ++ register long int result; \ ++ register long int _trash; \ ++ asm volatile ( \ ++ "pushl %5\n\t" \ ++ "pushl %4\n\t" \ ++ "pushl %3\n\t" \ ++ "pushl %2\n\t" \ ++ "int $0x80\n\t" \ ++ "addl $16,%%esp\n\t" \ ++ : "=a" (result), \ ++ "=d" (_trash) \ ++ : "0" ((long int) SYS_##name), \ ++ "ri" (_a1), \ ++ "ri" (_a2), \ ++ "ri" (_a3) \ ++ /* may be even "g" constraint could be used */ \ ++ /* but we have to worry about esp register and esp based address */ \ ++ : "memory", "cc" ); \ ++ result; \ ++}) ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.S +@@ -0,0 +1,38 @@ ++/* Copyright (C) 1995-1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The following code is only used in the shared library when we ++ compile the reentrant version. Otherwise each system call defines ++ its own version. */ ++ ++#ifndef PIC ++ ++/* The syscall stubs jump here when they detect an error. ++ The code for FreeBSD is identical to the canonical Unix/i386 code. */ ++ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */ ++ ++ .text ++ENTRY (__syscall_error) ++#define __syscall_error __syscall_error_1 ++#include ++ ++#endif /* !PIC */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/sysdep.h +@@ -0,0 +1,240 @@ ++/* Copyright (C) 1992,1993,1995-2000,2002,2003,2004 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper, , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_I386_SYSDEP_H ++#define _FREEBSD_I386_SYSDEP_H 1 ++ ++/* There is some commonality. */ ++#include ++#include ++#include ++/* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */ ++#include ++#include ++ ++#if defined __i686 && defined __ASSEMBLER__ ++#undef __i686 ++#define __i686 __i686 ++#endif ++ ++#ifdef __ASSEMBLER__ ++ ++/* We don't want the label for the error handle to be global when we define ++ it here. */ ++#ifdef PIC ++# define SYSCALL_ERROR_LABEL 0f ++#else ++# define SYSCALL_ERROR_LABEL syscall_error ++#endif ++ ++#undef PSEUDO ++#define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++#undef PSEUDO_END ++#define PSEUDO_END(name) \ ++ SYSCALL_ERROR_HANDLER \ ++ END (name) ++ ++#undef PSEUDO_NOERRNO ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_NOERRNO ++#define PSEUDO_END_NOERRNO(name) \ ++ END (name) ++ ++#define ret_NOERRNO ret ++ ++/* The function has to return the error code. */ ++#undef PSEUDO_ERRVAL ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END (name) ++ ++#define ret_ERRVAL ret ++ ++#ifndef PIC ++# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ ++#else ++ ++# if RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++0:SETUP_PIC_REG(cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ movl %eax, rtld_errno@GOTOFF(%ecx); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++ ++# elif defined _LIBC_REENTRANT ++ ++# if USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno ++# else ++# define SYSCALL_ERROR_ERRNO errno ++# endif ++# define SYSCALL_ERROR_HANDLER \ ++0:SETUP_PIC_REG (cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ movl SYSCALL_ERROR_ERRNO@GOTNTPOFF(%ecx), %ecx; \ ++ SYSCALL_ERROR_HANDLER_TLS_STORE (%eax, %ecx); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++# ifndef NO_TLS_DIRECT_SEG_REFS ++# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ ++ movl src, %gs:(destoff) ++# else ++# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ ++ addl %gs:0, destoff; \ ++ movl src, (destoff) ++# endif ++# else ++# define SYSCALL_ERROR_HANDLER \ ++0:pushl %ebx; \ ++ cfi_adjust_cfa_offset (4); \ ++ cfi_rel_offset (ebx, 0); \ ++ SETUP_PIC_REG (bx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ebx; \ ++ pushl %eax; \ ++ cfi_adjust_cfa_offset (4); \ ++ PUSH_ERRNO_LOCATION_RETURN; \ ++ call BP_SYM (__errno_location)@PLT; \ ++ POP_ERRNO_LOCATION_RETURN; \ ++ popl %ecx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ popl %ebx; \ ++ cfi_adjust_cfa_offset (-4); \ ++ cfi_restore (ebx); \ ++ movl %ecx, (%eax); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++/* A quick note: it is assumed that the call to `__errno_location' does ++ not modify the stack! */ ++# endif ++# else ++/* Store (%eax) into errno through the GOT. */ ++# define SYSCALL_ERROR_HANDLER \ ++0:SETUP_PIC_REG(cx); \ ++ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \ ++ movl errno@GOT(%ecx), %ecx; \ ++ movl %eax, (%ecx); \ ++ orl $-1, %eax; \ ++ jmp L(pseudo_end); ++# endif /* _LIBC_REENTRANT */ ++#endif /* PIC */ ++ ++/* ++ FreeBSD expects the system call arguments on the stack, ++ syscall number is in %eax. ++ return value is in %eax + %edx ++ error is signaled via cflags. ++ all other data registers are preserved ++ ++ syscall number %eax call-clobbered ++ ++ The stack layout upon entering the function is: ++ ++ 20(%esp) Arg# 5 ++ 16(%esp) Arg# 4 ++ 12(%esp) Arg# 3 ++ 8(%esp) Arg# 2 ++ 4(%esp) Arg# 1 ++ (%esp) Return address ++ ++ (Of course a function with say 3 arguments does not have entries for ++ arguments 4 and 5.) ++ ++*/ ++ ++#undef DO_CALL ++#define DO_CALL(syscall_name, args) \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ int $0x80 \ ++ ++#else /* !__ASSEMBLER__ */ ++ ++#include ++ ++/* Consistency check for position-independent code. */ ++#ifdef __PIC__ ++# define check_consistency() \ ++ ({ int __res; \ ++ __asm__ __volatile__ \ ++ ("call __i686.get_pc_thunk.cx;" \ ++ "addl $_GLOBAL_OFFSET_TABLE_, %%ecx;" \ ++ "subl %%ebx, %%ecx;" \ ++ "je 1f;" \ ++ "ud2;" \ ++ "1:\n" \ ++ ".section .gnu.linkonce.t.__i686.get_pc_thunk.cx,\"ax\",@progbits;" \ ++ ".globl __i686.get_pc_thunk.cx;" \ ++ ".hidden __i686.get_pc_thunk.cx;" \ ++ ".type __i686.get_pc_thunk.cx,@function;" \ ++ "__i686.get_pc_thunk.cx:" \ ++ "movl (%%esp), %%ecx;" \ ++ "ret;" \ ++ ".previous" \ ++ : "=c" (__res)); \ ++ __res; }) ++#endif ++ ++#endif /* __ASSEMBLER__ */ ++ ++ ++/* Pointer mangling support. */ ++#if defined NOT_IN_libc && defined IS_IN_rtld ++/* We cannot use the thread descriptor because in ld.so we use setjmp ++ earlier than the descriptor is initialized. Using a global variable ++ is too complicated here since we have no PC-relative addressing mode. */ ++#else ++# ifdef __ASSEMBLER__ ++# define PTR_MANGLE(reg) xorl %gs:POINTER_GUARD, reg; \ ++ roll $9, reg ++# define PTR_DEMANGLE(reg) rorl $9, reg; \ ++ xorl %gs:POINTER_GUARD, reg ++# else ++# define PTR_MANGLE(var) asm ("xorl %%gs:%c2, %0\n" \ ++ "roll $9, %0" \ ++ : "=r" (var) \ ++ : "0" (var), \ ++ "i" (offsetof (tcbhead_t, \ ++ pointer_guard))) ++# define PTR_DEMANGLE(var) asm ("rorl $9, %0\n" \ ++ "xorl %%gs:%c2, %0" \ ++ : "=r" (var) \ ++ : "0" (var), \ ++ "i" (offsetof (tcbhead_t, \ ++ pointer_guard))) ++# endif ++#endif ++ ++#endif /* _FREEBSD_I386_SYSDEP_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/ucontext_i.h +@@ -0,0 +1,38 @@ ++/* Offsets and other constants needed in the *context() function ++ implementation. ++ Copyright (C) 2001 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Offsets of the fields in the ucontext_t structure. */ ++#define oSIGMASK 0 ++#define oGS 20 ++#define oFS 24 ++#define oEDI 36 ++#define oESI 40 ++#define oEBP 44 ++#define oEBX 52 ++#define oEDX 56 ++#define oECX 60 ++#define oEAX 64 ++ ++#define oEIP 76 ++#define oESP 88 ++ ++#define oLINK 656 ++#define oSS_SP 660 ++#define oSS_SIZE 664 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/i386/vfork.S +@@ -0,0 +1,58 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++ /* Pop the return PC value into ECX. */ ++ popl %ecx ++ cfi_adjust_cfa_offset(-4) ++ ++ /* Perform the system call. */ ++ DO_CALL (vfork, 0) ++ jb L(error) /* Branch forward if it failed. */ ++ ++ /* In the parent process, %edx == 0, %eax == child pid. */ ++ /* In the child process, %edx == 1, %eax == parent pid. */ ++ ++ /* Change %eax to be 0 in the child process. */ ++ decl %edx ++ andl %edx, %eax ++ ++ /* Jump to the return PC. */ ++ jmp *%ecx ++ ++L(error): ++ /* Push back the return PC. */ ++ pushl %ecx ++ cfi_adjust_cfa_offset(4) ++ ++ /* Branch to the error handler, hidden in PSEUDO_END. */ ++ jmp SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/if_index.c +@@ -0,0 +1,311 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++typedef int (*if_fn) (void *private, unsigned int index, const char *name); ++ ++/* Iterate through all present interfaces. ++ Call FN once for every interface, returning immediately if FN returns ++ a nonzero value. */ ++static void ++if_iterate (if_fn fn, void *private) ++{ ++ int request[6] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 }; ++ char *buf; ++ size_t bufsize = 512; ++ char *bufend; ++ char *p; ++ ++ /* Call the kernel function sysctl_iflist() in /usr/src/sys/net/rtsock.c. */ ++ for (;;) ++ { ++ buf = alloca (bufsize); ++ if (__sysctl (request, 6, buf, &bufsize, NULL, 0) >= 0) ++ break; ++ if (errno != ENOMEM) ++ return; ++ bufsize *= 2; ++ } ++ ++ bufend = buf + bufsize; ++ for (p = buf; p < bufend; ) ++ { ++ struct if_msghdr *msg = (struct if_msghdr *) p; ++ ++ if (msg->ifm_version != RTM_VERSION) ++ abort (); ++ ++ switch (msg->ifm_type) ++ { ++ case RTM_IFINFO: ++ if (msg->ifm_addrs & RTA_IFP) ++ { ++ unsigned int index; ++ struct sockaddr_dl *sdl; ++ char namebuf[IFNAMSIZ + 1]; ++ size_t namelen; ++ ++ index = msg->ifm_index; ++ if (index == 0) ++ abort (); ++ ++ /* FIXME: 'struct if_msghdr' contains a 'struct if_data' which in turns ++ contains 'unsigned long' values. Their size therefore depends on ++ the running kernel (32 or 64 bits). This should be fixed in the ++ compat layer of the kernel. Meanwhile just workaround the bug here/ */ ++#if 0 ++ sdl = (struct sockaddr_dl *) (msg + 1); ++#else ++ sdl = (struct sockaddr_dl *) (p + msg->ifm_msglen - sizeof(struct sockaddr_dl) - 2); ++#endif ++ namelen = sdl->sdl_nlen; ++ /* Avoid overflowing namebuf[]. */ ++ if (namelen > IFNAMSIZ) ++ namelen = IFNAMSIZ; ++ memcpy (namebuf, sdl->sdl_data, namelen); ++ namebuf[namelen] = '\0'; ++ ++ /* Call FN now. */ ++ if (fn (private, index, namebuf)) ++ return; ++ } ++ break; ++ ++ case RTM_NEWADDR: ++ break; ++ ++ default: ++ abort (); ++ } ++ ++ p += msg->ifm_msglen; ++ } ++} ++ ++/* ------------------------------------------------------------------------- */ ++ ++struct nametoindex_locals ++ { ++ const char *name; ++ unsigned int index; ++ }; ++ ++static int ++nametoindex_aux (void *private, unsigned int index, const char *name) ++{ ++ struct nametoindex_locals *l = (struct nametoindex_locals *) private; ++ if (strcmp (name, l->name) == 0) ++ { ++ l->index = index; ++ return 1; ++ } ++ return 0; ++} ++ ++/* Return the index of an interface given by name. */ ++unsigned int ++if_nametoindex (const char *ifname) ++{ ++ struct nametoindex_locals l; ++ ++ l.name = ifname; ++ l.index = 0; ++ if_iterate (nametoindex_aux, &l); ++ ++ return l.index; ++} ++libc_hidden_def (if_nametoindex) ++ ++/* ------------------------------------------------------------------------- */ ++ ++struct indextoname_locals ++ { ++ unsigned int index; ++ char *name; ++ char *retval; ++ }; ++ ++static int ++indextoname_aux (void *private, unsigned int index, const char *name) ++{ ++ struct indextoname_locals *l = (struct indextoname_locals *) private; ++ if (index == l->index) ++ { ++ strncpy (l->name, name, IF_NAMESIZE); ++ l->retval = l->name; ++ return 1; ++ } ++ __set_errno (ENXIO); ++ return 0; ++} ++ ++/* Return the name of an interface given by name. */ ++char * ++if_indextoname (unsigned int ifindex, char *ifname) ++{ ++ struct indextoname_locals l; ++ ++ l.index = ifindex; ++ l.name = ifname; ++ l.retval = NULL; ++ if_iterate (indextoname_aux, &l); ++ return l.retval; ++} ++libc_hidden_def (if_indextoname) ++ ++/* ------------------------------------------------------------------------- */ ++ ++struct nameindex_locals ++ { ++ /* Resizable array of 'struct if_nameindex'. */ ++ struct if_nameindex *s_array; ++ size_t s_len; ++ size_t s_allocated; ++ /* Resizable array of char. */ ++ char *c_array; ++ size_t c_len; ++ size_t c_allocated; ++ /* Out-of-memory indicator. */ ++ int oom; ++ }; ++ ++static void ++add_s (struct nameindex_locals *l, unsigned int index, char *name) ++{ ++ if (l->s_len == l->s_allocated) ++ { ++ size_t new_allocated = 2 * l->s_allocated + 1; ++ struct if_nameindex *new_array = ++ (struct if_nameindex *) ++ realloc (l->s_array, new_allocated * sizeof (struct if_nameindex)); ++ if (new_array == NULL) ++ { ++ l->oom = 1; ++ return; ++ } ++ l->s_array = new_array; ++ l->s_allocated = new_allocated; ++ } ++ /* Now l->s_len < l->s_allocated. */ ++ l->s_array[l->s_len].if_index = index; ++ l->s_array[l->s_len].if_name = name; ++ l->s_len++; ++} ++ ++static __inline size_t ++add_c (struct nameindex_locals *l, const char *name) ++{ ++ size_t n = strlen (name) + 1; ++ size_t result_offset; ++ if (l->c_len + n > l->c_allocated) ++ { ++ size_t new_allocated = ++ (l->c_len + n < 2 * l->c_allocated + 1 ++ ? 2 * l->c_allocated + 1 ++ : l->c_len + n); ++ char *new_array = (char *) realloc (l->c_array, new_allocated); ++ if (new_array == NULL) ++ { ++ l->oom = 1; ++ return 0; ++ } ++ l->c_array = new_array; ++ l->c_allocated = new_allocated; ++ } ++ /* Now l->c_len + n <= l->c_allocated. */ ++ result_offset = l->c_len; ++ memcpy (l->c_array + l->c_len, name, n); ++ l->c_len += n; ++ return result_offset; ++} ++ ++static int ++nameindex_aux (void *private, unsigned int index, const char *name) ++{ ++ struct nameindex_locals *l = (struct nameindex_locals *) private; ++ ++ size_t name_offset = add_c (l, name); ++ if (!l->oom) ++ { ++ add_s (l, index, (char *) NULL + name_offset); ++ if (!l->oom) ++ return 0; ++ } ++ return 1; ++} ++ ++/* Return an array of 'struct if_nameindex', one for each present ++ interface. */ ++struct if_nameindex * ++if_nameindex (void) ++{ ++ struct nameindex_locals l; ++ ++ l.s_array = NULL; l.s_len = 0; l.s_allocated = 0; ++ l.c_array = NULL; l.c_len = 0; l.c_allocated = 0; ++ l.oom = 0; ++ if_iterate (nameindex_aux, &l); ++ if (!l.oom) ++ { ++ /* Convert all offsets to real pointers. */ ++ struct if_nameindex *p; ++ struct if_nameindex *p_end; ++ ++ for (p = l.s_array, p_end = p + l.s_len; p < p_end; p++) ++ p->if_name = l.c_array + (p->if_name - (char *) NULL); ++ ++ /* Add a terminating entry. */ ++ add_s (&l, 0, NULL); ++ } ++ if (l.oom) ++ { ++ free (l.s_array); ++ free (l.c_array); ++ __set_errno (ENOMEM); ++ return NULL; ++ } ++ return l.s_array; ++} ++libc_hidden_def (if_nameindex) ++ ++/* ------------------------------------------------------------------------- */ ++ ++/* Free an array returned by if_nameindex(). */ ++void ++if_freenameindex (struct if_nameindex *ifn) ++{ ++ if (ifn != NULL) ++ { ++ /* Free c_array. */ ++ free (ifn[0].if_name); ++ /* Free s_array. */ ++ free (ifn); ++ } ++} ++libc_hidden_def (if_freenameindex) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ifaddrs.c +@@ -0,0 +1,362 @@ ++/* $KAME: getifaddrs.c,v 1.9 2001/08/20 02:31:20 itojun Exp $ */ ++ ++/* ++ * Copyright (c) 1995, 1999 ++ * Berkeley Software Design, 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: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``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 Berkeley Software Design, Inc. 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. ++ * ++ * BSDI getifaddrs.c,v 2.12 2000/02/23 14:51:59 dab Exp ++ */ ++ ++#include ++ ++ /* ++__FBSDID("$FreeBSD: src/lib/libc/net/getifaddrs.c,v 1.6 2002/07/25 08:08:30 ume Exp $"); ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#ifdef NET_RT_IFLIST ++#include ++#include ++#include ++#include ++#else ++#error NET_RT_IFLIST is required ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#if !defined(AF_LINK) ++#define SA_LEN(sa) sizeof(struct sockaddr) ++#endif ++ ++#if !defined(SA_LEN) ++#define SA_LEN(sa) (sa)->sa_len ++#endif ++ ++#define SALIGN (sizeof(long) - 1) ++#define SA_RLEN(sa) ((sa)->sa_len ? (((sa)->sa_len + SALIGN) & ~SALIGN) : (SALIGN + 1)) ++ ++#ifndef ALIGNBYTES ++/* ++ * On systems with a routing socket, ALIGNBYTES should match the value ++ * that the kernel uses when building the messages. ++ */ ++#define ALIGNBYTES XXX ++#endif ++#ifndef ALIGN ++#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) &~ ALIGNBYTES) ++#endif ++ ++#define HAVE_IFM_DATA ++#define MAX_SYSCTL_TRY 5 ++ ++int ++getifaddrs(struct ifaddrs **pif) ++{ ++ int icnt = 1; ++ int dcnt = 0; ++ int ncnt = 0; ++#ifdef NET_RT_IFLIST ++ int ntry = 0; ++ int mib[6]; ++ size_t needed; ++ char *buf; ++ char *next; ++ struct ifaddrs *cif = 0; ++ char *p, *p0; ++ struct rt_msghdr *rtm; ++ struct if_msghdr *ifm; ++ struct ifa_msghdr *ifam; ++ struct sockaddr_dl *dl; ++ struct sockaddr *sa; ++ struct ifaddrs *ifa, *ift; ++ u_short idx = 0; ++#else /* NET_RT_IFLIST */ ++#endif /* NET_RT_IFLIST */ ++ int i; ++ size_t len, alen; ++ char *data; ++ char *names; ++ ++#ifdef NET_RT_IFLIST ++ mib[0] = CTL_NET; ++ mib[1] = PF_ROUTE; ++ mib[2] = 0; /* protocol */ ++ mib[3] = 0; /* wildcard address family */ ++ mib[4] = NET_RT_IFLIST; ++ mib[5] = 0; /* no flags */ ++ do { ++ /* ++ * We'll try to get addresses several times in case that ++ * the number of addresses is unexpectedly increased during ++ * the two sysctl calls. This should rarely happen, but we'll ++ * try to do our best for applications that assume success of ++ * this library (which should usually be the case). ++ * Portability note: since FreeBSD does not add margin of ++ * memory at the first sysctl, the possibility of failure on ++ * the second sysctl call is a bit higher. ++ */ ++ ++ if (__sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) ++ return (-1); ++ if ((buf = malloc(needed)) == NULL) ++ return (-1); ++ if (__sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { ++ if (errno != ENOMEM || ++ntry >= MAX_SYSCTL_TRY) { ++ free(buf); ++ return (-1); ++ } ++ free(buf); ++ buf = NULL; ++ } ++ } while (buf == NULL); ++ ++ for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { ++ rtm = (struct rt_msghdr *)(void *)next; ++ if (rtm->rtm_version != RTM_VERSION) ++ continue; ++ switch (rtm->rtm_type) { ++ case RTM_IFINFO: ++ ifm = (struct if_msghdr *)(void *)rtm; ++ if (ifm->ifm_addrs & RTA_IFP) { ++ idx = ifm->ifm_index; ++ ++icnt; ++ dl = (struct sockaddr_dl *)(void *)(ifm + 1); ++ dcnt += SA_RLEN((struct sockaddr *)(void*)dl) + ++ ALIGNBYTES; ++#ifdef HAVE_IFM_DATA ++ dcnt += sizeof(ifm->ifm_data); ++#endif /* HAVE_IFM_DATA */ ++ ncnt += dl->sdl_nlen + 1; ++ } else ++ idx = 0; ++ break; ++ ++ case RTM_NEWADDR: ++ ifam = (struct ifa_msghdr *)(void *)rtm; ++ if (idx && ifam->ifam_index != idx) ++ { ++ errno = EINVAL; /* this cannot happen */ ++ return -1; ++ }; ++#define RTA_MASKS (RTA_NETMASK | RTA_IFA | RTA_BRD) ++ if (idx == 0 || (ifam->ifam_addrs & RTA_MASKS) == 0) ++ break; ++ p = (char *)(void *)(ifam + 1); ++ ++icnt; ++#ifdef HAVE_IFAM_DATA ++ dcnt += sizeof(ifam->ifam_data) + ALIGNBYTES; ++#endif /* HAVE_IFAM_DATA */ ++ /* Scan to look for length of address */ ++ alen = 0; ++ for (p0 = p, i = 0; i < RTAX_MAX; i++) { ++ if ((RTA_MASKS & ifam->ifam_addrs & (1 << i)) ++ == 0) ++ continue; ++ sa = (struct sockaddr *)(void *)p; ++ len = SA_RLEN(sa); ++ if (i == RTAX_IFA) { ++ alen = len; ++ break; ++ } ++ p += len; ++ } ++ for (p = p0, i = 0; i < RTAX_MAX; i++) { ++ if ((RTA_MASKS & ifam->ifam_addrs & (1 << i)) ++ == 0) ++ continue; ++ sa = (struct sockaddr *)(void *)p; ++ len = SA_RLEN(sa); ++ if (i == RTAX_NETMASK && SA_LEN(sa) == 0) ++ dcnt += alen; ++ else ++ dcnt += len; ++ p += len; ++ } ++ break; ++ } ++ } ++#else /* NET_RT_IFLIST */ ++#endif /* NET_RT_IFLIST */ ++ ++ if (icnt + dcnt + ncnt == 1) { ++ *pif = NULL; ++ free(buf); ++ return (0); ++ } ++ data = malloc(sizeof(struct ifaddrs) * icnt + dcnt + ncnt); ++ if (data == NULL) { ++ free(buf); ++ return(-1); ++ } ++ ++ ifa = (struct ifaddrs *)(void *)data; ++ data += sizeof(struct ifaddrs) * icnt; ++ names = data + dcnt; ++ ++ memset(ifa, 0, sizeof(struct ifaddrs) * icnt); ++ ift = ifa; ++ ++#ifdef NET_RT_IFLIST ++ idx = 0; ++ for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { ++ rtm = (struct rt_msghdr *)(void *)next; ++ if (rtm->rtm_version != RTM_VERSION) ++ continue; ++ switch (rtm->rtm_type) { ++ case RTM_IFINFO: ++ ifm = (struct if_msghdr *)(void *)rtm; ++ if (ifm->ifm_addrs & RTA_IFP) { ++ idx = ifm->ifm_index; ++ dl = (struct sockaddr_dl *)(void *)(ifm + 1); ++ ++ cif = ift; ++ ift->ifa_name = names; ++ ift->ifa_flags = (int)ifm->ifm_flags; ++ memcpy(names, dl->sdl_data, ++ (size_t)dl->sdl_nlen); ++ names[dl->sdl_nlen] = 0; ++ names += dl->sdl_nlen + 1; ++ ++ ift->ifa_addr = (struct sockaddr *)(void *)data; ++ memcpy(data, dl, ++ (size_t)SA_LEN((struct sockaddr *) ++ (void *)dl)); ++ data += SA_RLEN((struct sockaddr *)(void *)dl); ++ ++#ifdef HAVE_IFM_DATA ++ /* ifm_data needs to be aligned */ ++ ift->ifa_data = data = (void *)ALIGN(data); ++ memcpy(data, &ifm->ifm_data, sizeof(ifm->ifm_data)); ++ data += sizeof(ifm->ifm_data); ++#else /* HAVE_IFM_DATA */ ++ ift->ifa_data = NULL; ++#endif /* HAVE_IFM_DATA */ ++ ++ ift = (ift->ifa_next = ift + 1); ++ } else ++ idx = 0; ++ break; ++ ++ case RTM_NEWADDR: ++ ifam = (struct ifa_msghdr *)(void *)rtm; ++ if (idx && ifam->ifam_index != idx) ++ { ++ errno = EINVAL; /* this cannot happen */ ++ return -1; ++ }; ++ if (idx == 0 || (ifam->ifam_addrs & RTA_MASKS) == 0) ++ break; ++ ift->ifa_name = cif->ifa_name; ++ ift->ifa_flags = cif->ifa_flags; ++ ift->ifa_data = NULL; ++ p = (char *)(void *)(ifam + 1); ++ /* Scan to look for length of address */ ++ alen = 0; ++ for (p0 = p, i = 0; i < RTAX_MAX; i++) { ++ if ((RTA_MASKS & ifam->ifam_addrs & (1 << i)) ++ == 0) ++ continue; ++ sa = (struct sockaddr *)(void *)p; ++ len = SA_RLEN(sa); ++ if (i == RTAX_IFA) { ++ alen = len; ++ break; ++ } ++ p += len; ++ } ++ for (p = p0, i = 0; i < RTAX_MAX; i++) { ++ if ((RTA_MASKS & ifam->ifam_addrs & (1 << i)) ++ == 0) ++ continue; ++ sa = (struct sockaddr *)(void *)p; ++ len = SA_RLEN(sa); ++ switch (i) { ++ case RTAX_IFA: ++ ift->ifa_addr = ++ (struct sockaddr *)(void *)data; ++ memcpy(data, p, len); ++ data += len; ++ break; ++ ++ case RTAX_NETMASK: ++ ift->ifa_netmask = ++ (struct sockaddr *)(void *)data; ++ if (SA_LEN(sa) == 0) { ++ memset(data, 0, alen); ++ data += alen; ++ break; ++ } ++ memcpy(data, p, len); ++ data += len; ++ break; ++ ++ case RTAX_BRD: ++ ift->ifa_broadaddr = ++ (struct sockaddr *)(void *)data; ++ memcpy(data, p, len); ++ data += len; ++ break; ++ } ++ p += len; ++ } ++ ++#ifdef HAVE_IFAM_DATA ++ /* ifam_data needs to be aligned */ ++ ift->ifa_data = data = (void *)ALIGN(data); ++ memcpy(data, &ifam->ifam_data, sizeof(ifam->ifam_data)); ++ data += sizeof(ifam->ifam_data); ++#endif /* HAVE_IFAM_DATA */ ++ ++ ift = (ift->ifa_next = ift + 1); ++ break; ++ } ++ } ++ ++ free(buf); ++#else /* NET_RT_IFLIST */ ++#endif /* NET_RT_IFLIST */ ++ if (--ift >= ifa) { ++ ift->ifa_next = NULL; ++ *pif = ifa; ++ } else { ++ *pif = NULL; ++ free(ifa); ++ } ++ return (0); ++} ++libc_hidden_def (getifaddrs) ++ ++void ++freeifaddrs(struct ifaddrs *ifp) ++{ ++ ++ free(ifp); ++} ++libc_hidden_def (freeifaddrs) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ifreq.c +@@ -0,0 +1,93 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++/* The FreeBSD ioctl SIOCGIFCONF returns the list if interfaces as a ++ concatenation of records of different size, each having at least ++ sizeof (struct ifreq) bytes. */ ++ ++ ++void ++__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd) ++{ ++ int fd = sockfd; ++ struct ifconf ifc; ++ int rq_len; ++ int nifs; ++ char *ifstart; ++ char *ifend; ++ struct ifreq *ifr; ++ /* FreeBSD has many interfaces, many of them are usually down. */ ++# define RQ_IFS 16 ++ /* We have to assume all records are of limited size, so that we know ++ when we can stop enlarging the buffer. */ ++# define RQ_MAXSIZE 256 ++ ++ if (fd < 0) ++ fd = __opensock (); ++ if (fd < 0) ++ { ++ *num_ifs = 0; ++ *ifreqs = NULL; ++ return; ++ } ++ ++ ifc.ifc_buf = NULL; ++ rq_len = RQ_IFS * sizeof (struct ifreq) + RQ_MAXSIZE; ++ for (;;) ++ { ++ ifc.ifc_len = rq_len; ++ ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len); ++ if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0) ++ { ++ if (ifc.ifc_buf) ++ free (ifc.ifc_buf); ++ ++ if (fd != sockfd) ++ __close (fd); ++ *num_ifs = 0; ++ *ifreqs = NULL; ++ return; ++ } ++ if (ifc.ifc_len + RQ_MAXSIZE <= rq_len) ++ break; ++ rq_len *= 2; ++ } ++ ++ nifs = 0; ++ ifstart = (char *) ifc.ifc_buf; ++ ifend = ifstart + ifc.ifc_len; ++ for (ifr = (struct ifreq *) ifstart; ++ (char *) ifr < ifend; ++ ifr = __if_nextreq (ifr)) ++ nifs++; ++ ++ if (fd != sockfd) ++ __close (fd); ++ ++ *num_ifs = nifs; ++ *ifreqs = realloc (ifc.ifc_buf, ifc.ifc_len); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/init-first.c +@@ -0,0 +1,135 @@ ++/* Initialization code run first thing by the ELF startup code. ++ Copyright (C) 1995-2004, 2005, 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++extern int __syscall_sigaction (int __sig, const struct sigaction *__act, struct sigaction *__oact) __THROW; ++libc_hidden_proto (__syscall_sigaction) ++ ++/* Set nonzero if we have to be prepared for more then one libc being ++ used in the process. Safe assumption if initializer never runs. */ ++int __libc_multiple_libcs attribute_hidden = 1; ++ ++/* Remember the command line argument and enviroment contents for ++ later calls of initializers for dynamic libraries. */ ++int __libc_argc attribute_hidden; ++char **__libc_argv attribute_hidden; ++ ++ ++void ++__libc_init_first (int argc, char **argv, char **envp) ++{ ++#ifdef SHARED ++ /* For DSOs we do not need __libc_init_first but instead _init. */ ++} ++ ++void ++attribute_hidden ++_init (int argc, char **argv, char **envp) ++{ ++#endif ++#ifdef USE_NONOPTION_FLAGS ++ extern void __getopt_clean_environment (char **); ++#endif ++ ++ __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up; ++ ++ /* Make sure we don't initialize twice. */ ++ if (!__libc_multiple_libcs) ++ { ++ /* Set the FPU control word to the proper default value if the ++ kernel would use a different value. (In a static program we ++ don't have this information.) */ ++#if 0 ++ /* at least on kFreeBSD set it even if SHARED, ++ fixes "make check" failures like math/test-fpucw.out */ ++#ifdef SHARED ++ if (__fpu_control != GLRO(dl_fpu_control)) ++#endif ++#endif ++ __setfpucw (__fpu_control); ++ } ++ ++ /* By default on kFreeBSD when a call to non existing syscall is ++ made, the program is terminated. As we want to be able to detect ++ missing syscalls and provide a fallback code, we ignore the SIGSYS ++ signal. */ ++ { ++ struct sigaction act; ++ ++ act.sa_handler = SIG_IGN; ++ __sigemptyset (&act.sa_mask); ++ act.sa_flags = 0; ++ ++ INLINE_SYSCALL (sigaction, 3, SIGSYS, &act, NULL); ++ } ++ ++ /* Save the command-line arguments. */ ++ __libc_argc = argc; ++ __libc_argv = argv; ++ __environ = envp; ++ ++#ifndef SHARED ++ __libc_init_secure (); ++ ++ /* First the initialization which normally would be done by the ++ dynamic linker. */ ++ _dl_non_dynamic_init (); ++#endif ++ ++#ifdef VDSO_SETUP ++ VDSO_SETUP (); ++#endif ++ ++ __init_misc (argc, argv, envp); ++ ++#ifdef USE_NONOPTION_FLAGS ++ /* This is a hack to make the special getopt in GNU libc working. */ ++ __getopt_clean_environment (envp); ++#endif ++ ++#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS ++ __libc_global_ctors (); ++#endif ++} ++ ++ ++/* This function is defined here so that if this file ever gets into ++ ld.so we will get a link error. Having this file silently included ++ in ld.so causes disaster, because the _init definition above will ++ cause ld.so to gain an init function, which is not a cool thing. */ ++ ++extern void _dl_start (void) __attribute__ ((noreturn)); ++ ++void ++_dl_start (void) ++{ ++ abort (); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/kenv.h +@@ -0,0 +1,39 @@ ++/*- ++ * Copyright (c) 2002 Maxime Henrion ++ * 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. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. ++ * ++ * $FreeBSD: src/include/kenv.h,v 1.2.8.1 2009/04/15 03:14:26 kensmith Exp $ ++ */ ++ ++#ifndef _KENV_H_ ++#define _KENV_H 1 ++ ++#include ++#include ++ ++__BEGIN_DECLS ++int kenv(int action, const char *name, char *value, int len); ++__END_DECLS ++ ++#endif /* !_KENV_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-features.h +@@ -0,0 +1,92 @@ ++/* Set flags signalling availability of kernel features based on given ++ kernel version number. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __KFREEBSD_KERNEL_VERSION ++/* We assume the worst; all kernels should be supported. */ ++# define __KFREEBSD_KERNEL_VERSION 0 ++#endif ++ ++/* The encoding for __KFREEBSD_KERNEL_VERSION is defined the following ++ way: the major, minor, and subminor all get a byte with the major ++ number being in the highest byte. This means we can do numeric ++ comparisons. ++ ++ In the following we will define certain symbols depending on ++ whether the describes kernel feature is available in the kernel ++ version given by __KFREEBSD_KERNEL_VERSION. We are not always exactly ++ recording the correct versions in which the features were ++ introduced. If somebody cares these values can afterwards be ++ corrected. */ ++ ++/* ++ The used encoding corresponds to the following in elf/dl-load.c: ++ ++ osversion = (abi_note[5] & 0xff) * 65536 ++ + (abi_note[6] & 0xff) * 256 ++ + (abi_note[7] & 0xff); ++ if (abi_note[4] != __ABI_TAG_OS ++ || (GLRO(dl_osversion) && GLRO(dl_osversion) < osversion)) ++ ++ Therefore, the __KFREEBSD_KERNEL_VERSION have different value compared to ++ __FreeBSD_version/__FreeBSD_kernel__version. ++ The transformation is not just prepend 0x to __FreeBSD_kernel_version. ++ ++ For changes see i.e. ++ http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html ++*/ ++ ++/* Real-time signals introduced in FreeBSD 7.x. */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x70032 ++# define __ASSUME_REALTIME_SIGNALS 1 ++#endif ++ ++/* Use signals #32, #33, #34 for internal linuxthreads communication */ ++#define PTHREAD_SIGBASE 32 ++ ++/* The `ftruncate' syscall was introduced in kFreeBSD 7.0. */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x70032 ++# define __ASSUME_TRUNCATE_SYSCALL 1 ++#endif ++ ++/* The `lseek' syscall was introduced in kFreeBSD 7.0. */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x70032 ++# define __ASSUME_LSEEK_SYSCALL 1 ++#endif ++ ++/* The `mmap' syscall was introduced in kFreeBSD 7.0. */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x70032 ++# define __ASSUME_MMAP_SYSCALL 1 ++#endif ++ ++/* The `pread' and `pwrite' syscalls were introduced in kFreeBSD 7.0. */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x70032 ++# define __ASSUME_PREAD_PWRITE_SYSCALLS 1 ++#endif ++ ++/* The `shm_*' syscalls were introduced in kFreeBSD 8.0 */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x8000C ++# define __ASSUME_SHMFCTS 1 ++#endif ++ ++/* The `*at' syscalls were introduced in kFreeBSD 8.0. */ ++#if __KFREEBSD_KERNEL_VERSION >= 0x8001D ++# define __ASSUME_ATFCTS 1 ++#endif ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/kernel-posix-cpu-timers.h +@@ -0,0 +1,5 @@ ++/* Parameters for the FreeBSD kernel ABI for CPU clocks. */ ++ ++#define CPUCLOCK_WHICH(clock) ((clock) & (clockid_t) CPUCLOCK_CLOCK_MASK) ++#define CPUCLOCK_CLOCK_MASK 7 ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ldsodefs.h +@@ -0,0 +1,58 @@ ++/* Run-time dynamic linker data structures for loaded ELF shared objects. ++ Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _LDSODEFS_H ++ ++/* Get the real definitions. */ ++#include_next ++ ++/* Now define our stuff. */ ++ ++/* FreeBSD puts some extra information into an auxiliary vector when it ++ execs ELF executables. Note that it uses AT_* values of 10 and 11 ++ to denote something different than AT_NOTELF and AT_UID, but this is ++ not a problem since elf/dl-support.c ignores these AT_* values. */ ++#define HAVE_AUX_VECTOR ++ ++/* Used by static binaries to check the auxiliary vector. */ ++extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function; ++ ++/* Initialization which is normally done by the dynamic linker. */ ++extern void _dl_non_dynamic_init (void) internal_function; ++ ++/* Contrary to most kernels which use ELFOSABI_SYSV aka ELFOSABI_NONE, ++ FreeBSD uses ELFOSABI_FREEBSD for the OSABI field. */ ++#define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, expected2, size) == 0) ++#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_FREEBSD) ++#define VALID_ELF_ABIVERSION(osabi,ver) (ver == 0) ++#define MORE_ELF_HEADER_DATA \ ++ static const unsigned char expected2[EI_PAD] = \ ++ { \ ++ [EI_MAG0] = ELFMAG0, \ ++ [EI_MAG1] = ELFMAG1, \ ++ [EI_MAG2] = ELFMAG2, \ ++ [EI_MAG3] = ELFMAG3, \ ++ [EI_CLASS] = ELFW(CLASS), \ ++ [EI_DATA] = byteorder, \ ++ [EI_VERSION] = EV_CURRENT, \ ++ [EI_OSABI] = ELFOSABI_FREEBSD, \ ++ [EI_ABIVERSION] = 0 \ ++ } ++ ++#endif /* ldsodefs.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linkat.c +@@ -0,0 +1,181 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_linkat (int fd1, const char *path1, int fd2, ++ const char *path2, int flags); ++libc_hidden_proto (__syscall_linkat) ++ ++/* Make a link to FROM named TO but relative paths in TO and FROM are ++ interpreted relative to FROMFD and TOFD respectively. */ ++int ++linkat (fromfd, from, tofd, to, flags) ++ int fromfd; ++ const char *from; ++ int tofd; ++ const char *to; ++ int flags; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (linkat, 5, fromfd, from, tofd, to, flags); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ /* Without kernel support we cannot handle AT_SYMLINK_FOLLOW. */ ++ if (flags != 0) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if ((fromfd != AT_FDCWD && from[0] != '/') ++ || (tofd != AT_FDCWD && to[0] != '/')) ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t fromlen, tolen; ++ ++ if ((fromfd < 0) || (tofd < 0)) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ fromlen = strlen (from); ++ tolen = strlen (to); ++ if (__builtin_expect (fromlen == 0, 0) ++ || __builtin_expect (tolen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ if (fromfd != AT_FDCWD && from[0] != '/') ++ { ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = ++ (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fromfd) ++ { ++ char *buf; ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ buf = alloca (strlen (kf->kf_path) + fromlen + 2); ++ strcpy(buf, kf->kf_path); ++ strcat (buf, "/"); ++ strcat (buf, from); ++ from = buf; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ if (tofd != AT_FDCWD && to[0] != '/') ++ { ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = ++ (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == tofd) ++ { ++ char *buf; ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ buf = alloca (strlen (kf->kf_path) + tolen + 2); ++ strcpy(buf, kf->kf_path); ++ strcat (buf, "/"); ++ strcat (buf, to); ++ to = buf; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ } ++ ++ return __link (from, to); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/Implies +@@ -0,0 +1 @@ ++pthread +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/Makefile +@@ -0,0 +1,4 @@ ++ifeq ($(subdir),linuxthreads) ++sysdep_routines += register-atfork unregister-atfork ++libpthread-routines += ptw-sigprocmask ptw-ioctl ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/Versions +@@ -0,0 +1,5 @@ ++libc { ++ GLIBC_2.3.2 { ++ __register_atfork; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/allocrtsig.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/bits/local_lim.h +@@ -0,0 +1,48 @@ ++/* Minimum guaranteed maximum values for system limits. FreeBSD version. ++ Copyright (C) 1993-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The number of data keys per process. */ ++#define _POSIX_THREAD_KEYS_MAX 128 ++/* This is the value this implementation supports. */ ++#define PTHREAD_KEYS_MAX 1024 ++ ++/* Controlling the iterations of destructors for thread-specific data. */ ++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 ++/* Number of iterations this implementation does. */ ++#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS ++ ++/* The number of threads per process. */ ++#define _POSIX_THREAD_THREADS_MAX 64 ++/* This is the value this implementation supports. */ ++#define PTHREAD_THREADS_MAX 1024 ++ ++/* Maximum amount by which a process can descrease its asynchronous I/O ++ priority level. */ ++#define AIO_PRIO_DELTA_MAX 20 ++ ++/* Minimum size for a thread. We are free to choose a reasonable value. */ ++#define PTHREAD_STACK_MIN 16384 ++ ++/* Maximum number of POSIX timers available. */ ++#define TIMER_MAX 256 ++ ++/* Maximum number of timer expiration overruns. */ ++#define DELAYTIMER_MAX 2147483647 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/bits/posix_opt.h +@@ -0,0 +1,190 @@ ++/* Define POSIX options for FreeBSD. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef _BITS_POSIX_OPT_H ++#define _BITS_POSIX_OPT_H 1 ++ ++/* Job control is supported. */ ++#define _POSIX_JOB_CONTROL 1 ++ ++/* Processes have a saved set-user-ID and a saved set-group-ID. */ ++#define _POSIX_SAVED_IDS 1 ++ ++/* Priority scheduling is supported. */ ++#define _POSIX_PRIORITY_SCHEDULING 200809L ++ ++/* Synchronizing file data is supported. */ ++#define _POSIX_SYNCHRONIZED_IO 200809L ++ ++/* The fsync function is present. */ ++#define _POSIX_FSYNC 200809L ++ ++/* Mapping of files to memory is supported. */ ++#define _POSIX_MAPPED_FILES 200809L ++ ++/* Locking of all memory is supported. */ ++#define _POSIX_MEMLOCK 200809L ++ ++/* Locking of ranges of memory is supported. */ ++#define _POSIX_MEMLOCK_RANGE 200809L ++ ++/* Setting of memory protections is supported. */ ++#define _POSIX_MEMORY_PROTECTION 200809L ++ ++/* Only root can change owner of file. */ ++#define _POSIX_CHOWN_RESTRICTED 1 ++ ++/* `c_cc' member of 'struct termios' structure can be disabled by ++ using the value _POSIX_VDISABLE. */ ++#define _POSIX_VDISABLE ((unsigned char)'\377') ++ ++/* Filenames are not silently truncated. */ ++#define _POSIX_NO_TRUNC 1 ++/* X/Open realtime support is only partially available. */ ++#define _XOPEN_REALTIME -1 ++ ++/* X/Open realtime thread support is only partially available. */ ++#define _XOPEN_REALTIME_THREADS -1 ++ ++/* Implementation supports `poll' function. */ ++#define _POSIX_POLL 1 ++ ++/* Implementation supports `select' and `pselect' functions. */ ++#define _POSIX_SELECT 1 ++ ++/* XPG4.2 shared memory is supported. */ ++#define _XOPEN_SHM 1 ++ ++/* Tell we have POSIX threads. */ ++#define _POSIX_THREADS 200809L ++ ++/* We have the reentrant functions described in POSIX. */ ++#define _POSIX_REENTRANT_FUNCTIONS 1 ++#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L ++ ++/* We provide priority scheduling for threads. */ ++#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L ++ ++/* We support user-defined stack sizes. */ ++#define _POSIX_THREAD_ATTR_STACKSIZE 200809L ++ ++/* We support user-defined stacks. */ ++#define _POSIX_THREAD_ATTR_STACKADDR 200809L ++ ++/* We support POSIX.1b semaphores, but only the non-shared form for now. */ ++#define _POSIX_SEMAPHORES 200809L ++ ++/* Real-time signals are not available. */ ++#define _POSIX_REALTIME_SIGNALS -1 ++ ++/* We support asynchronous I/O. */ ++#define _POSIX_ASYNCHRONOUS_IO 200809L ++#define _POSIX_ASYNC_IO 1 ++/* Alternative name for Unix98. */ ++#define _LFS_ASYNCHRONOUS_IO 1 ++/* Support for prioritization is not available. */ ++#define _POSIX_PRIORITIZED_IO -1 ++ ++/* The LFS support in asynchronous I/O is also available. */ ++#define _LFS64_ASYNCHRONOUS_IO 1 ++ ++/* The rest of the LFS is also available. */ ++#define _LFS_LARGEFILE 1 ++#define _LFS64_LARGEFILE 1 ++#define _LFS64_STDIO 1 ++ ++/* POSIX shared memory objects are implemented. */ ++#define _POSIX_SHARED_MEMORY_OBJECTS 200809L ++ ++/* CPU-time clocks somewhere supported. */ ++#define _POSIX_CPUTIME 0 ++ ++/* We support somewhere the clock also in threads. */ ++#define _POSIX_THREAD_CPUTIME 0 ++ ++/* GNU libc provides regular expression handling. */ ++#define _POSIX_REGEXP 1 ++ ++/* Reader/Writer locks are available. */ ++#define _POSIX_READER_WRITER_LOCKS 200809L ++ ++/* We have a POSIX shell. */ ++#define _POSIX_SHELL 1 ++ ++/* We support the Timeouts option. */ ++#define _POSIX_TIMEOUTS 200809L ++ ++/* We support spinlocks. */ ++#define _POSIX_SPIN_LOCKS 200809L ++ ++/* The `spawn' function family is supported. */ ++#define _POSIX_SPAWN 200809L ++ ++/* We have POSIX timers. */ ++#define _POSIX_TIMERS 200809L ++ ++/* The barrier functions are available. */ ++#define _POSIX_BARRIERS 200809L ++ ++/* POSIX message queues are not available. */ ++#define _POSIX_MESSAGE_PASSING -1 ++ ++/* Thread process-shared synchronization is not supported. */ ++#define _POSIX_THREAD_PROCESS_SHARED -1 ++ ++/* The monotonic clock is available. */ ++#define _POSIX_MONOTONIC_CLOCK 200809L ++ ++/* The clock selection interfaces are not available. */ ++#define _POSIX_CLOCK_SELECTION -1 ++ ++/* Advisory information interfaces are not available. */ ++#define _POSIX_ADVISORY_INFO -1 ++ ++/* IPv6 support is available. */ ++#define _POSIX_IPV6 200809L ++ ++/* Raw socket support is available. */ ++#define _POSIX_RAW_SOCKETS 200809L ++ ++/* We have at least one terminal. */ ++#define _POSIX2_CHAR_TERM 200809L ++ ++/* Neither process nor thread sporadic server interfaces is available. */ ++#define _POSIX_SPORADIC_SERVER -1 ++#define _POSIX_THREAD_SPORADIC_SERVER -1 ++ ++/* trace.h is not available. */ ++#define _POSIX_TRACE -1 ++#define _POSIX_TRACE_EVENT_FILTER -1 ++#define _POSIX_TRACE_INHERIT -1 ++#define _POSIX_TRACE_LOG -1 ++ ++/* Typed memory objects are not available. */ ++#define _POSIX_TYPED_MEMORY_OBJECTS -1 ++ ++/* No support for priority inheritance or protection. */ ++#define _POSIX_THREAD_PRIO_INHERIT -1 ++#define _POSIX_THREAD_PRIO_PROTECT -1 ++ ++#endif /* bits/posix_opt.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/bits/sigthread.h +@@ -0,0 +1,38 @@ ++/* Signal handling function for threaded programs. ++ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_SIGTHREAD_H ++#define _BITS_SIGTHREAD_H 1 ++ ++#if !defined _SIGNAL_H && !defined _PTHREAD_H ++# error "Never include this file directly. Use instead" ++#endif ++ ++/* Functions for handling signals. */ ++ ++/* Modify the signal mask for the calling thread. The arguments have ++ the same meaning as for sigprocmask(2). */ ++extern int pthread_sigmask (int __how, ++ __const __sigset_t *__restrict __newmask, ++ __sigset_t *__restrict __oldmask) __THROW; ++ ++/* Send signal SIGNO to the given thread. */ ++extern int pthread_kill (pthread_t __threadid, int __signo) __THROW; ++ ++#endif /* bits/sigthread.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/bits/typesizes.h +@@ -0,0 +1,82 @@ ++/* bits/typesizes.h -- underlying types for *_t. kFreeBSD version. ++ Copyright (C) 2002, 2003, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_TYPES_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _BITS_TYPESIZES_H ++#define _BITS_TYPESIZES_H 1 ++ ++/* See for the meaning of these macros. This file exists so ++ that need not vary across different GNU platforms. */ ++ ++#define __DEV_T_TYPE __U32_TYPE ++#define __UID_T_TYPE __U32_TYPE ++#define __GID_T_TYPE __U32_TYPE ++#define __INO_T_TYPE __U32_TYPE ++#define __INO64_T_TYPE __UQUAD_TYPE ++#define __MODE_T_TYPE __U16_TYPE ++#define __NLINK_T_TYPE __U16_TYPE ++#define __OFF_T_TYPE __SQUAD_TYPE ++#define __OFF64_T_TYPE __SQUAD_TYPE ++#define __PID_T_TYPE __S32_TYPE ++#define __RLIM_T_TYPE __SQUAD_TYPE ++#define __RLIM64_T_TYPE __SQUAD_TYPE ++#define __BLKCNT_T_TYPE __SQUAD_TYPE ++#define __BLKCNT64_T_TYPE __SQUAD_TYPE ++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE ++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE ++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE ++#define __ID_T_TYPE __U32_TYPE ++#define __CLOCK_T_TYPE __S32_TYPE ++ ++/* ++ * This one is a bit tricky. It needs to match the size ++ * in the sys/${arch}/include/_types.h typedefs. ++ * ++ * However, for i386 and amd64 we started with __SLONGWORD_TYPE ++ * and we need to maintain ABI. Even if size is the same, using ++ * a different type may affect C++ ABI (this distinction is ++ * necessary to implement function overload), so it must stay ++ * with __SLONGWORD_TYPE. ++ */ ++#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) ++#define __TIME_T_TYPE __SLONGWORD_TYPE ++#else ++#define __TIME_T_TYPE __S64_TYPE ++#endif ++ ++#define __USECONDS_T_TYPE __U32_TYPE ++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE ++#define __DADDR_T_TYPE __SQUAD_TYPE ++#define __SWBLK_T_TYPE __S32_TYPE ++#define __KEY_T_TYPE __SLONGWORD_TYPE ++#define __CLOCKID_T_TYPE __S32_TYPE ++#define __TIMER_T_TYPE __S32_TYPE ++#define __BLKSIZE_T_TYPE __U32_TYPE ++#define __FSID_T_TYPE union { int __val[2]; int val[2]; } ++#define __SSIZE_T_TYPE __SWORD_TYPE ++ ++/* Number of descriptors that can fit in an `fd_set'. */ ++#define __FD_SETSIZE 1024 ++ ++ ++#endif /* bits/typesizes.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/execve.c +@@ -0,0 +1,2 @@ ++#include ++libc_hidden_proto (__syscall_execve ) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/fatal-prepare.h +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2003, 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* We have to completely disable cancellation. assert() must not be a ++ cancellation point but the implementation uses write() etc. */ ++#ifdef SHARED ++# include ++# define FATAL_PREPARE \ ++ { \ ++ int (*fp) (int, int *); \ ++ fp = __libc_pthread_functions.ptr_pthread_setcancelstate; \ ++ if (fp != NULL) \ ++ fp (PTHREAD_CANCEL_DISABLE, NULL); \ ++ } ++#else ++# pragma weak pthread_setcancelstate ++# define FATAL_PREPARE \ ++ { \ ++ if (pthread_setcancelstate != NULL) \ ++ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL); \ ++ } ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/fork.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/fork.h +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/jmp-unwind.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/lowlevellock.h +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _LOWLEVELLOCK_H ++#define _LOWLEVELLOCK_H 1 ++ ++#include ++ ++typedef union ++{ ++ volatile void * uv; /* in fact struct umtx from */ ++ volatile int iv; ++ volatile long lv; ++ ++} __rtld_mrlock_t; ++ ++#define UMTX_OP_WAIT 2 /* */ ++#define UMTX_OP_WAKE 3 /* */ ++ ++extern int __syscall__umtx_op(void *, int, long, void*, void*); ++ ++static inline void lll_futex_wake(long *umtx, unsigned int nr_wakeup) ++{ ++ __syscall__umtx_op(umtx, UMTX_OP_WAKE, nr_wakeup, NULL, NULL); ++} ++ ++static inline void lll_futex_wait(long *umtx, unsigned int old_val) ++{ ++ __syscall__umtx_op(umtx, UMTX_OP_WAIT, old_val, NULL, NULL); ++} ++ ++#endif /* lowlevellock.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/pt-sigsuspend.S +@@ -0,0 +1,29 @@ ++/* Internal sigsuspend system call for LinuxThreads. FreeBSD version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++ ++PSEUDO_NOERRNO(__pthread_sigsuspend, sigsuspend, 1) ++ ret_NOERRNO ++PSEUDO_END_NOERRNO(__pthread_sigsuspend) ++ ++PSEUDO(__syscall_sigsuspend, sigsuspend, 1) ++ ret ++PSEUDO_END(__syscall_sigsuspend) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/raise.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/register-atfork.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/smp.h +@@ -0,0 +1,36 @@ ++/* Determine whether the host has multiple processors. FreeBSD version. ++ Copyright (C) 1996, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++/* Test whether the machine has more than one processor. */ ++static inline int ++is_smp_system (void) ++{ ++ /* Fetch sysctl value of "hw.ncpu". */ ++ int request[] = { CTL_HW, HW_NCPU }; ++ int result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 0; ++ ++ return (result > 1); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/linuxthreads/unregister-atfork.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/llseek.c +@@ -0,0 +1,6 @@ ++/* We don't need a definition since the lseek64 function is what we need. */ ++/* llseek doesn't have a prototype. Since the second parameter is a ++ 64bit type, this results in wrong behaviour if no prototype is ++ provided. */ ++link_warning (llseek, "\ ++the `llseek' function may be dangerous; use `lseek64' instead.") +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek.c +@@ -0,0 +1,59 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern __off_t __syscall_lseek (int __fd, __off_t __offset, int __whence) __THROW; ++libc_hidden_proto (__syscall_lseek) ++extern __off_t __syscall_freebsd6_lseek (int __fd, int __unused1, __off_t __offset, ++ int __whence) __THROW; ++libc_hidden_proto (__syscall_freebsd6_lseek) ++ ++__off_t ++__libc_lseek (int fd, __off_t offset, int whence) ++{ ++ __off_t result; ++ ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (lseek, 3, fd, offset, whence); ++ ++#ifndef __ASSUME_LSEEK_SYSCALL ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_lseek, 4, fd, 0, offset, whence); ++#endif ++ ++ return result; ++} ++ ++weak_alias (__libc_lseek, __lseek) ++libc_hidden_def (__lseek) ++weak_alias (__libc_lseek, lseek) ++ ++/* 'lseek64' is the same as 'lseek', because __off64_t == __off_t. */ ++strong_alias (__libc_lseek, __libc_lseek64) ++weak_alias (__libc_lseek64, __lseek64) ++weak_alias (__lseek64, lseek64) ++ ++/* 'llseek' is the same as 'lseek', because __off64_t == __off_t. */ ++strong_alias (__libc_lseek, __llseek) ++weak_alias (__llseek, llseek) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/lseek64.c +@@ -0,0 +1 @@ ++/* 'lseek64' is the same as 'lseek', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/lxstat.c +@@ -0,0 +1,49 @@ ++/* lxstat using FreeBSD lstat, nlstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__lxstat (int vers, const char *file, struct stat *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_lstat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat (&buf16, buf); ++ return result; ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ return __syscall_lstat (CHECK_STRING (file), ++ CHECK_1 ((struct stat16 *) buf)); ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__lxstat) ++ ++weak_alias (__lxstat, _lxstat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/lxstat64.c +@@ -0,0 +1,44 @@ ++/* lxstat using FreeBSD lstat, nlstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__lxstat64 (int vers, const char *file, struct stat64 *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_lstat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, buf); ++ return result; ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__lxstat64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/____longjmp_chk.c +@@ -0,0 +1,7 @@ ++/* Jump to the position specified by ENV, causing the ++ setjmp call there to return VAL, or 1 if VAL is 0. ++ void __longjmp (__jmp_buf env, int val). */ ++ ++#warning longjmp_chk unimplemented ++#define __longjmp ____longjmp_chk ++#include <__longjmp.c> +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/dl-machine.h +@@ -0,0 +1,97 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. MIPS version. ++ Copyright (C) 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2010 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Kazumoto Kojima . ++ Port to kFreeBSD (kernel of FreeBSD) by Robert Millan. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include_next ++ ++/* kFreeBSD puts arguments in a different location (see start.S). */ ++#undef RTLD_START ++#define RTLD_START asm (\ ++ ".text\n\ ++ " _RTLD_PROLOGUE(ENTRY_POINT) "\ ++ " STRINGXV(SETUP_GPX($25)) "\n\ ++ " STRINGXV(SETUP_GPX64($18,$25)) "\n\ ++ # i386 ABI book says that the first entry of GOT holds\n\ ++ # the address of the dynamic structure. Though MIPS ABI\n\ ++ # doesn't say nothing about this, I emulate this here.\n\ ++ " STRINGXP(PTR_LA) " $9, _DYNAMIC\n\ ++ # Subtract OFFSET_GP_GOT\n\ ++ " STRINGXP(PTR_S) " $9, -0x7ff0($28)\n\ ++ move $9, $29\n\ ++ " STRINGXP(PTR_SUBIU) " $29, 16\n\ ++ \n\ ++ " STRINGXP(PTR_LA) " $8, .Lcoff\n\ ++ bltzal $8, .Lcoff\n\ ++.Lcoff: " STRINGXP(PTR_SUBU) " $8, $31, $8\n\ ++ \n\ ++ " STRINGXP(PTR_LA) " $25, _dl_start\n\ ++ " STRINGXP(PTR_ADDU) " $25, $8\n\ ++ jalr $25\n\ ++ \n\ ++ " STRINGXP(PTR_ADDIU) " $29, 16\n\ ++ # Get the value of label '_dl_start_user' in t9 ($25).\n\ ++ " STRINGXP(PTR_LA) " $25, _dl_start_user\n\ ++ " _RTLD_EPILOGUE(ENTRY_POINT) "\ ++ \n\ ++ \n\ ++ " _RTLD_PROLOGUE(_dl_start_user) "\ ++ " STRINGXP(SETUP_GP) "\n\ ++ " STRINGXV(SETUP_GP64($18,_dl_start_user)) "\n\ ++ move $16, $28\n\ ++ # Save the user entry point address in a saved register.\n\ ++ move $17, $2\n\ ++ # See if we were run as a command with the executable file\n\ ++ # name as an extra leading argument.\n\ ++ lw $2, _dl_skip_args\n\ ++ beq $2, $0, 1f\n\ ++ # Load the original argument count.\n\ ++ " STRINGXP(PTR_L) " $10, 0($4)\n\ ++ # Subtract _dl_skip_args from it.\n\ ++ subu $10, $2\n\ ++ # FIXME: unnecessary? Adjust the stack pointer to skip _dl_skip_args words.\n\ ++ sll $2, " STRINGXP (PTRLOG) "\n\ ++ " STRINGXP(PTR_ADDU) " $29, $2\n\ ++ # Save back the modified argument count.\n\ ++ " STRINGXP(PTR_S) " $10, 0($4)\n\ ++1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\ ++ " STRINGXP(PTR_L) /* or lw??? fixme */ " $5, 0($4)\n\ ++ " STRINGXP(PTR_LA) " $6, " STRINGXP (PTRSIZE) "($4)\n\ ++ " STRINGXP(PTR_L) " $4, _rtld_local\n\ ++ sll $7, $5, " STRINGXP (PTRLOG) "\n\ ++ " STRINGXP(PTR_ADDU) " $7, $7, $6\n\ ++ " STRINGXP(PTR_ADDU) " $7, $7, " STRINGXP (PTRSIZE) " \n\ ++ # Make sure the stack pointer is aligned for _dl_init_internal.\n\ ++ and $2, $29, -2 * " STRINGXP(SZREG) "\n\ ++ " STRINGXP(PTR_S) " $29, -" STRINGXP(SZREG) "($2)\n\ ++ " STRINGXP(PTR_SUBIU) " $29, $2, 32\n\ ++ " STRINGXP(SAVE_GP(16)) "\n\ ++ # Call the function to run the initializers.\n\ ++ jal _dl_init_internal\n\ ++ # Restore the stack pointer for _start.\n\ ++ " STRINGXP(PTR_L) " $29, 32-" STRINGXP(SZREG) "($29)\n\ ++ # Pass our finalizer function to the user in $2 as per ELF ABI.\n\ ++ " STRINGXP(PTR_LA) " $2, _dl_fini\n\ ++ # Jump to the user entry point.\n\ ++ move $25, $17\n\ ++ jr $25\n\t"\ ++ _RTLD_EPILOGUE(_dl_start_user)\ ++ ".previous"\ ++); +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/elf/start.S +@@ -0,0 +1,121 @@ ++/* Startup code compliant to the ELF Mips ABI. ++ Copyright (C) 1995, 1997, 2000, 2001, 2002, 2003, 2004, 2010 ++ Free Software Foundation, Inc. ++ Port to kFreeBSD (kernel of FreeBSD) by Robert Millan. ++ ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ In addition to the permissions in the GNU Lesser General Public ++ License, the Free Software Foundation gives you unlimited ++ permission to link the compiled version of this file with other ++ programs, and to distribute those programs without any restriction ++ coming from the use of this file. (The GNU Lesser General Public ++ License restrictions do apply in other respects; for example, they ++ cover modification of the file, and distribution when not linked ++ into another program.) ++ ++ Note that people who make modified versions of this file are not ++ obligated to grant this special exception for their modified ++ versions; it is their choice whether to do so. The GNU Lesser ++ General Public License gives permission to release a modified ++ version without this exception; this exception also makes it ++ possible to release a modified version which carries forward this ++ exception. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define __ASSEMBLY__ 1 ++#include ++#include ++#include ++ ++#ifndef ENTRY_POINT ++#error ENTRY_POINT needs to be defined for start.S on MIPS/ELF. ++#endif ++ ++/* This is the canonical entry point, usually the first thing in the text ++ segment. The SVR4/Mips ABI (pages 3-31, 3-32) says that when the entry ++ point runs, most registers' values are unspecified, except for: ++ ++ v0 ($2) Contains a function pointer to be registered with `atexit'. ++ This is how the dynamic linker arranges to have DT_FINI ++ functions called for shared libraries that have been loaded ++ before this code runs. ++ ++ a0 ($4) Contains a pointer to the arguments and environment: ++ 0(a0) argc ++ 4(a0) argv[0] ++ ... ++ (4*argc)(a0) NULL ++ (4*(argc+1))(a0) envp[0] ++ ... ++ NULL ++ ra ($31) The return address register is set to zero so that programs ++ that search backword through stack frames recognize the last ++ stack frame. ++*/ ++ ++ ++/* We need to call: ++ __libc_start_main (int (*main) (int, char **, char **), int argc, ++ char **argv, void (*init) (void), void (*fini) (void), ++ void (*rtld_fini) (void), void *stack_end) ++*/ ++ ++ .text ++ .globl ENTRY_POINT ++ .type ENTRY_POINT,@function ++ENTRY_POINT: ++#ifdef __PIC__ ++ SETUP_GPX($0) ++ SETUP_GPX64($25,$0) ++#else ++ PTR_LA $28, _gp /* Setup GP correctly if we're non-PIC. */ ++ move $31, $0 ++#endif ++ ++ PTR_L $5, 0($4) /* argc */ ++ PTR_ADDIU $6, $4, PTRSIZE /* argv */ ++ PTR_LA $4, main /* main */ ++ ++ /* Allocate space on the stack for seven arguments (o32 only) ++ and make sure the stack is aligned to double words (8 bytes) ++ on o32 and quad words (16 bytes) on n32 and n64. */ ++ ++ and $29, -2 * SZREG ++#if _MIPS_SIM == _ABIO32 ++ PTR_SUBIU $29, 32 ++#endif ++ PTR_LA $7, __libc_csu_init /* init */ ++ PTR_LA $8, __libc_csu_fini ++#if _MIPS_SIM == _ABIO32 ++ PTR_S $8, 16($29) /* fini */ ++ PTR_S $2, 20($29) /* rtld_fini */ ++ PTR_S $29, 24($29) /* stack_end */ ++#else ++ move $9, $2 /* rtld_fini */ ++ move $10, $29 /* stack_end */ ++#endif ++ jal __libc_start_main ++hlt: b hlt /* Crash if somehow it does return. */ ++ ++/* Define a symbol for the first piece of initialized data. */ ++ .data ++ .globl __data_start ++__data_start: ++ .long 0 ++ .weak data_start ++ data_start = __data_start +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/entry.h +@@ -0,0 +1,7 @@ ++/* http://sources.redhat.com/bugzilla/show_bug.cgi?id=12297 */ ++ ++#ifndef __ASSEMBLY__ ++extern void __start (void); ++#endif ++ ++#define ENTRY_POINT __start +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/linuxthreads/pt-machine.h +@@ -0,0 +1,49 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ MIPS kFreeBSD version. ++ Copyright (C) 2001, 2002, 2003, 2004, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_PT_MACHINE_H ++#define _FREEBSD_PT_MACHINE_H 1 ++ ++/* ++ almost all parts are common with linux version ++ */ ++ ++#include ++ ++#ifndef __ASSEMBLER__ ++ ++/* and only one FreeBSD specifics */ ++ ++#include ++ ++/* Initialize the thread-unique value. */ ++ ++#undef INIT_THREAD_SELF ++#define INIT_THREAD_SELF(descr, nr) \ ++ { \ ++ if (sysarch (MIPS_SET_TLS, descr) != 0) \ ++ { \ ++ abort(); \ ++ } \ ++ } ++ ++#endif /* !__ASSEMBLER__ */ ++ ++#endif /* pt-machine.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/linuxthreads/sysdep-cancel.h +@@ -0,0 +1,29 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* workarounds for http://sources.redhat.com/bugzilla/show_bug.cgi?id=12300 */ ++#ifdef __ASSEMBLER__ ++# if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++# define RTLD_SINGLE_THREAD_P(reg) SINGLE_THREAD_P(reg) ++# endif ++#else ++# define RTLD_SINGLE_THREAD_P SINGLE_THREAD_P ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/linuxthreads/tls.h +@@ -0,0 +1,206 @@ ++/* Definitions for thread-local data handling. linuxthreads/MIPS version. ++ Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _TLS_H ++#define _TLS_H ++ ++#ifndef __ASSEMBLER__ ++ ++# include ++# include ++# include ++ ++/* Type for the dtv. */ ++typedef union dtv ++{ ++ size_t counter; ++ struct ++ { ++ void *val; ++ bool is_static; ++ } pointer; ++} dtv_t; ++ ++# define READ_THREAD_POINTER() \ ++ ({ void *__result; \ ++ asm volatile (".set\tpush\n\t.set\tmips32r2\n\t" \ ++ "rdhwr\t%0, $29\n\t.set\tpop" : "=v" (__result)); \ ++ __result; }) ++ ++#else /* __ASSEMBLER__ */ ++# include ++ ++/* Note: rd must be $v1 to be ABI-conformant. */ ++# define READ_THREAD_POINTER(rd) \ ++ .set push; \ ++ .set mips32r2; \ ++ rdhwr rd, $29; \ ++ .set pop ++#endif /* __ASSEMBLER__ */ ++ ++/* LinuxThreads can only use TLS if both floating stacks (in the MIPS case, ++ that means support for "rdhwr") and support from the tools are available. ++ ++ We have to define USE_TLS consistently, or ldsodefs.h will lay out types ++ differently between an NPTL build and a LinuxThreads build. It can be set ++ for libc.so and not libpthread.so, but only if we provide appropriate padding ++ in the _pthread_descr_struct. ++ ++ Currently nothing defines FLOATING_STACKS. We could assume this based on ++ kernel version once the TLS patches are available in kernel.org, but ++ it hardly seems worth it. Use NPTL if you can. ++ ++ To avoid bothering with the TLS support code at all, use configure ++ --without-tls. */ ++ ++#if defined HAVE_TLS_SUPPORT \ ++ && (defined FLOATING_STACKS || !defined IS_IN_libpthread) ++ ++/* Signal that TLS support is available. */ ++# define USE_TLS 1 ++ ++/* Include padding in _pthread_descr_struct so that libc can find p_errno, ++ if libpthread will only include the padding because of the !IS_IN_libpthread ++ check. */ ++#ifndef FLOATING_STACKS ++# define INCLUDE_TLS_PADDING 1 ++#endif ++ ++# ifndef __ASSEMBLER__ ++ ++/* This layout is actually wholly private and not affected by the ABI. ++ Nor does it overlap the pthread data structure, so we need nothing ++ extra here at all. */ ++typedef struct ++{ ++ dtv_t *dtv; ++ void *private; ++# ifdef __FreeBSD_kernel__ ++ long gscope_flag; ++# else ++ int gscope_flag; ++# endif ++} tcbhead_t; ++ ++/* This is the size of the initial TCB. */ ++# define TLS_INIT_TCB_SIZE 0 ++ ++/* Alignment requirements for the initial TCB. */ ++# define TLS_INIT_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) ++ ++/* This is the size of the TCB. */ ++# define TLS_TCB_SIZE 0 ++ ++/* Alignment requirements for the TCB. */ ++# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) ++ ++/* This is the size we need before TCB. */ ++# define TLS_PRE_TCB_SIZE \ ++ (sizeof (struct _pthread_descr_struct) \ ++ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1))) ++ ++/* The thread pointer (in hardware register $29) points to the end of ++ the TCB + 0x7000, as for PowerPC. The pthread_descr structure is ++ immediately in front of the TCB. */ ++#define TLS_TCB_OFFSET 0x7000 ++ ++/* The DTV is allocated at the TP; the TCB is placed elsewhere. */ ++/* This is not really true for powerpc64. We are following alpha ++ where the DTV pointer is first doubleword in the TCB. */ ++# define TLS_DTV_AT_TP 1 ++ ++/* Install the dtv pointer. The pointer passed is to the element with ++ index -1 which contain the length. */ ++# define INSTALL_DTV(TCBP, DTVP) \ ++ (((tcbhead_t *) (TCBP))[-1].dtv = (DTVP) + 1) ++ ++/* Install new dtv for current thread. */ ++# define INSTALL_NEW_DTV(DTV) (THREAD_DTV() = (DTV)) ++ ++/* Return dtv of given thread descriptor. */ ++# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))[-1].dtv) ++ ++/* Get system call information. */ ++# include ++# include ++ ++/* Code to initially initialize the thread pointer. This might need ++ special attention since 'errno' is not yet available and if the ++ operation can cause a failure 'errno' must not be touched. */ ++# define TLS_INIT_TP(tcbp, secondcall) \ ++ ({ INTERNAL_SYSCALL_DECL (err); \ ++ long result_var; \ ++ result_var = INTERNAL_SYSCALL (sysarch, err, 2, \ ++ MIPS_SET_TLS, \ ++ (char *) (tcbp) + TLS_TCB_OFFSET); \ ++ INTERNAL_SYSCALL_ERROR_P (result_var, err) \ ++ ? "unknown error" : NULL; }) ++ ++/* Return the address of the dtv for the current thread. */ ++# define THREAD_DTV() \ ++ (((tcbhead_t *) (READ_THREAD_POINTER () - TLS_TCB_OFFSET))[-1].dtv) ++ ++/* Return the thread descriptor for the current thread. */ ++# undef THREAD_SELF ++# define THREAD_SELF \ ++ ((pthread_descr) (READ_THREAD_POINTER () \ ++ - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)) ++ ++/* Get the thread descriptor definition. */ ++# include ++ ++/* l_tls_offset == 0 is perfectly valid on MIPS, so we have to use some ++ different value to mean unset l_tls_offset. */ ++# define NO_TLS_OFFSET -1 ++ ++/* Initializing the thread pointer requires a syscall which may not be ++ available, so don't do it if we don't need to. */ ++# define TLS_INIT_TP_EXPENSIVE 1 ++ ++ ++// fix based on local-linuxthreads-gscope.diff from debian ++ ++/* Get and set the global scope generation counter in struct pthread. */ ++# define THREAD_GSCOPE_FLAG_UNUSED 0 ++# define THREAD_GSCOPE_FLAG_USED 1 ++# define THREAD_GSCOPE_FLAG_WAIT 2 ++# define THREAD_GSCOPE_RESET_FLAG() \ ++ do \ ++ { int __res \ ++ = atomic_exchange_rel (&THREAD_SELF->p_gscope_flag, \ ++ THREAD_GSCOPE_FLAG_UNUSED); \ ++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \ ++ lll_futex_wake (&THREAD_SELF->p_gscope_flag, 1); \ ++ } \ ++ while (0) ++# define THREAD_GSCOPE_SET_FLAG() \ ++ do \ ++ { \ ++ THREAD_SELF->p_gscope_flag = THREAD_GSCOPE_FLAG_USED; \ ++ atomic_write_barrier (); \ ++ } \ ++ while (0) ++# define THREAD_GSCOPE_WAIT() \ ++ GL(dl_wait_lookup_done) () ++ ++# endif /* __ASSEMBLER__ */ ++ ++#endif /* HAVE_TLS_SUPPORT */ ++ ++#endif /* tls.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/mips32/Makefile +@@ -0,0 +1,2 @@ ++# pull in __syscall_error routine (needed by sysdep.h in this directory) ++libpthread-routines += sysdep +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/mips32/bits/mcontext.h +@@ -0,0 +1,116 @@ ++/* Machine-dependent processor state structure for kFreeBSD. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. mips version. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/* ++ * Copyright (c) 1992, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * This code is derived from software contributed to Berkeley by ++ * Ralph Campbell. ++ * ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ucontext.h 8.1 (Berkeley) 6/10/93 ++ * JNPR: ucontext.h,v 1.2 2007/08/09 11:23:32 katta ++ * $FreeBSD$ ++ */ ++ ++typedef struct __mcontext { ++ /* ++ * These fields must match the corresponding fields in struct ++ * sigcontext which follow 'sc_mask'. That way we can support ++ * struct sigcontext and ucontext_t at the same time. ++ */ ++ int mc_onstack; /* sigstack state to restore */ ++ int mc_pc; /* pc at time of signal */ ++ int mc_regs[32]; /* processor regs 0 to 31 */ ++ int sr; /* status register */ ++ int mullo, mulhi; /* mullo and mulhi registers... */ ++ int mc_fpused; /* fp has been used */ ++ int mc_fpregs[33]; /* fp regs 0 to 31 and csr */ ++ int mc_fpc_eir; /* fp exception instruction reg */ ++ int __spare__[8]; /* XXX reserved */ ++} mcontext_t; ++ ++#define SZREG 4 ++ ++/* offsets into mcontext_t */ ++#define UCTX_REG(x) (8 + (x)*SZREG) ++ ++#define UCR_ZERO UCTX_REG(0) ++#define UCR_AT UCTX_REG(1) ++#define UCR_V0 UCTX_REG(2) ++#define UCR_V1 UCTX_REG(3) ++#define UCR_A0 UCTX_REG(4) ++#define UCR_A1 UCTX_REG(5) ++#define UCR_A2 UCTX_REG(6) ++#define UCR_A3 UCTX_REG(7) ++#define UCR_T0 UCTX_REG(8) ++#define UCR_T1 UCTX_REG(9) ++#define UCR_T2 UCTX_REG(10) ++#define UCR_T3 UCTX_REG(11) ++#define UCR_T4 UCTX_REG(12) ++#define UCR_T5 UCTX_REG(13) ++#define UCR_T6 UCTX_REG(14) ++#define UCR_T7 UCTX_REG(15) ++#define UCR_S0 UCTX_REG(16) ++#define UCR_S1 UCTX_REG(17) ++#define UCR_S2 UCTX_REG(18) ++#define UCR_S3 UCTX_REG(19) ++#define UCR_S4 UCTX_REG(20) ++#define UCR_S5 UCTX_REG(21) ++#define UCR_S6 UCTX_REG(22) ++#define UCR_S7 UCTX_REG(23) ++#define UCR_T8 UCTX_REG(24) ++#define UCR_T9 UCTX_REG(25) ++#define UCR_K0 UCTX_REG(26) ++#define UCR_K1 UCTX_REG(27) ++#define UCR_GP UCTX_REG(28) ++#define UCR_SP UCTX_REG(29) ++#define UCR_S8 UCTX_REG(30) ++#define UCR_RA UCTX_REG(31) ++#define UCR_SR UCTX_REG(32) ++#define UCR_MDLO UCTX_REG(33) ++#define UCR_MDHI UCTX_REG(34) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/mips32/bits/sigcontext.h +@@ -0,0 +1,92 @@ ++/* Machine-dependent signal context structure for kFreeBSD. mips version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++/* $OpenBSD: signal.h,v 1.2 1999/01/27 04:10:03 imp Exp $ */ ++ ++/* ++ * Copyright (c) 1992, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * This code is derived from software contributed to Berkeley by ++ * Ralph Campbell. ++ * ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)signal.h 8.1 (Berkeley) 6/10/93 ++ * JNPR: signal.h,v 1.4 2007/01/08 04:58:37 katta ++ * $FreeBSD$ ++ */ ++ ++/* ++ * Information pushed on stack when a signal is delivered. ++ * This is used by the kernel to restore state following ++ * execution of the signal handler. It is also made available ++ * to the handler to allow it to restore state properly if ++ * a non-standard exit is performed. ++ */ ++ ++__extension__ struct sigcontext { ++ /* ++ * The fields following 'sc_mask' must match the definition ++ * of struct __mcontext. That way we can support ++ * struct sigcontext and ucontext_t at the same ++ * time. ++ */ ++ __sigset_t sc_mask; /* signal mask to restore */ ++ int sc_onstack; /* sigstack state to restore */ ++ int sc_pc; /* pc at time of signal */ ++ int sc_regs[32]; /* processor regs 0 to 31 */ ++ int mullo, mulhi; /* mullo and mulhi registers... */ ++ int sc_fpused; /* fp has been used */ ++ int sc_fpregs[33]; /* fp regs 0 to 31 and csr */ ++ int sc_fpc_eir; /* fp exception instruction reg */ ++ int xxx[8]; /* XXX reserved */ ++}; ++ ++#endif /* _BITS_SIGCONTEXT_H */ ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/mips32/sysdep.h +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _KFREEBSD_MIPS_SYSDEP_H ++#define _KFREEBSD_MIPS_SYSDEP_H 1 ++ ++/* This drags in __syscall_error, keep in sync with Makefile in ++ this directory. */ ++#include ++ ++/* Default INLINE_SYSCALL works but is buggy for 64-bit arguments ++ (breaks mmap, lseek...). */ ++#undef INLINE_SYSCALL ++#define INLINE_SYSCALL(name, nr, args...) __syscall_##name(args) ++ ++/* Revert Linux kludge. */ ++#undef SYS_ify ++#ifdef __STDC__ ++# define SYS_ify(syscall_name) SYS_##syscall_name ++#else ++# define SYS_ify(syscall_name) SYS_/**/syscall_name ++#endif ++ ++/* Workaround for http://sources.redhat.com/bugzilla/show_bug.cgi?id=12301 */ ++#ifdef __ASSEMBLER__ ++/* We don't want the label for the error handler to be visible in the symbol ++ table when we define it here. */ ++#ifdef __PIC__ ++# define SYSCALL_ERROR_LABEL 99b ++#endif ++#endif /* ! __ASSEMBLER__ */ ++ ++#endif /* _KFREEBSD_MIPS_SYSDEP_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/mips64/bits/mcontext.h +@@ -0,0 +1,116 @@ ++/* Machine-dependent processor state structure for kFreeBSD. ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. mips version. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/* ++ * Copyright (c) 1992, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * This code is derived from software contributed to Berkeley by ++ * Ralph Campbell. ++ * ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ucontext.h 8.1 (Berkeley) 6/10/93 ++ * JNPR: ucontext.h,v 1.2 2007/08/09 11:23:32 katta ++ * $FreeBSD$ ++ */ ++ ++typedef struct __mcontext { ++ /* ++ * These fields must match the corresponding fields in struct ++ * sigcontext which follow 'sc_mask'. That way we can support ++ * struct sigcontext and ucontext_t at the same time. ++ */ ++ int mc_onstack; /* sigstack state to restore */ ++ long int mc_pc; /* pc at time of signal */ ++ long int mc_regs[32]; /* processor regs 0 to 31 */ ++ long int sr; /* status register */ ++ long int mullo, mulhi; /* mullo and mulhi registers... */ ++ int mc_fpused; /* fp has been used */ ++ long int mc_fpregs[33]; /* fp regs 0 to 31 and csr */ ++ long int mc_fpc_eir; /* fp exception instruction reg */ ++ int __spare__[8]; /* XXX reserved */ ++} mcontext_t; ++ ++#define SZREG 4 ++ ++/* offsets into mcontext_t */ ++#define UCTX_REG(x) (8 + (x)*SZREG) ++ ++#define UCR_ZERO UCTX_REG(0) ++#define UCR_AT UCTX_REG(1) ++#define UCR_V0 UCTX_REG(2) ++#define UCR_V1 UCTX_REG(3) ++#define UCR_A0 UCTX_REG(4) ++#define UCR_A1 UCTX_REG(5) ++#define UCR_A2 UCTX_REG(6) ++#define UCR_A3 UCTX_REG(7) ++#define UCR_T0 UCTX_REG(8) ++#define UCR_T1 UCTX_REG(9) ++#define UCR_T2 UCTX_REG(10) ++#define UCR_T3 UCTX_REG(11) ++#define UCR_T4 UCTX_REG(12) ++#define UCR_T5 UCTX_REG(13) ++#define UCR_T6 UCTX_REG(14) ++#define UCR_T7 UCTX_REG(15) ++#define UCR_S0 UCTX_REG(16) ++#define UCR_S1 UCTX_REG(17) ++#define UCR_S2 UCTX_REG(18) ++#define UCR_S3 UCTX_REG(19) ++#define UCR_S4 UCTX_REG(20) ++#define UCR_S5 UCTX_REG(21) ++#define UCR_S6 UCTX_REG(22) ++#define UCR_S7 UCTX_REG(23) ++#define UCR_T8 UCTX_REG(24) ++#define UCR_T9 UCTX_REG(25) ++#define UCR_K0 UCTX_REG(26) ++#define UCR_K1 UCTX_REG(27) ++#define UCR_GP UCTX_REG(28) ++#define UCR_SP UCTX_REG(29) ++#define UCR_S8 UCTX_REG(30) ++#define UCR_RA UCTX_REG(31) ++#define UCR_SR UCTX_REG(32) ++#define UCR_MDLO UCTX_REG(33) ++#define UCR_MDHI UCTX_REG(34) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/mips64/bits/sigcontext.h +@@ -0,0 +1,92 @@ ++/* Machine-dependent signal context structure for kFreeBSD. mips version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++/* $OpenBSD: signal.h,v 1.2 1999/01/27 04:10:03 imp Exp $ */ ++ ++/* ++ * Copyright (c) 1992, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * This code is derived from software contributed to Berkeley by ++ * Ralph Campbell. ++ * ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)signal.h 8.1 (Berkeley) 6/10/93 ++ * JNPR: signal.h,v 1.4 2007/01/08 04:58:37 katta ++ * $FreeBSD$ ++ */ ++ ++/* ++ * Information pushed on stack when a signal is delivered. ++ * This is used by the kernel to restore state following ++ * execution of the signal handler. It is also made available ++ * to the handler to allow it to restore state properly if ++ * a non-standard exit is performed. ++ */ ++ ++__extension__ struct sigcontext { ++ /* ++ * The fields following 'sc_mask' must match the definition ++ * of struct __mcontext. That way we can support ++ * struct sigcontext and ucontext_t at the same ++ * time. ++ */ ++ __sigset_t sc_mask; /* signal mask to restore */ ++ int sc_onstack; /* sigstack state to restore */ ++ long int sc_pc; /* pc at time of signal */ ++ long int sc_regs[32]; /* processor regs 0 to 31 */ ++ long int mullo, mulhi; /* mullo and mulhi registers... */ ++ int sc_fpused; /* fp has been used */ ++ long int sc_fpregs[33]; /* fp regs 0 to 31 and csr */ ++ long int sc_fpc_eir; /* fp exception instruction reg */ ++ int xxx[8]; /* XXX reserved */ ++}; ++ ++#endif /* _BITS_SIGCONTEXT_H */ ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/start_thread.S +@@ -0,0 +1,56 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ Modification for amd64 contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++/* ++ The parameters are passed in registers: ++ rdi: flags for rfork ++ rsi: child_stack ++ rdx: func ++ rcx: arg ++*/ ++ ++#include ++#include ++ ++#define SIG_SETMASK 3 ++ ++/* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++*/ ++ ++/* FIXME */ ++ ++ .text ++ENTRY (__start_thread) ++PSEUDO_END (__start_thread) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mips/sys/tas.h +@@ -0,0 +1,2 @@ ++/* workaround for http://sources.redhat.com/bugzilla/show_bug.cgi?id=12298 */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mkdirat.c +@@ -0,0 +1,126 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write file the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Bosfilen, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_mkdirat (int fd, const char *path, mode_t mode); ++libc_hidden_proto (__syscall_mkdirat) ++ ++/* Create a new direcfilery with permission bits MODE. But interpret ++ relative PATH names relative file the direcfilery associated with FD. */ ++int ++mkdirat (fd, file, mode) ++ int fd; ++ const char *file; ++ mode_t mode; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (mkdirat, 3, fd, file, mode); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ return __mkdir (file, mode); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap.c +@@ -0,0 +1,86 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++extern void *__syscall_mmap (void *__addr, size_t __len, int __prot, ++ int __flags, int __fd, __off_t __offset) __THROW; ++libc_hidden_proto (__syscall_mmap) ++extern void *__syscall_freebsd6_mmap (void *__addr, size_t __len, int __prot, ++ int __flags, int __fd, int __unused1, ++ __off_t __offset) __THROW; ++libc_hidden_proto (__syscall_freebsd6_mmap) ++extern ssize_t __syscall_freebsd6_pread (int __fd, void *__buf, size_t __nbytes, ++ int __unused1, __off_t __offset) __THROW; ++libc_hidden_proto (__syscall_freebsd6_pread) ++ ++void * ++__mmap (void *addr, size_t len, int prot, int flags, int fd, __off_t offset) ++{ ++ void *result; ++ ++ /* Validity checks not done by the kernel. */ ++ if (offset != 0) ++ { ++ int pagesize = __getpagesize (); ++ if ((__builtin_expect (pagesize & (pagesize - 1), 0) ++ ? offset % pagesize ++ : offset & (pagesize - 1))) ++ { ++ __set_errno (EINVAL); ++ return (void *) (-1); ++ } ++ } ++ ++ /* for ANON mapping we must pass -1 in place of fd */ ++ if (flags & MAP_ANON) ++ fd = -1; ++ ++ /* First try the new syscall. */ ++ result = (void *) INLINE_SYSCALL (mmap, 6, addr, len, prot, flags, fd, offset); ++ ++#ifndef __ASSUME_MMAP_SYSCALL ++ if (result == (void *) (-1) && errno == ENOSYS) ++ { ++ /* New syscall not available, use the old one. */ ++ result = (void *) INLINE_SYSCALL (freebsd6_mmap, 7, addr, len, prot, flags, fd, 0, offset); ++ if (result != (void *) (-1) && fd >= 0 && len > 0) ++ { ++ /* Force an update of the atime. POSIX:2001 mandates that this happens ++ at some time between the mmap() call and the first page-in. Since ++ the FreeBSD 6.0 kernel doesn't update the atime upon a page-in, we ++ do it here. */ ++ char dummy; ++ INLINE_SYSCALL (freebsd6_pread, 5, fd, &dummy, 1, 0, offset); ++ } ++ } ++#endif ++ ++ return result; ++} ++ ++weak_alias (__mmap, mmap) ++ ++/* 'mmap64' is the same as 'mmap', because __off64_t == __off_t. */ ++strong_alias (__mmap, __mmap64) ++weak_alias (__mmap64, mmap64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/mmap64.c +@@ -0,0 +1 @@ ++/* 'mmap64' is the same as 'mmap', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/munmap.c +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_munmap (void *__addr, size_t __len) __THROW; ++libc_hidden_proto (__syscall_munmap) ++ ++int ++__munmap (void *addr, size_t len) ++{ ++ int pagesize = __getpagesize (); ++ if ((unsigned long) addr & (pagesize - 1)) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ return INLINE_SYSCALL (munmap, 2, addr, len); ++} ++ ++weak_alias (__munmap, munmap) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/net/ethernet.h +@@ -0,0 +1,77 @@ ++/* Copyright (C) 1997, 1999, 2001, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Based on the FreeBSD version of this file. Curiously, that file ++ lacks a copyright in the header. */ ++ ++#ifndef __NET_ETHERNET_H ++#define __NET_ETHERNET_H 1 ++ ++#include ++#include ++#include /* IEEE 802.3 Ethernet constants */ ++ ++__BEGIN_DECLS ++ ++/* This is a name for the 48 bit ethernet address available on many ++ systems. */ ++struct ether_addr ++{ ++ u_int8_t octet[ETH_ALEN]; ++#define ether_addr_octet octet ++} __attribute__ ((__packed__)); ++ ++/* 10Mb/s ethernet header */ ++struct ether_header ++{ ++ u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ ++ u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ ++ u_int16_t ether_type; /* packet type ID field */ ++} __attribute__ ((__packed__)); ++ ++/* Ethernet protocol ID's */ ++#define ETHERTYPE_PUP 0x0200 /* Xerox PUP */ ++#define ETHERTYPE_IP 0x0800 /* IP */ ++#define ETHERTYPE_ARP 0x0806 /* Address resolution */ ++#define ETHERTYPE_REVARP 0x8035 /* Reverse ARP */ ++ ++#define ETHER_ADDR_LEN ETH_ALEN /* size of ethernet addr */ ++#define ETHER_TYPE_LEN 2 /* bytes in type field */ ++#define ETHER_CRC_LEN 4 /* bytes in CRC field */ ++#define ETHER_HDR_LEN ETH_HLEN /* total octets in header */ ++#define ETHER_MIN_LEN (ETH_ZLEN + ETHER_CRC_LEN) /* min packet length */ ++#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN) /* max packet length */ ++ ++/* make sure ethenet length is valid */ ++#define ETHER_IS_VALID_LEN(foo) \ ++ ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) ++ ++/* ++ * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have ++ * (type-ETHERTYPE_TRAIL)*512 bytes of data followed ++ * by an ETHER type (as given above) and then the (variable-length) header. ++ */ ++#define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ ++#define ETHERTYPE_NTRAILER 16 ++ ++#define ETHERMTU ETH_DATA_LEN ++#define ETHERMIN (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) ++ ++__END_DECLS ++ ++#endif /* net/ethernet.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/net/if.h +@@ -0,0 +1,449 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1989, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)if.h 8.1 (Berkeley) 6/10/93 ++ * $FreeBSD: src/sys/net/if.h,v 1.108 2007/06/11 20:08:11 andre Exp $ ++ */ ++ ++#ifndef _NET_IF_H_ ++#define _NET_IF_H_ ++ ++#include ++ ++#include ++ ++#include ++#include ++ ++struct ifnet; ++ ++/* ++ * Length of interface external name, including terminating '\0'. ++ * Note: this is the same size as a generic device's external name. ++ */ ++#define IF_NAMESIZE 16 ++#define IFNAMSIZ IF_NAMESIZE ++#define IF_MAXUNIT 0x7fff /* historical value */ ++ ++/* ++ * Structure used to query names of interface cloners. ++ */ ++ ++struct if_clonereq { ++ int ifcr_total; /* total cloners (out) */ ++ int ifcr_count; /* room for this many in user buffer */ ++ char *ifcr_buffer; /* buffer for cloner names */ ++}; ++ ++/* ++ * Structure describing information about an interface ++ * which may be of interest to management entities. ++ */ ++struct if_data { ++ /* generic interface information */ ++ unsigned char ifi_type; /* ethernet, tokenring, etc */ ++ unsigned char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */ ++ unsigned char ifi_addrlen; /* media address length */ ++ unsigned char ifi_hdrlen; /* media header length */ ++ unsigned char ifi_link_state; /* current link state */ ++ unsigned char ifi_spare_char1; /* spare byte */ ++ unsigned char ifi_spare_char2; /* spare byte */ ++ unsigned char ifi_datalen; /* length of this data struct */ ++ unsigned long ifi_mtu; /* maximum transmission unit */ ++ unsigned long ifi_metric; /* routing metric (external only) */ ++ unsigned long ifi_baudrate; /* linespeed */ ++ /* volatile statistics */ ++ unsigned long ifi_ipackets; /* packets received on interface */ ++ unsigned long ifi_ierrors; /* input errors on interface */ ++ unsigned long ifi_opackets; /* packets sent on interface */ ++ unsigned long ifi_oerrors; /* output errors on interface */ ++ unsigned long ifi_collisions; /* collisions on csma interfaces */ ++ unsigned long ifi_ibytes; /* total number of octets received */ ++ unsigned long ifi_obytes; /* total number of octets sent */ ++ unsigned long ifi_imcasts; /* packets received via multicast */ ++ unsigned long ifi_omcasts; /* packets sent via multicast */ ++ unsigned long ifi_iqdrops; /* dropped on input, this interface */ ++ unsigned long ifi_noproto; /* destined for unsupported protocol */ ++ unsigned long ifi_hwassist; /* HW offload capabilities, see IFCAP */ ++ time_t ifi_epoch; /* uptime at attach or stat reset */ ++ struct timeval ifi_lastchange; /* time of last administrative change */ ++}; ++ ++/*- ++ * Interface flags are of two types: network stack owned flags, and driver ++ * owned flags. Historically, these values were stored in the same ifnet ++ * flags field, but with the advent of fine-grained locking, they have been ++ * broken out such that the network stack is responsible for synchronizing ++ * the stack-owned fields, and the device driver the device-owned fields. ++ * Both halves can perform lockless reads of the other half's field, subject ++ * to accepting the involved races. ++ * ++ * Both sets of flags come from the same number space, and should not be ++ * permitted to conflict, as they are exposed to user space via a single ++ * field. ++ * ++ * The following symbols identify read and write requirements for fields: ++ * ++ * (i) if_flags field set by device driver before attach, read-only there ++ * after. ++ * (n) if_flags field written only by the network stack, read by either the ++ * stack or driver. ++ * (d) if_drv_flags field written only by the device driver, read by either ++ * the stack or driver. ++ */ ++#define IFF_UP 0x1 /* (n) interface is up */ ++#define IFF_BROADCAST 0x2 /* (i) broadcast address valid */ ++#define IFF_DEBUG 0x4 /* (n) turn on debugging */ ++#define IFF_LOOPBACK 0x8 /* (i) is a loopback net */ ++#define IFF_POINTOPOINT 0x10 /* (i) is a point-to-point link */ ++#define IFF_SMART 0x20 /* (i) interface manages own routes */ ++#define IFF_DRV_RUNNING 0x40 /* (d) resources allocated */ ++#define IFF_NOARP 0x80 /* (n) no address resolution protocol */ ++#define IFF_PROMISC 0x100 /* (n) receive all packets */ ++#define IFF_ALLMULTI 0x200 /* (n) receive all multicast packets */ ++#define IFF_DRV_OACTIVE 0x400 /* (d) tx hardware queue is full */ ++#define IFF_SIMPLEX 0x800 /* (i) can't hear own transmissions */ ++#define IFF_LINK0 0x1000 /* per link layer defined bit */ ++#define IFF_LINK1 0x2000 /* per link layer defined bit */ ++#define IFF_LINK2 0x4000 /* per link layer defined bit */ ++#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */ ++#define IFF_MULTICAST 0x8000 /* (i) supports multicast */ ++/* 0x10000 */ ++#define IFF_PPROMISC 0x20000 /* (n) user-requested promisc mode */ ++#define IFF_MONITOR 0x40000 /* (n) user-requested monitor mode */ ++#define IFF_STATICARP 0x80000 /* (n) static ARP */ ++#define IFF_NEEDSGIANT 0x100000 /* (i) hold Giant over if_start calls */ ++#define IFF_DYING 0x200000 /* (n) interface is winding down */ ++#define IFF_RENAMING 0x400000 /* (n) interface is being renamed */ ++ ++/* ++ * Old names for driver flags so that user space tools can continue to use ++ * the old (portable) names. ++ */ ++#ifndef _KERNEL ++#define IFF_RUNNING IFF_DRV_RUNNING ++#define IFF_OACTIVE IFF_DRV_OACTIVE ++#endif ++ ++/* flags set internally only: */ ++#define IFF_CANTCHANGE \ ++ (IFF_BROADCAST|IFF_POINTOPOINT|IFF_DRV_RUNNING|IFF_DRV_OACTIVE|\ ++ IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI|IFF_SMART|IFF_PROMISC) ++ ++/* ++ * Values for if_link_state. ++ */ ++#define LINK_STATE_UNKNOWN 0 /* link invalid/unknown */ ++#define LINK_STATE_DOWN 1 /* link is down */ ++#define LINK_STATE_UP 2 /* link is up */ ++ ++/* ++ * Some convenience macros used for setting ifi_baudrate. ++ * XXX 1000 vs. 1024? --thorpej@netbsd.org ++ */ ++#define IF_Kbps(x) ((x) * 1000) /* kilobits/sec. */ ++#define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ ++#define IF_Gbps(x) (IF_Mbps((x) * 1000)) /* gigabits/sec. */ ++ ++/* ++ * Capabilities that interfaces can advertise. ++ * ++ * struct ifnet.if_capabilities ++ * contains the optional features & capabilities a particular interface ++ * supports (not only the driver but also the detected hw revision). ++ * Capabilities are defined by IFCAP_* below. ++ * struct ifnet.if_capenable ++ * contains the enabled (either by default or through ifconfig) optional ++ * features & capabilities on this interface. ++ * Capabilities are defined by IFCAP_* below. ++ * struct if_data.ifi_hwassist in mbuf CSUM_ flag form, controlled by above ++ * contains the enabled optional feature & capabilites that can be used ++ * individually per packet and are specified in the mbuf pkthdr.csum_flags ++ * field. IFCAP_* and CSUM_* do not match one to one and CSUM_* may be ++ * more detailed or differenciated than IFCAP_*. ++ * Hwassist features are defined CSUM_* in sys/mbuf.h ++ */ ++#define IFCAP_RXCSUM 0x00001 /* can offload checksum on RX */ ++#define IFCAP_TXCSUM 0x00002 /* can offload checksum on TX */ ++#define IFCAP_NETCONS 0x00004 /* can be a network console */ ++#define IFCAP_VLAN_MTU 0x00008 /* VLAN-compatible MTU */ ++#define IFCAP_VLAN_HWTAGGING 0x00010 /* hardware VLAN tag support */ ++#define IFCAP_JUMBO_MTU 0x00020 /* 9000 byte MTU supported */ ++#define IFCAP_POLLING 0x00040 /* driver supports polling */ ++#define IFCAP_VLAN_HWCSUM 0x00080 /* can do IFCAP_HWCSUM on VLANs */ ++#define IFCAP_TSO4 0x00100 /* can do TCP Segmentation Offload */ ++#define IFCAP_TSO6 0x00200 /* can do TCP6 Segmentation Offload */ ++#define IFCAP_LRO 0x00400 /* can do Large Receive Offload */ ++#define IFCAP_WOL_UCAST 0x00800 /* wake on any unicast frame */ ++#define IFCAP_WOL_MCAST 0x01000 /* wake on any multicast frame */ ++#define IFCAP_WOL_MAGIC 0x02000 /* wake on any Magic Packet */ ++#define IFCAP_TOE4 0x04000 /* interface can offload TCP */ ++#define IFCAP_TOE6 0x08000 /* interface can offload TCP6 */ ++#define IFCAP_VLAN_HWFILTER 0x10000 /* interface hw can filter vlan tag */ ++#define IFCAP_POLLING_NOCOUNT 0x20000 /* polling ticks cannot be fragmented */ ++#define IFCAP_VLAN_HWTSO 0x40000 /* can do IFCAP_TSO on VLANs */ ++#define IFCAP_LINKSTATE 0x80000 /* the runtime link state is dynamic */ ++ ++#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM) ++#define IFCAP_TSO (IFCAP_TSO4 | IFCAP_TSO6) ++#define IFCAP_WOL (IFCAP_WOL_UCAST | IFCAP_WOL_MCAST | IFCAP_WOL_MAGIC) ++#define IFCAP_TOE (IFCAP_TOE4 | IFCAP_TOE6) ++ ++#define IFQ_MAXLEN 50 ++#define IFNET_SLOWHZ 1 /* granularity is 1 second */ ++ ++/* ++ * Message format for use in obtaining information about interfaces ++ * from getkerninfo and the routing socket ++ */ ++struct if_msghdr { ++ unsigned short ifm_msglen; /* to skip over non-understood messages */ ++ unsigned char ifm_version; /* future binary compatibility */ ++ unsigned char ifm_type; /* message type */ ++ int ifm_addrs; /* like rtm_addrs */ ++ int ifm_flags; /* value of if_flags */ ++ unsigned short ifm_index; /* index for associated ifp */ ++ struct if_data ifm_data;/* statistics and other data about if */ ++}; ++ ++/* ++ * Message format for use in obtaining information about interface addresses ++ * from getkerninfo and the routing socket ++ */ ++struct ifa_msghdr { ++ unsigned short ifam_msglen; /* to skip over non-understood messages */ ++ unsigned char ifam_version; /* future binary compatibility */ ++ unsigned char ifam_type; /* message type */ ++ int ifam_addrs; /* like rtm_addrs */ ++ int ifam_flags; /* value of ifa_flags */ ++ unsigned short ifam_index; /* index for associated ifp */ ++ int ifam_metric; /* value of ifa_metric */ ++}; ++ ++/* ++ * Message format for use in obtaining information about multicast addresses ++ * from the routing socket ++ */ ++struct ifma_msghdr { ++ unsigned short ifmam_msglen; /* to skip over non-understood messages */ ++ unsigned char ifmam_version; /* future binary compatibility */ ++ unsigned char ifmam_type; /* message type */ ++ int ifmam_addrs; /* like rtm_addrs */ ++ int ifmam_flags; /* value of ifa_flags */ ++ unsigned short ifmam_index; /* index for associated ifp */ ++}; ++ ++/* ++ * Message format announcing the arrival or departure of a network interface. ++ */ ++struct if_announcemsghdr { ++ unsigned short ifan_msglen; /* to skip over non-understood messages */ ++ unsigned char ifan_version; /* future binary compatibility */ ++ unsigned char ifan_type; /* message type */ ++ unsigned short ifan_index; /* index for associated ifp */ ++ char ifan_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ unsigned short ifan_what; /* what type of announcement */ ++}; ++ ++#define IFAN_ARRIVAL 0 /* interface arrival */ ++#define IFAN_DEPARTURE 1 /* interface departure */ ++ ++/* ++ * Buffer with length to be used in SIOCGIFDESCR/SIOCSIFDESCR requests ++ */ ++struct ifreq_buffer { ++ size_t length; ++ void *buffer; ++}; ++ ++/* ++ * Interface request structure used for socket ++ * ioctl's. All interface ioctl's must have parameter ++ * definitions which begin with ifr_name. The ++ * remainder may be interface specific. ++ */ ++struct ifreq { ++ char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ union { ++ struct sockaddr ifru_addr; ++ struct sockaddr ifru_dstaddr; ++ struct sockaddr ifru_broadaddr; ++ struct sockaddr ifru_netmask; ++ struct ifreq_buffer ifru_buffer; ++ short ifru_flags[2]; ++ short ifru_index; ++ int ifru_jid; ++ int ifru_metric; ++ int ifru_mtu; ++ int ifru_phys; ++ int ifru_media; ++ char * ifru_data; ++ int ifru_cap[2]; ++ } ifr_ifru; ++#define ifr_addr ifr_ifru.ifru_addr /* address */ ++#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ ++#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ ++#define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */ ++#define ifr_buffer ifr_ifru.ifru_buffer /* user supplied buffer with its length */ ++#define ifr_flags ifr_ifru.ifru_flags[0] /* flags (low 16 bits) */ ++#define ifr_flagshigh ifr_ifru.ifru_flags[1] /* flags (high 16 bits) */ ++#define ifr_jid ifr_ifru.ifru_jid /* jail/vnet */ ++#define ifr_metric ifr_ifru.ifru_metric /* metric */ ++#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ ++#define ifr_phys ifr_ifru.ifru_phys /* physical wire */ ++#define ifr_media ifr_ifru.ifru_media /* physical media */ ++#define ifr_data ifr_ifru.ifru_data /* for use by interface */ ++#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */ ++#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */ ++#define ifr_index ifr_ifru.ifru_index /* interface index */ ++}; ++ ++#define _SIZEOF_ADDR_IFREQ(ifr) \ ++ ((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \ ++ (sizeof(struct ifreq) - sizeof(struct sockaddr) + \ ++ (ifr).ifr_addr.sa_len) : sizeof(struct ifreq)) ++ ++struct ifaliasreq { ++ char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ struct sockaddr ifra_addr; ++ struct sockaddr ifra_broadaddr; ++ struct sockaddr ifra_mask; ++}; ++ ++struct ifmediareq { ++ char ifm_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ int ifm_current; /* current media options */ ++ int ifm_mask; /* don't care mask */ ++ int ifm_status; /* media status */ ++ int ifm_active; /* active options */ ++ int ifm_count; /* # entries in ifm_ulist array */ ++ int *ifm_ulist; /* media words */ ++}; ++ ++struct ifdrv { ++ char ifd_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ unsigned long ifd_cmd; ++ size_t ifd_len; ++ void *ifd_data; ++}; ++ ++/* ++ * Structure used to retrieve aux status data from interfaces. ++ * Kernel suppliers to this interface should respect the formatting ++ * needed by ifconfig(8): each line starts with a TAB and ends with ++ * a newline. The canonical example to copy and paste is in if_tun.c. ++ */ ++ ++#define IFSTATMAX 800 /* 10 lines of text */ ++struct ifstat { ++ char ifs_name[IFNAMSIZ]; /* if name, e.g. "en0" */ ++ char ascii[IFSTATMAX + 1]; ++}; ++ ++/* ++ * Structure used in SIOCGIFCONF request. ++ * Used to retrieve interface configuration ++ * for machine (useful for programs which ++ * must know all networks accessible). ++ */ ++struct ifconf { ++ int ifc_len; /* size of associated buffer */ ++ union { ++ char *ifcu_buf; ++ struct ifreq *ifcu_req; ++ } ifc_ifcu; ++#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ ++#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ ++}; ++ ++#if defined (__amd64__) || defined (COMPAT_32BIT) ++struct ifconf32 { ++ int ifc_len; /* size of associated buffer */ ++ union { ++ unsigned int ifcu_buf; ++ unsigned int ifcu_req; ++ } ifc_ifcu; ++}; ++#endif ++ ++/* ++ * interface groups ++ */ ++ ++#define IFG_ALL "all" /* group contains all interfaces */ ++/* XXX: will we implement this? */ ++#define IFG_EGRESS "egress" /* if(s) default route(s) point to */ ++ ++struct ifg_req { ++ union { ++ char ifgrqu_group[IFNAMSIZ]; ++ char ifgrqu_member[IFNAMSIZ]; ++ } ifgrq_ifgrqu; ++#define ifgrq_group ifgrq_ifgrqu.ifgrqu_group ++#define ifgrq_member ifgrq_ifgrqu.ifgrqu_member ++}; ++ ++/* ++ * Used to lookup groups for an interface ++ */ ++struct ifgroupreq { ++ char ifgr_name[IFNAMSIZ]; ++ unsigned int ifgr_len; ++ union { ++ char ifgru_group[IFNAMSIZ]; ++ struct ifg_req *ifgru_groups; ++ } ifgr_ifgru; ++#define ifgr_group ifgr_ifgru.ifgru_group ++#define ifgr_groups ifgr_ifgru.ifgru_groups ++}; ++ ++/* ++ * Structure for SIOC[AGD]LIFADDR ++ */ ++struct if_laddrreq { ++ char iflr_name[IFNAMSIZ]; ++ unsigned int flags; ++#define IFLR_PREFIX 0x8000 /* in: prefix given out: kernel fills id */ ++ unsigned int prefixlen; /* in/out */ ++ struct sockaddr_storage addr; /* in/out */ ++ struct sockaddr_storage dstaddr; /* out */ ++}; ++ ++struct if_nameindex { ++ unsigned int if_index; /* 1, 2, ... */ ++ char *if_name; /* null terminated name: "le0", ... */ ++}; ++ ++__BEGIN_DECLS ++void if_freenameindex(struct if_nameindex *); ++char *if_indextoname(unsigned int, char *); ++struct if_nameindex *if_nameindex(void); ++unsigned int if_nametoindex(const char *); ++__END_DECLS ++ ++#endif /* !_NET_IF_H_ */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/net/if_ether.h +@@ -0,0 +1,104 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _NET_IF_ETHER_H ++#define _NET_IF_ETHER_H 1 ++ ++/* ++ * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble ++ * and FCS/CRC (frame check sequence). ++ */ ++ ++#define ETH_ALEN 6 /* Octets in one ethernet addr */ ++#define ETH_HLEN 14 /* Total octets in header. */ ++#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ ++#define ETH_DATA_LEN 1500 /* Max. octets in payload */ ++#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ ++ ++/* ++ * These are the defined Ethernet Protocol ID's. ++ */ ++ ++#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ ++#define ETH_P_PUP 0x0200 /* Xerox PUP packet */ ++#define ETH_P_PUPAT 0x0201 /* Xerox PUP Addr Trans packet */ ++#define ETH_P_IP 0x0800 /* Internet Protocol packet */ ++#define ETH_P_X25 0x0805 /* CCITT X.25 */ ++#define ETH_P_ARP 0x0806 /* Address Resolution packet */ ++#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ ++#define ETH_P_IEEEPUP 0x0a00 /* Xerox IEEE802.3 PUP packet */ ++#define ETH_P_IEEEPUPAT 0x0a01 /* Xerox IEEE802.3 PUP Addr Trans packet */ ++#define ETH_P_DEC 0x6000 /* DEC Assigned proto */ ++#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ ++#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ ++#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ ++#define ETH_P_LAT 0x6004 /* DEC LAT */ ++#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ ++#define ETH_P_CUST 0x6006 /* DEC Customer use */ ++#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ ++#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ ++#define ETH_P_ATALK 0x809B /* Appletalk DDP */ ++#define ETH_P_AARP 0x80F3 /* Appletalk AARP */ ++#define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */ ++#define ETH_P_IPX 0x8137 /* IPX over DIX */ ++#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ ++#define ETH_P_WCCP 0x883E /* Web-cache coordination protocol ++ * defined in draft-wilson-wrec-wccp-v2-00.txt */ ++#define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */ ++#define ETH_P_PPP_SES 0x8864 /* PPPoE session messages */ ++#define ETH_P_MPLS_UC 0x8847 /* MPLS Unicast traffic */ ++#define ETH_P_MPLS_MC 0x8848 /* MPLS Multicast traffic */ ++#define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */ ++#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport ++ * over Ethernet ++ */ ++#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */ ++ ++/* ++ * Non DIX types. Won't clash for 1500 types. ++ */ ++ ++#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ ++#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ ++#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ ++#define ETH_P_802_2 0x0004 /* 802.2 frames */ ++#define ETH_P_SNAP 0x0005 /* Internal only */ ++#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ ++#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ ++#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ ++#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ ++#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ ++#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ ++#define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */ ++#define ETH_P_CONTROL 0x0016 /* Card specific control frames */ ++#define ETH_P_IRDA 0x0017 /* Linux-IrDA */ ++#define ETH_P_ECONET 0x0018 /* Acorn Econet */ ++#define ETH_P_HDLC 0x0019 /* HDLC frames */ ++#define ETH_P_ARCNET 0x001A /* 1A for ArcNet :-) */ ++ ++/* ++ * This is an Ethernet frame header. ++ */ ++ ++struct ethhdr { ++ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ ++ unsigned char h_source[ETH_ALEN]; /* source ether addr */ ++ unsigned short h_proto; /* packet type ID field */ ++} __attribute__((packed)); ++ ++#endif /* net/if_ether.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/icmp6.h +@@ -0,0 +1,525 @@ ++/* Copyright (C) 1991-1997,2000,2006,2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _NETINET_ICMP6_H ++#define _NETINET_ICMP6_H 1 ++ ++#include ++#include ++#include ++#include ++ ++#define ICMP6_FILTER 18 ++ ++#define ICMP6_FILTER_BLOCK 1 ++#define ICMP6_FILTER_PASS 2 ++#define ICMP6_FILTER_BLOCKOTHERS 3 ++#define ICMP6_FILTER_PASSONLY 4 ++ ++#define ICMPV6_PLD_MAXLEN 1232 /* IPV6_MMTU - sizeof(struct ip6_hdr) ++ - sizeof(struct icmp6_hdr) */ ++ ++struct icmp6_filter ++ { ++ uint32_t icmp6_filt[8]; ++ } __attribute__ ((__packed__)); ++ ++struct icmp6_hdr ++ { ++ uint8_t icmp6_type; /* type field */ ++ uint8_t icmp6_code; /* code field */ ++ uint16_t icmp6_cksum; /* checksum field */ ++ union ++ { ++ uint32_t icmp6_un_data32[1]; /* type-specific field */ ++ uint16_t icmp6_un_data16[2]; /* type-specific field */ ++ uint8_t icmp6_un_data8[4]; /* type-specific field */ ++ } icmp6_dataun; ++ } __attribute__ ((__packed__)); ++ ++#define icmp6_data32 icmp6_dataun.icmp6_un_data32 ++#define icmp6_data16 icmp6_dataun.icmp6_un_data16 ++#define icmp6_data8 icmp6_dataun.icmp6_un_data8 ++#define icmp6_pptr icmp6_data32[0] /* parameter prob */ ++#define icmp6_mtu icmp6_data32[0] /* packet too big */ ++#define icmp6_id icmp6_data16[0] /* echo request/reply */ ++#define icmp6_seq icmp6_data16[1] /* echo request/reply */ ++#define icmp6_maxdelay icmp6_data16[0] /* mcast group membership */ ++ ++#define ICMP6_DST_UNREACH 1 ++#define ICMP6_PACKET_TOO_BIG 2 ++#define ICMP6_TIME_EXCEEDED 3 ++#define ICMP6_PARAM_PROB 4 ++ ++#define ICMP6_INFOMSG_MASK 0x80 /* all informational messages */ ++ ++#define ICMP6_NI_SUBJ_IPV6 0 /* Query Subject is an IPv6 address */ ++#define ICMP6_NI_SUBJ_FQDN 1 /* Query Subject is a Domain name */ ++#define ICMP6_NI_SUBJ_IPV4 2 /* Query Subject is an IPv4 address */ ++ ++#define ICMP6_NI_SUCCESS 0 /* node information successful reply */ ++#define ICMP6_NI_REFUSED 1 /* node information request is refused */ ++#define ICMP6_NI_UNKNOWN 2 /* unknown Qtype */ ++ ++#define ICMP6_ECHO_REQUEST 128 ++#define ICMP6_ECHO_REPLY 129 ++#define MLD_LISTENER_QUERY 130 ++#define MLD_LISTENER_REPORT 131 ++#define MLD_LISTENER_DONE 132 ++#define MLD_LISTENER_REDUCTION MLD_LISTENER_DONE ++ ++/* RFC2292 decls */ ++#define ICMP6_MEMBERSHIP_QUERY 130 /* group membership query */ ++#define ICMP6_MEMBERSHIP_REPORT 131 /* group membership report */ ++#define ICMP6_MEMBERSHIP_REDUCTION 132 /* group membership termination */ ++/* the followings are for backward compatibility to old KAME apps. */ ++#define MLD6_LISTENER_QUERY MLD_LISTENER_QUERY ++#define MLD6_LISTENER_REPORT MLD_LISTENER_REPORT ++#define MLD6_LISTENER_DONE MLD_LISTENER_DONE ++ ++ ++#define ICMP6_DST_UNREACH_NOROUTE 0 /* no route to destination */ ++#define ICMP6_DST_UNREACH_ADMIN 1 /* communication with destination */ ++ /* administratively prohibited */ ++#define ICMP6_DST_UNREACH_BEYONDSCOPE 2 /* beyond scope of source address */ ++#define ICMP6_DST_UNREACH_ADDR 3 /* address unreachable */ ++#define ICMP6_DST_UNREACH_NOPORT 4 /* bad port */ ++ ++#define ICMP6_TIME_EXCEED_TRANSIT 0 /* Hop Limit == 0 in transit */ ++#define ICMP6_TIME_EXCEED_REASSEMBLY 1 /* Reassembly time out */ ++ ++#define ICMP6_PARAMPROB_HEADER 0 /* erroneous header field */ ++#define ICMP6_PARAMPROB_NEXTHEADER 1 /* unrecognized Next Header */ ++#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized IPv6 option */ ++ ++#define ICMP6_FILTER_WILLPASS(type, filterp) \ ++ ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0) ++ ++#define ICMP6_FILTER_WILLBLOCK(type, filterp) \ ++ ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0) ++ ++#define ICMP6_FILTER_SETPASS(type, filterp) \ ++ ((((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31)))) ++ ++#define ICMP6_FILTER_SETBLOCK(type, filterp) \ ++ ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))) ++ ++#define ICMP6_FILTER_SETPASSALL(filterp) \ ++ memset (filterp, 0xFF, sizeof (struct icmp6_filter)); ++ ++#define ICMP6_FILTER_SETBLOCKALL(filterp) \ ++ memset (filterp, 0, sizeof (struct icmp6_filter)); ++ ++#define ND_ROUTER_SOLICIT 133 ++#define ND_ROUTER_ADVERT 134 ++#define ND_NEIGHBOR_SOLICIT 135 ++#define ND_NEIGHBOR_ADVERT 136 ++#define ND_REDIRECT 137 ++ ++struct nd_router_solicit /* router solicitation */ ++ { ++ struct icmp6_hdr nd_rs_hdr; ++ /* could be followed by options */ ++ } __attribute__ ((__packed__)); ++ ++#define nd_rs_type nd_rs_hdr.icmp6_type ++#define nd_rs_code nd_rs_hdr.icmp6_code ++#define nd_rs_cksum nd_rs_hdr.icmp6_cksum ++#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0] ++ ++struct nd_router_advert /* router advertisement */ ++ { ++ struct icmp6_hdr nd_ra_hdr; ++ uint32_t nd_ra_reachable; /* reachable time */ ++ uint32_t nd_ra_retransmit; /* retransmit timer */ ++ /* could be followed by options */ ++ } __attribute__ ((__packed__)); ++ ++#define nd_ra_type nd_ra_hdr.icmp6_type ++#define nd_ra_code nd_ra_hdr.icmp6_code ++#define nd_ra_cksum nd_ra_hdr.icmp6_cksum ++#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0] ++#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1] ++#define ND_RA_FLAG_MANAGED 0x80 ++#define ND_RA_FLAG_OTHER 0x40 ++#define ND_RA_FLAG_HOME_AGENT 0x20 ++#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1] ++ ++struct nd_neighbor_solicit /* neighbor solicitation */ ++ { ++ struct icmp6_hdr nd_ns_hdr; ++ struct in6_addr nd_ns_target; /* target address */ ++ /* could be followed by options */ ++ } __attribute__ ((__packed__)); ++ ++#define nd_ns_type nd_ns_hdr.icmp6_type ++#define nd_ns_code nd_ns_hdr.icmp6_code ++#define nd_ns_cksum nd_ns_hdr.icmp6_cksum ++#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0] ++ ++struct nd_neighbor_advert /* neighbor advertisement */ ++ { ++ struct icmp6_hdr nd_na_hdr; ++ struct in6_addr nd_na_target; /* target address */ ++ /* could be followed by options */ ++ } __attribute__ ((__packed__)); ++ ++#define nd_na_type nd_na_hdr.icmp6_type ++#define nd_na_code nd_na_hdr.icmp6_code ++#define nd_na_cksum nd_na_hdr.icmp6_cksum ++#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0] ++#if BYTE_ORDER == BIG_ENDIAN ++#define ND_NA_FLAG_ROUTER 0x80000000 ++#define ND_NA_FLAG_SOLICITED 0x40000000 ++#define ND_NA_FLAG_OVERRIDE 0x20000000 ++#else /* BYTE_ORDER == LITTLE_ENDIAN */ ++#define ND_NA_FLAG_ROUTER 0x00000080 ++#define ND_NA_FLAG_SOLICITED 0x00000040 ++#define ND_NA_FLAG_OVERRIDE 0x00000020 ++#endif ++ ++struct nd_redirect /* redirect */ ++ { ++ struct icmp6_hdr nd_rd_hdr; ++ struct in6_addr nd_rd_target; /* target address */ ++ struct in6_addr nd_rd_dst; /* destination address */ ++ /* could be followed by options */ ++ } __attribute__ ((__packed__));; ++ ++#define nd_rd_type nd_rd_hdr.icmp6_type ++#define nd_rd_code nd_rd_hdr.icmp6_code ++#define nd_rd_cksum nd_rd_hdr.icmp6_cksum ++#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0] ++ ++struct nd_opt_hdr /* Neighbor discovery option header */ ++ { ++ uint8_t nd_opt_type; ++ uint8_t nd_opt_len; /* in units of 8 octets */ ++ /* followed by option specific data */ ++ } __attribute__ ((__packed__)); ++ ++#define ND_OPT_SOURCE_LINKADDR 1 ++#define ND_OPT_TARGET_LINKADDR 2 ++#define ND_OPT_PREFIX_INFORMATION 3 ++#define ND_OPT_REDIRECTED_HEADER 4 ++#define ND_OPT_MTU 5 ++#define ND_OPT_RTR_ADV_INTERVAL 7 ++#define ND_OPT_HOME_AGENT_INFO 8 ++ ++struct nd_opt_prefix_info /* prefix information */ ++ { ++ uint8_t nd_opt_pi_type; ++ uint8_t nd_opt_pi_len; ++ uint8_t nd_opt_pi_prefix_len; ++ uint8_t nd_opt_pi_flags_reserved; ++ uint32_t nd_opt_pi_valid_time; ++ uint32_t nd_opt_pi_preferred_time; ++ uint32_t nd_opt_pi_reserved2; ++ struct in6_addr nd_opt_pi_prefix; ++ } __attribute__ ((__packed__)); ++ ++#define ND_OPT_PI_FLAG_ONLINK 0x80 ++#define ND_OPT_PI_FLAG_AUTO 0x40 ++#define ND_OPT_PI_FLAG_RADDR 0x20 ++ ++struct nd_opt_rd_hdr /* redirected header */ ++ { ++ uint8_t nd_opt_rh_type; ++ uint8_t nd_opt_rh_len; ++ uint16_t nd_opt_rh_reserved1; ++ uint32_t nd_opt_rh_reserved2; ++ /* followed by IP header and data */ ++ } __attribute__ ((__packed__)); ++ ++struct nd_opt_mtu /* MTU option */ ++ { ++ uint8_t nd_opt_mtu_type; ++ uint8_t nd_opt_mtu_len; ++ uint16_t nd_opt_mtu_reserved; ++ uint32_t nd_opt_mtu_mtu; ++ } __attribute__ ((__packed__)); ++ ++struct mld_hdr ++ { ++ struct icmp6_hdr mld_icmp6_hdr; ++ struct in6_addr mld_addr; /* multicast address */ ++ } __attribute__ ((__packed__)); ++ ++#define mld_type mld_icmp6_hdr.icmp6_type ++#define mld_code mld_icmp6_hdr.icmp6_code ++#define mld_cksum mld_icmp6_hdr.icmp6_cksum ++#define mld_maxdelay mld_icmp6_hdr.icmp6_data16[0] ++#define mld_reserved mld_icmp6_hdr.icmp6_data16[1] ++ ++/* definitions to provide backward compatibility to old KAME applications */ ++#define mld6_hdr mld_hdr ++#define mld6_type mld_type ++#define mld6_code mld_code ++#define mld6_cksum mld_cksum ++#define mld6_maxdelay mld_maxdelay ++#define mld6_reserved mld_reserved ++#define mld6_addr mld_addr ++ ++#define ICMP6_ROUTER_RENUMBERING 138 ++ ++#define ICMP6_ROUTER_RENUMBERING_COMMAND 0 /* rr command */ ++#define ICMP6_ROUTER_RENUMBERING_RESULT 1 /* rr result */ ++#define ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET 255 /* rr seq num reset */ ++ ++struct icmp6_router_renum /* router renumbering header */ ++ { ++ struct icmp6_hdr rr_hdr; ++ uint8_t rr_segnum; ++ uint8_t rr_flags; ++ uint16_t rr_maxdelay; ++ uint32_t rr_reserved; ++ } __attribute__ ((__packed__)); ++ ++#define rr_type rr_hdr.icmp6_type ++#define rr_code rr_hdr.icmp6_code ++#define rr_cksum rr_hdr.icmp6_cksum ++#define rr_seqnum rr_hdr.icmp6_data32[0] ++ ++/* Router renumbering flags */ ++#define ICMP6_RR_FLAGS_TEST 0x80 ++#define ICMP6_RR_FLAGS_REQRESULT 0x40 ++#define ICMP6_RR_FLAGS_FORCEAPPLY 0x20 ++#define ICMP6_RR_FLAGS_SPECSITE 0x10 ++#define ICMP6_RR_FLAGS_PREVDONE 0x08 ++ ++#define ICMP6_WRUREQUEST 139 /* who are you request */ ++#define ICMP6_WRUREPLY 140 /* who are you reply */ ++#define ICMP6_FQDN_QUERY 139 /* FQDN query */ ++#define ICMP6_FQDN_REPLY 140 /* FQDN reply */ ++#define ICMP6_NI_QUERY 139 /* node information request */ ++#define ICMP6_NI_REPLY 140 /* node information reply */ ++ ++struct rr_pco_match /* match prefix part */ ++ { ++ uint8_t rpm_code; ++ uint8_t rpm_len; ++ uint8_t rpm_ordinal; ++ uint8_t rpm_matchlen; ++ uint8_t rpm_minlen; ++ uint8_t rpm_maxlen; ++ uint16_t rpm_reserved; ++ struct in6_addr rpm_prefix; ++ } __attribute__ ((__packed__)); ++ ++/* PCO code values */ ++#define RPM_PCO_ADD 1 ++#define RPM_PCO_CHANGE 2 ++#define RPM_PCO_SETGLOBAL 3 ++#define RPM_PCO_MAX 4 ++ ++struct rr_pco_use /* use prefix part */ ++ { ++ uint8_t rpu_uselen; ++ uint8_t rpu_keeplen; ++ uint8_t rpu_ramask; ++ uint8_t rpu_raflags; ++ uint32_t rpu_vltime; ++ uint32_t rpu_pltime; ++ uint32_t rpu_flags; ++ struct in6_addr rpu_prefix; ++ } __attribute__ ((__packed__)); ++ ++#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK 0x80 ++#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO 0x40 ++ ++#if BYTE_ORDER == BIG_ENDIAN ++# define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000 ++# define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000 ++#elif BYTE_ORDER == LITTLE_ENDIAN ++# define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80 ++# define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40 ++#endif ++ ++struct rr_result /* router renumbering result message */ ++ { ++ uint16_t rrr_flags; ++ uint8_t rrr_ordinal; ++ uint8_t rrr_matchedlen; ++ uint32_t rrr_ifid; ++ struct in6_addr rrr_prefix; ++ } __attribute__ ((__packed__)); ++ ++#if BYTE_ORDER == BIG_ENDIAN ++# define ICMP6_RR_RESULT_FLAGS_OOB 0x0002 ++# define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001 ++#elif BYTE_ORDER == LITTLE_ENDIAN ++# define ICMP6_RR_RESULT_FLAGS_OOB 0x0200 ++# define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100 ++#endif ++ ++/* Mobile IPv6 extension: Advertisement Interval. */ ++struct nd_opt_adv_interval ++ { ++ uint8_t nd_opt_adv_interval_type; ++ uint8_t nd_opt_adv_interval_len; ++ uint16_t nd_opt_adv_interval_reserved; ++ uint32_t nd_opt_adv_interval_ival; ++ }; ++ ++/* Mobile IPv6 extension: Home Agent Info. */ ++struct nd_opt_home_agent_info ++ { ++ uint8_t nd_opt_home_agent_info_type; ++ uint8_t nd_opt_home_agent_info_len; ++ uint16_t nd_opt_home_agent_info_reserved; ++ uint16_t nd_opt_home_agent_info_preference; ++ uint16_t nd_opt_home_agent_info_lifetime; ++ }; ++ ++/*- ++ * Copyright (C) 1995, 1996, 1997, and 1998 WIDE 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. ++ */ ++ ++/*- ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93 ++ */ ++ ++/* ++ * IP6 route structure ++ */ ++ ++struct route_in6 { ++ struct rtentry *ro_rt; ++ struct llentry *ro_lle; ++ struct sockaddr_in6 ro_dst; ++}; ++ ++/* ++ * Variables related to this implementation ++ * of the internet control message protocol version 6. ++ */ ++struct icmp6errstat { ++ u_quad_t icp6errs_dst_unreach_noroute; ++ u_quad_t icp6errs_dst_unreach_admin; ++ u_quad_t icp6errs_dst_unreach_beyondscope; ++ u_quad_t icp6errs_dst_unreach_addr; ++ u_quad_t icp6errs_dst_unreach_noport; ++ u_quad_t icp6errs_packet_too_big; ++ u_quad_t icp6errs_time_exceed_transit; ++ u_quad_t icp6errs_time_exceed_reassembly; ++ u_quad_t icp6errs_paramprob_header; ++ u_quad_t icp6errs_paramprob_nextheader; ++ u_quad_t icp6errs_paramprob_option; ++ u_quad_t icp6errs_redirect; /* we regard redirect as an error here */ ++ u_quad_t icp6errs_unknown; ++}; ++ ++struct icmp6stat { ++/* statistics related to icmp6 packets generated */ ++ u_quad_t icp6s_error; /* # of calls to icmp6_error */ ++ u_quad_t icp6s_canterror; /* no error 'cuz old was icmp */ ++ u_quad_t icp6s_toofreq; /* no error 'cuz rate limitation */ ++ u_quad_t icp6s_outhist[256]; ++/* statistics related to input message processed */ ++ u_quad_t icp6s_badcode; /* icmp6_code out of range */ ++ u_quad_t icp6s_tooshort; /* packet < sizeof(struct icmp6_hdr) */ ++ u_quad_t icp6s_checksum; /* bad checksum */ ++ u_quad_t icp6s_badlen; /* calculated bound mismatch */ ++ /* ++ * number of responses: this member is inherited from netinet code, but ++ * for netinet6 code, it is already available in icp6s_outhist[]. ++ */ ++ u_quad_t icp6s_reflect; ++ u_quad_t icp6s_inhist[256]; ++ u_quad_t icp6s_nd_toomanyopt; /* too many ND options */ ++ struct icmp6errstat icp6s_outerrhist; ++#define icp6s_odst_unreach_noroute \ ++ icp6s_outerrhist.icp6errs_dst_unreach_noroute ++#define icp6s_odst_unreach_admin icp6s_outerrhist.icp6errs_dst_unreach_admin ++#define icp6s_odst_unreach_beyondscope \ ++ icp6s_outerrhist.icp6errs_dst_unreach_beyondscope ++#define icp6s_odst_unreach_addr icp6s_outerrhist.icp6errs_dst_unreach_addr ++#define icp6s_odst_unreach_noport icp6s_outerrhist.icp6errs_dst_unreach_noport ++#define icp6s_opacket_too_big icp6s_outerrhist.icp6errs_packet_too_big ++#define icp6s_otime_exceed_transit \ ++ icp6s_outerrhist.icp6errs_time_exceed_transit ++#define icp6s_otime_exceed_reassembly \ ++ icp6s_outerrhist.icp6errs_time_exceed_reassembly ++#define icp6s_oparamprob_header icp6s_outerrhist.icp6errs_paramprob_header ++#define icp6s_oparamprob_nextheader \ ++ icp6s_outerrhist.icp6errs_paramprob_nextheader ++#define icp6s_oparamprob_option icp6s_outerrhist.icp6errs_paramprob_option ++#define icp6s_oredirect icp6s_outerrhist.icp6errs_redirect ++#define icp6s_ounknown icp6s_outerrhist.icp6errs_unknown ++ u_quad_t icp6s_pmtuchg; /* path MTU changes */ ++ u_quad_t icp6s_nd_badopt; /* bad ND options */ ++ u_quad_t icp6s_badns; /* bad neighbor solicitation */ ++ u_quad_t icp6s_badna; /* bad neighbor advertisement */ ++ u_quad_t icp6s_badrs; /* bad router advertisement */ ++ u_quad_t icp6s_badra; /* bad router advertisement */ ++ u_quad_t icp6s_badredirect; /* bad redirect message */ ++}; ++ ++#endif /* netinet/icmpv6.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/if_ether.h +@@ -0,0 +1,138 @@ ++/* Copyright (C) 1996, 1997, 1999, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __NETINET_IF_ETHER_H ++ ++#define __NETINET_IF_ETHER_H 1 ++#include ++#include ++ ++#include ++ ++#ifdef __USE_BSD ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)if_ether.h 8.3 (Berkeley) 5/2/95 ++ * $FreeBSD$ ++ */ ++ ++#include ++#include ++#include ++ ++__BEGIN_DECLS ++/* ++ * Ethernet Address Resolution Protocol. ++ * ++ * See RFC 826 for protocol description. Structure below is adapted ++ * to resolving internet addresses. Field names used correspond to ++ * RFC 826. ++ */ ++struct ether_arp { ++ struct arphdr ea_hdr; /* fixed-size header */ ++ u_int8_t arp_sha[ETH_ALEN]; /* sender hardware address */ ++ u_int8_t arp_spa[4]; /* sender protocol address */ ++ u_int8_t arp_tha[ETH_ALEN]; /* target hardware address */ ++ u_int8_t arp_tpa[4]; /* target protocol address */ ++}; ++#define arp_hrd ea_hdr.ar_hrd ++#define arp_pro ea_hdr.ar_pro ++#define arp_hln ea_hdr.ar_hln ++#define arp_pln ea_hdr.ar_pln ++#define arp_op ea_hdr.ar_op ++ ++struct sockaddr_inarp { ++ __SOCKADDR_COMMON (sin_); ++ in_port_t sin_port; /* Port number. */ ++ struct in_addr sin_addr; /* Internet address. */ ++ struct in_addr sin_srcaddr; ++ unsigned short sin_tos; ++ unsigned short sin_other; ++#define SIN_PROXY 1 ++}; ++ ++/* ++ * IP and ethernet specific routing flags ++ */ ++#define RTF_USETRAILERS RTF_PROTO1 /* use trailers */ ++#define RTF_ANNOUNCE RTF_PROTO2 /* announce new arp entry */ ++ ++/* ++ * Macro to map an IP multicast address to an Ethernet multicast address. ++ * The high-order 25 bits of the Ethernet address are statically assigned, ++ * and the low-order 23 bits are taken from the low end of the IP address. ++ */ ++#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ ++ /* struct in_addr *ipaddr; */ \ ++ /* u_char enaddr[ETH_ALEN]; */ \ ++{ \ ++ (enaddr)[0] = 0x01; \ ++ (enaddr)[1] = 0x00; \ ++ (enaddr)[2] = 0x5e; \ ++ (enaddr)[3] = ((u_int8_t *)ipaddr)[1] & 0x7f; \ ++ (enaddr)[4] = ((u_int8_t *)ipaddr)[2]; \ ++ (enaddr)[5] = ((u_int8_t *)ipaddr)[3]; \ ++} ++ ++/* ++ * Macro to map an IP6 multicast address to an Ethernet multicast address. ++ * The high-order 16 bits of the Ethernet address are statically assigned, ++ * and the low-order 32 bits are taken from the low end of the IP6 address. ++ */ ++#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr) \ ++/* struct in6_addr *ip6addr; */ \ ++/* u_char enaddr[ETH_ALEN]; */ \ ++{ \ ++ (enaddr)[0] = 0x33; \ ++ (enaddr)[1] = 0x33; \ ++ (enaddr)[2] = ((u_int8_t *)ip6addr)[12]; \ ++ (enaddr)[3] = ((u_int8_t *)ip6addr)[13]; \ ++ (enaddr)[4] = ((u_int8_t *)ip6addr)[14]; \ ++ (enaddr)[5] = ((u_int8_t *)ip6addr)[15]; \ ++} ++ ++__END_DECLS ++#endif /* __USE_BSD */ ++ ++#endif /* netinet/if_ether.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/ip_icmp.h +@@ -0,0 +1,296 @@ ++/* Copyright (C) 1991-1993, 1995-1997, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __NETINET_IP_ICMP_H ++#define __NETINET_IP_ICMP_H 1 ++ ++#include ++#include ++ ++__BEGIN_DECLS ++ ++struct icmphdr ++{ ++ u_int8_t type; /* message type */ ++ u_int8_t code; /* type sub-code */ ++ u_int16_t checksum; ++ union ++ { ++ struct ++ { ++ u_int16_t id; ++ u_int16_t sequence; ++ } echo; /* echo datagram */ ++ u_int32_t gateway; /* gateway address */ ++ struct ++ { ++ u_int16_t __unused; ++ u_int16_t mtu; ++ } frag; /* path mtu discovery */ ++ } un; ++}; ++ ++#define ICMP_ECHOREPLY 0 /* Echo Reply */ ++#define ICMP_DEST_UNREACH 3 /* Destination Unreachable */ ++#define ICMP_SOURCE_QUENCH 4 /* Source Quench */ ++#define ICMP_REDIRECT 5 /* Redirect (change route) */ ++#define ICMP_ECHO 8 /* Echo Request */ ++#define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */ ++#define ICMP_PARAMETERPROB 12 /* Parameter Problem */ ++#define ICMP_TIMESTAMP 13 /* Timestamp Request */ ++#define ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */ ++#define ICMP_INFO_REQUEST 15 /* Information Request */ ++#define ICMP_INFO_REPLY 16 /* Information Reply */ ++#define ICMP_ADDRESS 17 /* Address Mask Request */ ++#define ICMP_ADDRESSREPLY 18 /* Address Mask Reply */ ++#define NR_ICMP_TYPES 18 ++ ++ ++/* Codes for UNREACH. */ ++#define ICMP_NET_UNREACH 0 /* Network Unreachable */ ++#define ICMP_HOST_UNREACH 1 /* Host Unreachable */ ++#define ICMP_PROT_UNREACH 2 /* Protocol Unreachable */ ++#define ICMP_PORT_UNREACH 3 /* Port Unreachable */ ++#define ICMP_FRAG_NEEDED 4 /* Fragmentation Needed/DF set */ ++#define ICMP_SR_FAILED 5 /* Source Route failed */ ++#define ICMP_NET_UNKNOWN 6 ++#define ICMP_HOST_UNKNOWN 7 ++#define ICMP_HOST_ISOLATED 8 ++#define ICMP_NET_ANO 9 ++#define ICMP_HOST_ANO 10 ++#define ICMP_NET_UNR_TOS 11 ++#define ICMP_HOST_UNR_TOS 12 ++#define ICMP_PKT_FILTERED 13 /* Packet filtered */ ++#define ICMP_PREC_VIOLATION 14 /* Precedence violation */ ++#define ICMP_PREC_CUTOFF 15 /* Precedence cut off */ ++#define NR_ICMP_UNREACH 15 /* instead of hardcoding immediate value */ ++ ++/* Codes for REDIRECT. */ ++#define ICMP_REDIR_NET 0 /* Redirect Net */ ++#define ICMP_REDIR_HOST 1 /* Redirect Host */ ++#define ICMP_REDIR_NETTOS 2 /* Redirect Net for TOS */ ++#define ICMP_REDIR_HOSTTOS 3 /* Redirect Host for TOS */ ++ ++/* Codes for TIME_EXCEEDED. */ ++#define ICMP_EXC_TTL 0 /* TTL count exceeded */ ++#define ICMP_EXC_FRAGTIME 1 /* Fragment Reass time exceeded */ ++ ++ ++#ifdef __USE_BSD ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93 ++ */ ++ ++#include ++#include ++ ++/* ++ * Internal of an ICMP Router Advertisement ++ */ ++struct icmp_ra_addr ++{ ++ u_int32_t ira_addr; ++ u_int32_t ira_preference; ++}; ++ ++struct icmp ++{ ++ u_int8_t icmp_type; /* type of message, see below */ ++ u_int8_t icmp_code; /* type sub code */ ++ u_int16_t icmp_cksum; /* ones complement checksum of struct */ ++ union ++ { ++ u_char ih_pptr; /* ICMP_PARAMPROB */ ++ struct in_addr ih_gwaddr; /* gateway address */ ++ struct ih_idseq /* echo datagram */ ++ { ++ u_int16_t icd_id; ++ u_int16_t icd_seq; ++ } ih_idseq; ++ u_int32_t ih_void; ++ ++ /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ ++ struct ih_pmtu ++ { ++ u_int16_t ipm_void; ++ u_int16_t ipm_nextmtu; ++ } ih_pmtu; ++ ++ struct ih_rtradv ++ { ++ u_int8_t irt_num_addrs; ++ u_int8_t irt_wpa; ++ u_int16_t irt_lifetime; ++ } ih_rtradv; ++ } icmp_hun; ++#define icmp_pptr icmp_hun.ih_pptr ++#define icmp_gwaddr icmp_hun.ih_gwaddr ++#define icmp_id icmp_hun.ih_idseq.icd_id ++#define icmp_seq icmp_hun.ih_idseq.icd_seq ++#define icmp_void icmp_hun.ih_void ++#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void ++#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu ++#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs ++#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa ++#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime ++ union ++ { ++ struct ++ { ++ u_int32_t its_otime; ++ u_int32_t its_rtime; ++ u_int32_t its_ttime; ++ } id_ts; ++ struct ++ { ++ struct ip idi_ip; ++ /* options and then 64 bits of data */ ++ } id_ip; ++ struct icmp_ra_addr id_radv; ++ u_int32_t id_mask; ++ u_int8_t id_data[1]; ++ } icmp_dun; ++#define icmp_otime icmp_dun.id_ts.its_otime ++#define icmp_rtime icmp_dun.id_ts.its_rtime ++#define icmp_ttime icmp_dun.id_ts.its_ttime ++#define icmp_ip icmp_dun.id_ip.idi_ip ++#define icmp_radv icmp_dun.id_radv ++#define icmp_mask icmp_dun.id_mask ++#define icmp_data icmp_dun.id_data ++}; ++ ++/* ++ * Lower bounds on packet lengths for various types. ++ * For the error advice packets must first insure that the ++ * packet is large enough to contain the returned ip header. ++ * Only then can we do the check to see if 64 bits of packet ++ * data have been returned, since we need to check the returned ++ * ip header length. ++ */ ++#define ICMP_MINLEN 8 /* abs minimum */ ++#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */ ++#define ICMP_MASKLEN 12 /* address mask */ ++#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ ++#ifndef _IP_VHL ++#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) ++ /* N.B.: must separately check that ip_hl >= 5 */ ++#else ++#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8) ++ /* N.B.: must separately check that header length >= 5 */ ++#endif ++ ++/* ++ * Definition of type and code field values. ++ */ ++#define ICMP_ECHOREPLY 0 /* echo reply */ ++#define ICMP_UNREACH 3 /* dest unreachable, codes: */ ++#define ICMP_UNREACH_NET 0 /* bad net */ ++#define ICMP_UNREACH_HOST 1 /* bad host */ ++#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ ++#define ICMP_UNREACH_PORT 3 /* bad port */ ++#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ ++#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ ++#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ ++#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ ++#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ ++#define ICMP_UNREACH_NET_PROHIB 9 /* prohibited access */ ++#define ICMP_UNREACH_HOST_PROHIB 10 /* ditto */ ++#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ ++#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ ++#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */ ++#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */ ++#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */ ++#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ ++#define ICMP_REDIRECT 5 /* shorter route, codes: */ ++#define ICMP_REDIRECT_NET 0 /* for network */ ++#define ICMP_REDIRECT_HOST 1 /* for host */ ++#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ ++#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ ++#define ICMP_ALTHOSTADDR 6 /* alternate host address */ ++#define ICMP_ECHO 8 /* echo service */ ++#define ICMP_ROUTERADVERT 9 /* router advertisement */ ++#define ICMP_ROUTERADVERT_NORMAL 0 /* normal advertisement */ ++#define ICMP_ROUTERADVERT_NOROUTE_COMMON 16 /* selective routing */ ++#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ ++#define ICMP_TIMXCEED 11 /* time exceeded, code: */ ++#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ ++#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ ++#define ICMP_PARAMPROB 12 /* ip header bad */ ++#define ICMP_PARAMPROB_ERRATPTR 0 /* error at param ptr */ ++#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */ ++#define ICMP_PARAMPROB_LENGTH 2 /* bad length */ ++#define ICMP_TSTAMP 13 /* timestamp request */ ++#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ ++#define ICMP_IREQ 15 /* information request */ ++#define ICMP_IREQREPLY 16 /* information reply */ ++#define ICMP_MASKREQ 17 /* address mask request */ ++#define ICMP_MASKREPLY 18 /* address mask reply */ ++#define ICMP_TRACEROUTE 30 /* traceroute */ ++#define ICMP_DATACONVERR 31 /* data conversion error */ ++#define ICMP_MOBILE_REDIRECT 32 /* mobile host redirect */ ++#define ICMP_IPV6_WHEREAREYOU 33 /* IPv6 where-are-you */ ++#define ICMP_IPV6_IAMHERE 34 /* IPv6 i-am-here */ ++#define ICMP_MOBILE_REGREQUEST 35 /* mobile registration req */ ++#define ICMP_MOBILE_REGREPLY 36 /* mobile registration reply */ ++#define ICMP_SKIP 39 /* SKIP */ ++#define ICMP_PHOTURIS 40 /* Photuris */ ++#define ICMP_PHOTURIS_UNKNOWN_INDEX 1 /* unknown sec index */ ++#define ICMP_PHOTURIS_AUTH_FAILED 2 /* auth failed */ ++#define ICMP_PHOTURIS_DECRYPT_FAILED 3 /* decrypt failed */ ++ ++#define ICMP_MAXTYPE 40 ++ ++#define ICMP_INFOTYPE(type) \ ++ ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ ++ (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ ++ (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ ++ (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ ++ (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) ++ ++#endif /* __USE_BSD */ ++ ++__END_DECLS ++ ++#endif /* netinet/ip_icmp.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/netinet/tcp.h +@@ -0,0 +1,267 @@ ++/* netinet/tcp.h ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)tcp.h 8.1 (Berkeley) 6/10/93 ++ */ ++ ++#ifndef _NETINET_TCP_H ++#define _NETINET_TCP_H 1 ++ ++#include ++#include ++ ++/* ++ * User-settable options (used with setsockopt). ++ */ ++#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */ ++#define TCP_MAXSEG 2 /* Set maximum segment size */ ++#define TCP_NOPUSH 4 /* Don't push last block of write */ ++#define TCP_NOOPT 8 /* Don't use TCP options */ ++#define TCP_MD5SIG 16 /* use MD5 digests (RFC2385) */ ++#define TCP_INFO 32 /* retrieve tcp_info structure */ ++#define TCP_CONGESTION 64 /* get/set congestion control algorithm */ ++ ++#ifdef __USE_MISC ++# include ++ ++typedef u_int32_t tcp_seq; ++typedef u_int32_t tcp_cc; /* connection count, per RFC 1644 */ ++ ++/* Miscellaneous constants */ ++#define MAX_SACK_BLKS 6 /* Max # SACK blocks stored at receiver side */ ++#define TCP_MAX_SACK 4 /* MAX # SACKs sent in any segment */ ++ ++# ifdef __FAVOR_BSD ++/* ++ * TCP header. ++ * Per RFC 793, September, 1981. ++ */ ++struct tcphdr ++ { ++ u_int16_t th_sport; /* source port */ ++ u_int16_t th_dport; /* destination port */ ++ tcp_seq th_seq; /* sequence number */ ++ tcp_seq th_ack; /* acknowledgement number */ ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++ u_int8_t th_x2:4; /* (unused) */ ++ u_int8_t th_off:4; /* data offset */ ++# endif ++# if __BYTE_ORDER == __BIG_ENDIAN ++ u_int8_t th_off:4; /* data offset */ ++ u_int8_t th_x2:4; /* (unused) */ ++# endif ++ u_int8_t th_flags; ++# define TH_FIN 0x01 ++# define TH_SYN 0x02 ++# define TH_RST 0x04 ++# define TH_PUSH 0x08 ++# define TH_ACK 0x10 ++# define TH_URG 0x20 ++ u_int16_t th_win; /* window */ ++ u_int16_t th_sum; /* checksum */ ++ u_int16_t th_urp; /* urgent pointer */ ++}; ++ ++# else /* !__FAVOR_BSD */ ++struct tcphdr ++ { ++ u_int16_t source; ++ u_int16_t dest; ++ u_int32_t seq; ++ u_int32_t ack_seq; ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++ u_int16_t res1:4; ++ u_int16_t doff:4; ++ u_int16_t fin:1; ++ u_int16_t syn:1; ++ u_int16_t rst:1; ++ u_int16_t psh:1; ++ u_int16_t ack:1; ++ u_int16_t urg:1; ++ u_int16_t res2:2; ++# elif __BYTE_ORDER == __BIG_ENDIAN ++ u_int16_t doff:4; ++ u_int16_t res1:4; ++ u_int16_t res2:2; ++ u_int16_t urg:1; ++ u_int16_t ack:1; ++ u_int16_t psh:1; ++ u_int16_t rst:1; ++ u_int16_t syn:1; ++ u_int16_t fin:1; ++# else ++# error "Adjust your defines" ++# endif ++ u_int16_t window; ++ u_int16_t check; ++ u_int16_t urg_ptr; ++}; ++# endif /* __FAVOR_BSD */ ++ ++enum ++{ ++ TCP_ESTABLISHED = 1, ++ TCP_SYN_SENT, ++ TCP_SYN_RECV, ++ TCP_FIN_WAIT1, ++ TCP_FIN_WAIT2, ++ TCP_TIME_WAIT, ++ TCP_CLOSE, ++ TCP_CLOSE_WAIT, ++ TCP_LAST_ACK, ++ TCP_LISTEN, ++ TCP_CLOSING /* now a valid state */ ++}; ++ ++# define TCPOPT_EOL 0 ++# define TCPOPT_NOP 1 ++# define TCPOPT_MAXSEG 2 ++# define TCPOLEN_MAXSEG 4 ++# define TCPOPT_WINDOW 3 ++# define TCPOLEN_WINDOW 3 ++# define TCPOPT_SACK_PERMITTED 4 /* Experimental */ ++# define TCPOLEN_SACK_PERMITTED 2 ++# define TCPOPT_SACK 5 /* Experimental */ ++# define TCPOPT_TIMESTAMP 8 ++# define TCPOLEN_TIMESTAMP 10 ++# define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ ++# define TCPOPT_TSTAMP_HDR \ ++ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) ++#define TCPOPT_CC 11 /* CC options: RFC-1644 */ ++#define TCPOPT_CCNEW 12 ++#define TCPOPT_CCECHO 13 ++#define TCPOLEN_CC 6 ++#define TCPOLEN_CC_APPA (TCPOLEN_CC+2) ++#define TCPOPT_CC_HDR(ccopt) \ ++ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC) ++ ++/* ++ * Default maximum segment size for TCP. ++ * With an IP MSS of 576, this is 536, ++ * but 512 is probably more convenient. ++ * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)). ++ */ ++# define TCP_MSS 512 ++ ++/* ++ * Default maximum segment size for TCP6. ++ * With an IP MSS of 1280, this is 1220, ++ * but 1024 is probably more convenient. ++ * This should be defined as MIN(1024, IP6_MSS - sizeof (struct tcpip6hdr)). ++ */ ++# define TCP6_MSS 1024 ++ ++# define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ ++# define TTCP_CLIENT_SND_WND 4096 /* default send window for T/TCP client */ ++ ++# define TCP_MAX_WINSHIFT 14 /* maximum window shift */ ++ ++#define TCP_MAXBURST 4 /* maximum segments in a burst */ ++ ++#define TCP_MAXHLEN (0xf<<2) /* max length of header in bytes */ ++#define TCP_MAXOLEN (TCP_MAXHLEN - sizeof (struct tcphdr)) ++ /* max space left for options */ ++ ++# define SOL_TCP 6 /* TCP level */ ++ ++ ++# define TCPI_OPT_TIMESTAMPS 1 ++# define TCPI_OPT_SACK 2 ++# define TCPI_OPT_WSCALE 4 ++# define TCPI_OPT_ECN 8 ++ ++/* Values for tcpi_state. */ ++enum tcp_ca_state ++{ ++ TCP_CA_Open = 0, ++ TCP_CA_Disorder = 1, ++ TCP_CA_CWR = 2, ++ TCP_CA_Recovery = 3, ++ TCP_CA_Loss = 4 ++}; ++ ++struct tcp_info ++{ ++ u_int8_t tcpi_state; ++ u_int8_t tcpi_ca_state; ++ u_int8_t tcpi_retransmits; ++ u_int8_t tcpi_probes; ++ u_int8_t tcpi_backoff; ++ u_int8_t tcpi_options; ++ u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; ++ ++ u_int32_t tcpi_rto; ++ u_int32_t tcpi_ato; ++ u_int32_t tcpi_snd_mss; ++ u_int32_t tcpi_rcv_mss; ++ ++ u_int32_t tcpi_unacked; ++ u_int32_t tcpi_sacked; ++ u_int32_t tcpi_lost; ++ u_int32_t tcpi_retrans; ++ u_int32_t tcpi_fackets; ++ ++ /* Times. */ ++ u_int32_t tcpi_last_data_sent; ++ u_int32_t tcpi_last_ack_sent; /* Not remembered, sorry. */ ++ u_int32_t tcpi_last_data_recv; ++ u_int32_t tcpi_last_ack_recv; ++ ++ /* Metrics. */ ++ u_int32_t tcpi_pmtu; ++ u_int32_t tcpi_rcv_ssthresh; ++ u_int32_t tcpi_rtt; ++ u_int32_t tcpi_rttvar; ++ u_int32_t tcpi_snd_ssthresh; ++ u_int32_t tcpi_snd_cwnd; ++ u_int32_t tcpi_advmss; ++ u_int32_t tcpi_reordering; ++}; ++ ++#endif /* Misc. */ ++ ++#endif /* netinet/tcp.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nfs/nfs.h +@@ -0,0 +1,3 @@ ++#include ++#include ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/not-cancel.h +@@ -0,0 +1,91 @@ ++/* Uncancelable versions of cancelable interfaces. kFreeBSD version. ++ Copyright (C) 2003, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 2003. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Uncancelable open. */ ++#define open_not_cancel(name, flags, mode) \ ++ INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode)) ++#define open_not_cancel_2(name, flags) \ ++ INLINE_SYSCALL (open, 2, (const char *) (name), (flags)) ++ ++/* Uncancelable openat. */ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++extern int __openat_nocancel (int fd, const char *fname, int oflag, ++ mode_t mode) attribute_hidden; ++extern int __openat64_nocancel (int fd, const char *fname, int oflag, ++ mode_t mode) attribute_hidden; ++#else ++# define __openat_nocancel(fd, fname, oflag, mode) \ ++ openat (fd, fname, oflag, mode) ++# define __openat64_nocancel(fd, fname, oflag, mode) \ ++ openat64 (fd, fname, oflag, mode) ++#endif ++ ++#define openat_not_cancel(fd, fname, oflag, mode) \ ++ __openat_nocancel (fd, fname, oflag, mode) ++#define openat_not_cancel_3(fd, fname, oflag) \ ++ __openat_nocancel (fd, fname, oflag, 0) ++#define openat64_not_cancel(fd, fname, oflag, mode) \ ++ __openat64_nocancel (fd, fname, oflag, mode) ++#define openat64_not_cancel_3(fd, fname, oflag) \ ++ __openat64_nocancel (fd, fname, oflag, 0) ++ ++/* Uncancelable close. */ ++#define close_not_cancel(fd) \ ++ INLINE_SYSCALL (close, 1, fd) ++ ++#define close_not_cancel_no_status(fd) \ ++ (void) ({ INTERNAL_SYSCALL_DECL (err); \ ++ INTERNAL_SYSCALL (close, err, 1, (fd)); }) ++ ++/* Uncancelable read. */ ++#define read_not_cancel(fd, buf, n) \ ++ INLINE_SYSCALL (read, 3, (fd), (buf), (n)) ++ ++/* Uncancelable write. */ ++#define write_not_cancel(fd, buf, n) \ ++ INLINE_SYSCALL (write, 3, (fd), (buf), (n)) ++ ++/* Uncancelable writev. */ ++#define writev_not_cancel_no_status(fd, iov, n) \ ++ (void) ({ INTERNAL_SYSCALL_DECL (err); \ ++ INTERNAL_SYSCALL (writev, err, 3, (fd), (iov), (n)); }) ++ ++/* Uncancelable fcntl. */ ++#define fcntl_not_cancel(fd, cmd, val) \ ++ __fcntl_nocancel (fd, cmd, val) ++ ++/* Uncancelable waitpid. */ ++# define waitpid_not_cancel(pid, stat_loc, options) \ ++ INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL) ++ ++/* Uncancelable pause. */ ++# define pause_not_cancel() \ ++ __pause_nocancel () ++ ++/* Uncancelable nanosleep. */ ++# define nanosleep_not_cancel(requested_time, remaining) \ ++ INLINE_SYSCALL (nanosleep, 2, requested_time, remaining) ++ ++/* Uncancelable sigsuspend. */ ++#define sigsuspend_not_cancel(set) \ ++ INLINE_SYSCALL (sigsuspend, 1, set) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nptl/Implies +@@ -0,0 +1 @@ ++pthread +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nptl/bits/local_lim.h +@@ -0,0 +1,48 @@ ++/* Minimum guaranteed maximum values for system limits. FreeBSD version. ++ Copyright (C) 1993-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The number of data keys per process. */ ++#define _POSIX_THREAD_KEYS_MAX 128 ++/* This is the value this implementation supports. */ ++#define PTHREAD_KEYS_MAX 1024 ++ ++/* Controlling the iterations of destructors for thread-specific data. */ ++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 ++/* Number of iterations this implementation does. */ ++#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS ++ ++/* The number of threads per process. */ ++#define _POSIX_THREAD_THREADS_MAX 64 ++/* This is the value this implementation supports. */ ++#define PTHREAD_THREADS_MAX 1024 ++ ++/* Maximum amount by which a process can descrease its asynchronous I/O ++ priority level. */ ++#define AIO_PRIO_DELTA_MAX 20 ++ ++/* Minimum size for a thread. We are free to choose a reasonable value. */ ++#define PTHREAD_STACK_MIN 16384 ++ ++/* Maximum number of POSIX timers available. */ ++#define TIMER_MAX 256 ++ ++/* Maximum number of timer expiration overruns. */ ++#define DELAYTIMER_MAX 2147483647 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/nptl/bits/posix_opt.h +@@ -0,0 +1,190 @@ ++/* Define POSIX options for FreeBSD. ++ Copyright (C) 1996-1997, 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Never include this file directly; use instead. ++ */ ++ ++#ifndef _BITS_POSIX_OPT_H ++#define _BITS_POSIX_OPT_H 1 ++ ++/* Job control is supported. */ ++#define _POSIX_JOB_CONTROL 1 ++ ++/* Processes have a saved set-user-ID and a saved set-group-ID. */ ++#define _POSIX_SAVED_IDS 1 ++ ++/* Priority scheduling is supported. */ ++#define _POSIX_PRIORITY_SCHEDULING 200809L ++ ++/* Synchronizing file data is supported. */ ++#define _POSIX_SYNCHRONIZED_IO 200809L ++ ++/* The fsync function is present. */ ++#define _POSIX_FSYNC 200809L ++ ++/* Mapping of files to memory is supported. */ ++#define _POSIX_MAPPED_FILES 200809L ++ ++/* Locking of all memory is supported. */ ++#define _POSIX_MEMLOCK 200809L ++ ++/* Locking of ranges of memory is supported. */ ++#define _POSIX_MEMLOCK_RANGE 200809L ++ ++/* Setting of memory protections is supported. */ ++#define _POSIX_MEMORY_PROTECTION 200809L ++ ++/* Only root can change owner of file. */ ++#define _POSIX_CHOWN_RESTRICTED 1 ++ ++/* `c_cc' member of 'struct termios' structure can be disabled by ++ using the value _POSIX_VDISABLE. */ ++#define _POSIX_VDISABLE ((unsigned char)'\377') ++ ++/* Filenames are not silently truncated. */ ++#define _POSIX_NO_TRUNC 1 ++/* X/Open realtime support is only partially available. */ ++#define _XOPEN_REALTIME -1 ++ ++/* X/Open realtime thread support is only partially available. */ ++#define _XOPEN_REALTIME_THREADS -1 ++ ++/* Implementation supports `poll' function. */ ++#define _POSIX_POLL 1 ++ ++/* Implementation supports `select' and `pselect' functions. */ ++#define _POSIX_SELECT 1 ++ ++/* XPG4.2 shared memory is supported. */ ++#define _XOPEN_SHM 1 ++ ++/* Tell we have POSIX threads. */ ++#define _POSIX_THREADS 200809L ++ ++/* We have the reentrant functions described in POSIX. */ ++#define _POSIX_REENTRANT_FUNCTIONS 1 ++#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L ++ ++/* We provide priority scheduling for threads. */ ++#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L ++ ++/* We support user-defined stack sizes. */ ++#define _POSIX_THREAD_ATTR_STACKSIZE 200809L ++ ++/* We support user-defined stacks. */ ++#define _POSIX_THREAD_ATTR_STACKADDR 200809L ++ ++/* We support POSIX.1b semaphores, but only the non-shared form for now. */ ++#define _POSIX_SEMAPHORES 200809L ++ ++/* Real-time signals are not available. */ ++#define _POSIX_REALTIME_SIGNALS -1 ++ ++/* We support asynchronous I/O. */ ++#define _POSIX_ASYNCHRONOUS_IO 200809L ++#define _POSIX_ASYNC_IO 1 ++/* Alternative name for Unix98. */ ++#define _LFS_ASYNCHRONOUS_IO 1 ++/* Support for prioritization is not available. */ ++#define _POSIX_PRIORITIZED_IO -1 ++ ++/* The LFS support in asynchronous I/O is also available. */ ++#define _LFS64_ASYNCHRONOUS_IO 1 ++ ++/* The rest of the LFS is also available. */ ++#define _LFS_LARGEFILE 1 ++#define _LFS64_LARGEFILE 1 ++#define _LFS64_STDIO 1 ++ ++/* POSIX shared memory objects are implemented. */ ++#define _POSIX_SHARED_MEMORY_OBJECTS 200809L ++ ++/* CPU-time clocks somewhere supported. */ ++#define _POSIX_CPUTIME 0 ++ ++/* We support somewhere the clock also in threads. */ ++#define _POSIX_THREAD_CPUTIME 0 ++ ++/* GNU libc provides regular expression handling. */ ++#define _POSIX_REGEXP 1 ++ ++/* Reader/Writer locks are available. */ ++#define _POSIX_READER_WRITER_LOCKS 200809L ++ ++/* We have a POSIX shell. */ ++#define _POSIX_SHELL 1 ++ ++/* We support the Timeouts option. */ ++#define _POSIX_TIMEOUTS 200809L ++ ++/* We support spinlocks. */ ++#define _POSIX_SPIN_LOCKS 200809L ++ ++/* The `spawn' function family is supported. */ ++#define _POSIX_SPAWN 200809L ++ ++/* We have POSIX timers. */ ++#define _POSIX_TIMERS 200809L ++ ++/* The barrier functions are available. */ ++#define _POSIX_BARRIERS 200809L ++ ++/* POSIX message queues are not available. */ ++#define _POSIX_MESSAGE_PASSING -1 ++ ++/* Thread process-shared synchronization is not supported. */ ++#define _POSIX_THREAD_PROCESS_SHARED -1 ++ ++/* The monotonic clock is available. */ ++#define _POSIX_MONOTONIC_CLOCK 200809L ++ ++/* The clock selection interfaces are not available. */ ++#define _POSIX_CLOCK_SELECTION -1 ++ ++/* Advisory information interfaces are not available. */ ++#define _POSIX_ADVISORY_INFO -1 ++ ++/* IPv6 support is available. */ ++#define _POSIX_IPV6 200809L ++ ++/* Raw socket support is available. */ ++#define _POSIX_RAW_SOCKETS 200809L ++ ++/* We have at least one terminal. */ ++#define _POSIX2_CHAR_TERM 200809L ++ ++/* Neither process nor thread sporadic server interfaces is available. */ ++#define _POSIX_SPORADIC_SERVER -1 ++#define _POSIX_THREAD_SPORADIC_SERVER -1 ++ ++/* trace.h is not available. */ ++#define _POSIX_TRACE -1 ++#define _POSIX_TRACE_EVENT_FILTER -1 ++#define _POSIX_TRACE_INHERIT -1 ++#define _POSIX_TRACE_LOG -1 ++ ++/* Typed memory objects are not available. */ ++#define _POSIX_TYPED_MEMORY_OBJECTS -1 ++ ++/* No support for priority inheritance or protection. */ ++#define _POSIX_THREAD_PRIO_INHERIT -1 ++#define _POSIX_THREAD_PRIO_PROTECT -1 ++ ++#endif /* bits/posix_opt.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ntp_gettime.c +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#ifndef ntptimeval ++#define ntptimeval ntptimeval4 ++#endif ++ ++int ++ntp_gettime (struct ntptimeval *ntv) ++{ ++ /* Fetch sysctl value of "kern.ntp_pll.gettime". */ ++ /* The 'struct ntptimeval' has grown in size. */ ++ union ++ { ++ struct ntptimeval3 tv3; ++ struct ntptimeval4 tv4; ++ } tv; ++ size_t size = sizeof (tv); ++ int request[2] = { CTL_KERN, KERN_NTP_PLL }; ++ ++ if (__sysctl (request, 2, &tv, &size, NULL, 0) >= 0) ++ { ++ if (size == sizeof (struct ntptimeval3)) ++ { ++ if (ntv) ++ { ++ ntv->time = tv.tv3.time; ++ ntv->maxerror = tv.tv3.maxerror; ++ ntv->esterror = tv.tv3.esterror; ++ ntv->tai = 0; ++ ntv->time_state = tv.tv3.time_state; ++ } ++ return tv.tv3.time_state; ++ } ++ if (size == sizeof (struct ntptimeval4)) ++ { ++ if (ntv) ++ *ntv = tv.tv4; ++ return tv.tv4.time_state; ++ } ++ } ++ return TIME_ERROR; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/open.c +@@ -0,0 +1,63 @@ ++/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int ++__libc_open (const char *file, int oflag, ...) ++{ ++ int mode = 0; ++ int fd; ++ ++ if (oflag & O_CREAT) ++ { ++ va_list arg; ++ va_start (arg, oflag); ++ mode = va_arg (arg, int); ++ va_end (arg); ++ } ++ ++ if (SINGLE_THREAD_P) ++ { ++ fd = INLINE_SYSCALL (open, 3, file, oflag, mode); ++ } ++ else ++ { ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ fd = INLINE_SYSCALL (open, 3, file, oflag, mode); ++ LIBC_CANCEL_RESET (oldtype); ++ } ++ return fd; ++} ++libc_hidden_def (__libc_open) ++ ++weak_alias (__libc_open, __open) ++libc_hidden_weak (__open) ++ ++weak_alias (__libc_open, open) ++ ++strong_alias (__libc_open, __libc_open64) ++weak_alias (__libc_open64, __open64) ++weak_alias (__libc_open64, open64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/open64.c +@@ -0,0 +1,2 @@ ++/* 'open64' is the same as 'open', because __off64_t == __off_t and ++ O_LARGEFILE == 0. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/open_2.c +@@ -0,0 +1,2 @@ ++#include ++strong_alias (__open_2, __open64_2) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/openat.c +@@ -0,0 +1,189 @@ ++/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_openat (int fd, const char *path, int flag, mode_t mode); ++libc_hidden_proto (__syscall_openat) ++ ++# ifndef __ASSUME_ATFCTS ++int __have_atfcts = 0; ++#endif ++ ++/* Open FILE with access OFLAG. Interpret relative paths relative to ++ the directory associated with FD. If OFLAG includes O_CREAT, a ++ third argument is the file protection. */ ++int ++__openat_nocancel (fd, file, oflag, mode) ++ int fd; ++ const char *file; ++ int oflag; ++ mode_t mode; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (openat, 4, fd, file, oflag, mode); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ } ++ return INLINE_SYSCALL (open, 3, file, oflag, mode); ++#endif ++} ++ ++strong_alias (__openat_nocancel, __openat64_nocancel) ++ ++/* Open FILE with access OFLAG. Interpret relative paths relative to ++ the directory associated with FD. If OFLAG includes O_CREAT, a ++ third argument is the file protection. */ ++int ++__openat (fd, file, oflag) ++ int fd; ++ const char *file; ++ int oflag; ++{ ++ int mode = 0; ++ int result; ++ ++ if (oflag & O_CREAT) ++ { ++ va_list arg; ++ va_start (arg, oflag); ++ mode = va_arg (arg, int); ++ va_end (arg); ++ } ++ ++ if (SINGLE_THREAD_P) ++ return __openat_nocancel(fd, file, oflag, mode); ++ else ++ { ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ result = __openat_nocancel(fd, file, oflag, mode); ++ LIBC_CANCEL_RESET (oldtype); ++ } ++ return result; ++} ++ ++libc_hidden_def (__openat) ++weak_alias (__openat, openat) ++ ++/* 'openat64' is the same as 'openat', because __off64_t == __off_t. */ ++strong_alias (__openat, __openat64) ++libc_hidden_def (__openat64) ++weak_alias (__openat64, openat64) ++ ++int ++__openat_2 (fd, file, oflag) ++ int fd; ++ const char *file; ++ int oflag; ++{ ++ if (oflag & O_CREAT) ++ __fortify_fail ("invalid openat call: O_CREAT without mode"); ++ ++ return __openat (fd, file, oflag); ++} ++ ++strong_alias (__openat_2, __openat64_2) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/openat64.c +@@ -0,0 +1,2 @@ ++/* 'openat64' is the same as 'openat', because __off64_t == __off_t and ++ O_LARGEFILE == 0. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/paths.h +@@ -0,0 +1,74 @@ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)paths.h 8.1 (Berkeley) 6/2/93 ++ */ ++ ++#ifndef _PATHS_H_ ++#define _PATHS_H_ ++ ++/* Default search path. */ ++#define _PATH_DEFPATH "/usr/bin:/bin" ++/* All standard utilities path. */ ++#define _PATH_STDPATH \ ++ "/usr/bin:/bin:/usr/sbin:/sbin" ++ ++#define _PATH_BSHELL "/bin/sh" ++#define _PATH_CONSOLE "/dev/console" ++#define _PATH_CSHELL "/bin/csh" ++#define _PATH_DEVDB "/var/run/dev.db" ++#define _PATH_DEVNULL "/dev/null" ++#define _PATH_DRUM "/dev/drum" ++#define _PATH_KLOG "/dev/klog" ++#define _PATH_KMEM "/dev/kmem" ++#define _PATH_LASTLOG "/var/log/lastlog" ++#define _PATH_MAILDIR "/var/mail" ++#define _PATH_MAN "/usr/share/man" ++#define _PATH_MEM "/dev/mem" ++#define _PATH_MNTTAB "/etc/fstab" ++#define _PATH_MOUNTED "/etc/mtab" ++#define _PATH_NOLOGIN "/etc/nologin" ++#define _PATH_PRESERVE "/var/lib" ++#define _PATH_RWHODIR "/var/spool/rwho" ++#define _PATH_SENDMAIL "/usr/sbin/sendmail" ++#define _PATH_SHADOW "/etc/shadow" ++#define _PATH_SHELLS "/etc/shells" ++#define _PATH_TTY "/dev/tty" ++#define _PATH_UNIX "/kernel" ++#define _PATH_UTMP "/var/run/utmp" ++#define _PATH_VI "/usr/bin/vi" ++#define _PATH_WTMP "/var/log/wtmp" ++ ++/* Provide trailing slash, since mostly used for building pathnames. */ ++#define _PATH_DEV "/dev/" ++#define _PATH_TMP "/tmp/" ++#define _PATH_VARDB "/var/lib/misc/" ++#define _PATH_VARRUN "/var/run/" ++#define _PATH_VARTMP "/var/tmp/" ++ ++#endif /* !_PATHS_H_ */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/powerpc/bits/elf.h +@@ -0,0 +1,39 @@ ++/* This file defines standard ELF types, structures, and macros. ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_ELF_H ++#define _BITS_ELF_H ++ ++__BEGIN_DECLS ++ ++#define AT_DCACHEBSIZE 10 /* Data cache block size for the processor. */ ++#define AT_ICACHEBSIZE 11 /* Instruction cache block size for the uP. */ ++#define AT_UCACHEBSIZE 12 /* Cache block size, or `0' if cache not unified. */ ++#define AT_EXECPATH 13 /* Path to the executable. */ ++#define AT_CANARY 14 /* Canary for SSP */ ++#define AT_CANARYLEN 15 /* Length of the canary. */ ++#define AT_OSRELDATE 16 /* OSRELDATE. */ ++#define AT_NCPUS 17 /* Number of CPUs. */ ++#define AT_PAGESIZES 18 /* Pagesizes. */ ++#define AT_PAGESIZESLEN 19 /* Number of pagesizes. */ ++#define AT_STACKPROT 21 /* Initial stack protection. */ ++ ++__END_DECLS ++ ++#endif /* elf.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pread.c +@@ -0,0 +1,69 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++extern ssize_t __syscall_pread (int __fd, void *__buf, size_t __nbytes, ++ __off_t __offset) __THROW; ++libc_hidden_proto(__syscall_pread) ++extern ssize_t __syscall_freebsd6_pread (int __fd, void *__buf, size_t __nbytes, ++ int __unused1, __off_t __offset) __THROW; ++libc_hidden_proto(__syscall_freebsd6_pread) ++ ++ssize_t ++__libc_pread (int fd, void *buf, size_t nbytes, __off_t offset) ++{ ++ ssize_t result; ++ ++ if (SINGLE_THREAD_P) ++ { ++ ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (pread, 4, fd, buf, nbytes, offset); ++#ifndef __ASSUME_PREAD_PWRITE_SYSCALLS ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_pread, 5, fd, buf, nbytes, 0, offset); ++#endif ++ return result; ++ } ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (pread, 4, fd, buf, nbytes, offset); ++#ifndef __ASSUME_PREAD_PWRITE_SYSCALLS ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_pread, 5, fd, buf, nbytes, 0, offset); ++#endif ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++strong_alias (__libc_pread, __pread) ++weak_alias (__pread, pread) ++ ++/* 'pread64' is the same as 'pread', because __off64_t == __off_t. */ ++strong_alias (__libc_pread, __libc_pread64) ++weak_alias (__libc_pread64, __pread64) ++weak_alias (__libc_pread64, pread64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pread64.c +@@ -0,0 +1 @@ ++/* 'pread64' is the same as 'pread', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/preadv64.c +@@ -0,0 +1 @@ ++/* 'preadv64' is the same as 'preadv', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/prof-freq.c +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++struct clockinfo ++{ ++ int hz; /* Clock frequency. */ ++ int tick; /* Microseconds per hz tick, = 1000000 / hz. */ ++ int tickadj; /* Clock skew rate for adjtime(). */ ++ int stathz; /* Statistics clock frequency. */ ++ int profhz; /* Profiling clock frequency. */ ++}; ++ ++int ++__profile_frequency (void) ++{ ++ /* Fetch the "kern.clockrate" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_CLOCKRATE }; ++ struct clockinfo result; ++ size_t result_len = sizeof (result); ++ ++ if (__sysctl (request, 2, &result, &result_len, NULL, 0) < 0) ++ /* Dummy result. */ ++ return 1; ++ ++ /* Yes, hz, not profhz. On i386, the value is 100, not 1024. */ ++ return result.hz; ++} ++libc_hidden_def (__profile_frequency) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pselect.c +@@ -0,0 +1,72 @@ ++/* Copyright (C) 2006, 2007, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++#ifndef __ASSUME_PSELECT ++static int __generic_pselect (int nfds, fd_set *readfds, fd_set *writefds, ++ fd_set *exceptfds, ++ const struct timespec *timeout, ++ const sigset_t *sigmask); ++#endif ++ ++extern int __syscall_pselect (int nfds, fd_set *readfds, fd_set *writefds, ++ fd_set *exceptfds, ++ const struct timespec *timeout, ++ const sigset_t *sigmask) __THROW; ++ ++int ++__pselect (int nfds, fd_set *readfds, fd_set *writefds, ++ fd_set *exceptfds, ++ const struct timespec *timeout, ++ const sigset_t *sigmask) ++{ ++ int result; ++ ++ if (SINGLE_THREAD_P) ++ result = INLINE_SYSCALL (pselect, 6, nfds, readfds, writefds, exceptfds, ++ timeout, sigmask); ++ else ++ { ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ result = INLINE_SYSCALL (pselect, 6, nfds, readfds, writefds, exceptfds, ++ timeout, sigmask); ++ LIBC_CANCEL_RESET (oldtype); ++ } ++ ++#ifndef __ASSUME_PSELECT ++ if (result == -1 && errno == ENOSYS) ++ return __generic_pselect (nfds, readfds, writefds, exceptfds, ++ timeout, sigmask); ++#endif ++ ++ return result; ++} ++weak_alias (__pselect, pselect) ++strong_alias (__pselect, __libc_pselect) ++ ++#ifndef __ASSUME_PSELECT ++# define __pselect static __generic_pselect ++# include ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ptsname.c +@@ -0,0 +1,111 @@ ++/* Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* Static buffer for `ptsname'. */ ++static char buffer[sizeof (_PATH_TTY) + 2]; ++ ++ ++/* Return the pathname of the pseudo terminal slave associated with ++ the master FD is open on, or NULL on errors. ++ The returned storage is good until the next call to this function. */ ++char * ++ptsname (int fd) ++{ ++ return __ptsname_r (fd, buffer, sizeof (buffer)) != 0 ? NULL : buffer; ++} ++ ++/* The are declared in getpt.c. */ ++extern const char __libc_ptyname1[] attribute_hidden; ++extern const char __libc_ptyname2[] attribute_hidden; ++ ++ ++int ++__ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp) ++{ ++ int saved_errno = errno; ++ char *p; ++ ++ if (buf == NULL) ++ { ++ __set_errno (EINVAL); ++ return EINVAL; ++ } ++ ++ /* Don't call isatty (fd) - it usually fails with errno = EAGAIN. */ ++ ++ if (__fxstat64 (_STAT_VER, fd, stp) < 0) ++ return errno; ++ ++ /* Check if FD really is a master pseudo terminal. */ ++ if (!(S_ISCHR (stp->st_mode))) ++ { ++ __set_errno (ENOTTY); ++ return ENOTTY; ++ } ++ ++ if (buflen < sizeof (_PATH_TTY) + 2) ++ { ++ __set_errno (ERANGE); ++ return ERANGE; ++ } ++ ++ /* Construct the slave's pathname. */ ++ /* instead of strlen(_PATH_DEV) we use (sizeof (_PATH_DEV) - 1) */ ++ p = __mempcpy (buf, _PATH_DEV, sizeof (_PATH_DEV) - 1); ++ buflen -= (sizeof (_PATH_DEV) - 1); ++ if(__sysctlbyname("kern.devname", p, &buflen, &stp->st_rdev, sizeof (stp->st_rdev)) < 0) ++ return errno; ++ p[0] = 't'; ++ ++ if (__xstat64 (_STAT_VER, buf, stp) < 0) ++ return errno; ++ ++ /* Check if the pathname we're about to return might be ++ slave pseudo terminal of the given master pseudo terminal. */ ++ if (!(S_ISCHR (stp->st_mode))) ++ { ++ /* This really is a configuration problem. */ ++ __set_errno (ENOTTY); ++ return ENOTTY; ++ } ++ ++ __set_errno (saved_errno); ++ return 0; ++} ++ ++ ++/* Store at most BUFLEN characters of the pathname of the slave pseudo ++ terminal associated with the master FD is open on in BUF. ++ Return 0 on success, otherwise an error number. */ ++int ++__ptsname_r (int fd, char *buf, size_t buflen) ++{ ++ struct stat64 st; ++ return __ptsname_internal (fd, buf, buflen, &st); ++} ++weak_alias (__ptsname_r, ptsname_r) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite.c +@@ -0,0 +1,68 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++extern ssize_t __syscall_pwrite (int __fd, const void *__buf, size_t __nbytes, ++ __off_t __offset) __THROW; ++libc_hidden_proto(__syscall_pwrite) ++extern ssize_t __syscall_freebsd6_pwrite (int __fd, const void *__buf, size_t __nbytes, ++ int __unused1, __off_t __offset) __THROW; ++libc_hidden_proto(__syscall_freebsd6_pwrite) ++ ++ssize_t ++__libc_pwrite (int fd, const void *buf, size_t nbytes, __off_t offset) ++{ ++ ssize_t result; ++ ++ if (SINGLE_THREAD_P) ++ { ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (pwrite, 4, fd, buf, nbytes, offset); ++#ifndef __ASSUME_PREAD_PWRITE_SYSCALLS ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_pwrite, 5, fd, buf, nbytes, 0, offset); ++#endif ++ return result; ++ } ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (pwrite, 4, fd, buf, nbytes, offset); ++#ifndef __ASSUME_PREAD_PWRITE_SYSCALLS ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_pwrite, 5, fd, buf, nbytes, 0, offset); ++#endif ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++strong_alias (__libc_pwrite, __pwrite) ++weak_alias (__pwrite, pwrite) ++ ++/* 'pwrite64' is the same as 'pwrite', because __off64_t == __off_t. */ ++strong_alias (__libc_pwrite, __libc_pwrite64) ++weak_alias (__libc_pwrite64, __pwrite64) ++weak_alias (__libc_pwrite64, pwrite64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pwrite64.c +@@ -0,0 +1 @@ ++/* 'pwrite64' is the same as 'pwrite', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/pwritev64.c +@@ -0,0 +1 @@ ++/* 'pwritev64' is the same as 'pwritev', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir.c +@@ -0,0 +1,11 @@ ++/* 'readdir64' is the same as 'readdir', because ++ struct dirent64 == struct dirent. */ ++ ++#define readdir64 __no_readdir64_decl ++#define __readdir64 __no___readdir64_decl ++#include ++#undef __readdir64 ++#undef readdir64 ++ ++strong_alias (__readdir, __readdir64) ++weak_alias (__readdir64, readdir64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir64.c +@@ -0,0 +1,2 @@ ++/* 'readdir64' is the same as 'readdir', because ++ struct dirent64 == struct dirent. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir64_r.c +@@ -0,0 +1,2 @@ ++/* 'readdir64_r' is the same as 'readdir_r', because ++ struct dirent64 == struct dirent. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readdir_r.c +@@ -0,0 +1,11 @@ ++/* 'readdir64_r' is the same as 'readdir_r', because ++ struct dirent64 == struct dirent. */ ++ ++#define readdir64_r __no_readdir64_r_decl ++#define __readdir64_r __no___readdir64_r_decl ++#include ++#undef __readdir64_r ++#undef readdir64_r ++ ++strong_alias (__readdir_r, __readdir64_r) ++weak_alias (__readdir64_r, readdir64_r) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readlinkat.c +@@ -0,0 +1,130 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_readlinkat (int fd, const char *path, char *buf, ++ size_t bufsize); ++libc_hidden_proto (__syscall_readlinkat) ++ ++/* Read the contents of the symbolic link PATH relative to FD into no ++ more than LEN bytes of BUF. */ ++ssize_t ++readlinkat (fd, path, buf, len) ++ int fd; ++ const char *path; ++ char *buf; ++ size_t len; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (readlinkat, 4, fd, path, buf, len); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (fd != AT_FDCWD && path[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t pathlen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ pathlen = strlen (path); ++ if (__builtin_expect (pathlen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + pathlen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, path); ++ path = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ return __readlink (path, buf, len); ++#endif ++} ++ ++libc_hidden_def (readlinkat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readonly-area.c +@@ -0,0 +1,96 @@ ++/* Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "libio/libioP.h" ++ ++/* Return 1 if the whole area PTR .. PTR+SIZE is not writable. ++ Return -1 if it is writable. */ ++ ++int ++__readonly_area (const char *ptr, size_t size) ++{ ++ const void *ptr_end = ptr + size; ++ ++ int mib[4]; ++ size_t kve_len = 0; ++ char *kve_buf, *kve_bufp; ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_VMMAP; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kve_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return 1; ++ } ++ ++ kve_buf = alloca (kve_len); ++ if (__sysctl (mib, 4, kve_buf, &kve_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return 1; ++ } ++ ++ kve_bufp = kve_buf; ++ while (kve_bufp < kve_buf + kve_len) ++ { ++ struct kinfo_vmentry *kve = (struct kinfo_vmentry *) (uintptr_t) kve_bufp; ++ kve_bufp += kve->kve_structsize; ++ ++ uintptr_t from = kve->kve_start; ++ uintptr_t to = kve->kve_end; ++ ++ if (from < (uintptr_t) ptr_end && to > (uintptr_t) ptr) ++ { ++ /* Found an entry that at least partially covers the area. */ ++ if (!(kve->kve_protection & KVME_PROT_READ) ++ || (kve->kve_protection & KVME_PROT_WRITE)) ++ break; ++ ++ if (from <= (uintptr_t) ptr && to >= (uintptr_t) ptr_end) ++ { ++ size = 0; ++ break; ++ } ++ else if (from <= (uintptr_t) ptr) ++ size -= to - (uintptr_t) ptr; ++ else if (to >= (uintptr_t) ptr_end) ++ size -= (uintptr_t) ptr_end - from; ++ else ++ size -= to - from; ++ ++ if (!size) ++ break; ++ } ++ } ++ ++ /* If the whole area between ptr and ptr_end is covered by read-only ++ VMAs, return 1. Otherwise return -1. */ ++ return size == 0 ? 1 : -1; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/readv.c +@@ -0,0 +1,57 @@ ++/* readv for FreeBSD. ++ Copyright (C) 1997-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++extern ssize_t __syscall_readv (int, __const struct iovec *__unbounded, int); ++libc_hidden_proto(__syscall_readv) ++ ++static ssize_t __atomic_readv_replacement (int, __const struct iovec *, ++ int) internal_function; ++ ++ssize_t ++__libc_readv (int fd, const struct iovec *vector, int count) ++{ ++ if (count <= UIO_MAXIOV) ++ { ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ssize_t result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++ ++ } ++ else ++ return __atomic_readv_replacement (fd, vector, count); ++} ++strong_alias (__libc_readv, __readv) ++weak_alias (__libc_readv, readv) ++ ++#define __libc_readv static internal_function __atomic_readv_replacement ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/recv.c +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* The real syscall's name. See sysdeps/unix/inet/syscalls.list. */ ++#define __syscall_recvfrom __libc_recvfrom ++ssize_t __libc_recvfrom(int s, void *buf, size_t len, int flags, ++ struct sockaddr *from, socklen_t *fromlen); ++libc_hidden_proto (__libc_recvfrom) ++ ++/* Read N bytes into BUF from socket FD. ++ Return the number of bytes read or -1 for error. */ ++ ++ssize_t ++__libc_recv (int fd, void *buf, size_t n, int flags) ++{ ++ return INLINE_SYSCALL (recvfrom, 6, fd, buf, n, flags, NULL, NULL); ++} ++ ++weak_alias (__libc_recv, __recv) ++weak_alias (__libc_recv, recv) ++ ++LIBC_CANCEL_HANDLED (); /* in __libc_recvfrom */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/remove.c +@@ -0,0 +1,40 @@ ++/* ANSI C `remove' function to delete a file or directory. POSIX.1 version. ++ Copyright (C) 1995,96,97,2002,2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++int ++remove (file) ++ const char *file; ++{ ++ /* First try to unlink since this is more frequently the necessary action. */ ++ if (__unlink (file) != 0 ++ /* If it is indeed a directory... */ ++ /* Linux returns EISDIR, POSIX mandates EPERM */ ++ && (((errno != EISDIR) && (errno != EPERM)) ++ /* ...try to remove it. */ ++ || __rmdir (file) != 0)) ++ /* Cannot remove the object for whatever reason. */ ++ return -1; ++ ++ return 0; ++} ++libc_hidden_def (remove) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/renameat.c +@@ -0,0 +1,174 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++libc_hidden_proto (rename) ++ ++extern int __syscall_renameat (int oldfd, const char *old, int newfd, ++ const char *new); ++libc_hidden_proto (__syscall_renameat) ++ ++/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD. */ ++int renameat (oldfd, old, newfd, new) ++ int oldfd; ++ const char *old; ++ int newfd; ++ const char *new; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (renameat, 4, oldfd, old, newfd, new); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if ((oldfd != AT_FDCWD && old[0] != '/') ++ || (newfd != AT_FDCWD && new[0] != '/')) ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t old_filelen, new_filelen; ++ ++ if ((oldfd < 0) || (newfd < 0)) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ old_filelen = strlen (old); ++ new_filelen = strlen (new); ++ if (__builtin_expect (old_filelen == 0, 0) ++ || __builtin_expect (new_filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ if (oldfd != AT_FDCWD && old[0] != '/') ++ { ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = ++ (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == oldfd) ++ { ++ char *buf; ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ buf = alloca (strlen (kf->kf_path) + old_filelen + 2); ++ strcpy(buf, kf->kf_path); ++ strcat (buf, "/"); ++ strcat (buf, old); ++ old = buf; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ if (newfd != AT_FDCWD && new[0] != '/') ++ { ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = ++ (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == newfd) ++ { ++ char *buf; ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ buf = alloca (strlen (kf->kf_path) + new_filelen + 2); ++ strcpy(buf, kf->kf_path); ++ strcat (buf, "/"); ++ strcat (buf, new); ++ new = buf; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ } ++ ++#define __rename rename /* there is no __rename */ ++ return __rename (old, new); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/rtld-lowlevel.h +@@ -0,0 +1,131 @@ ++/* Definitions for lowlevel handling in ld.so, FreeBSD variant ++ Copyright (C) 2006-2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _RTLD_LOWLEVEL_H ++#define _RTLD_LOWLEVEL_H 1 ++ ++#include ++#include ++ ++/* Special multi-reader lock used in ld.so. */ ++#define __RTLD_MRLOCK_WRITER 1 ++#define __RTLD_MRLOCK_RWAIT 2 ++#define __RTLD_MRLOCK_WWAIT 4 ++#define __RTLD_MRLOCK_RBITS \ ++ ~(__RTLD_MRLOCK_WRITER | __RTLD_MRLOCK_RWAIT | __RTLD_MRLOCK_WWAIT) ++#define __RTLD_MRLOCK_INC 8 ++#define __RTLD_MRLOCK_TRIES 5 ++ ++#define __rtld_mrlock_define(CLASS,NAME) \ ++ CLASS __rtld_mrlock_t NAME; ++ ++ ++#define _RTLD_MRLOCK_INITIALIZER 0 ++#define __rtld_mrlock_initialize(NAME) \ ++ (void) ((NAME).lv = 0) ++ ++ ++#define __rtld_mrlock_lock(lock) \ ++ do { \ ++ __label__ out; \ ++ while (1) \ ++ { \ ++ int oldval; \ ++ for (int tries = 0; tries < __RTLD_MRLOCK_TRIES; ++tries) \ ++ { \ ++ oldval = (lock).iv; \ ++ while (__builtin_expect ((oldval \ ++ & (__RTLD_MRLOCK_WRITER \ ++ | __RTLD_MRLOCK_WWAIT)) \ ++ == 0, 1)) \ ++ { \ ++ int newval = ((oldval & __RTLD_MRLOCK_RBITS) \ ++ + __RTLD_MRLOCK_INC); \ ++ int ret = atomic_compare_and_exchange_val_acq (&(lock.iv), \ ++ newval, \ ++ oldval); \ ++ if (__builtin_expect (ret == oldval, 1)) \ ++ goto out; \ ++ oldval = ret; \ ++ } \ ++ atomic_delay (); \ ++ } \ ++ if ((oldval & __RTLD_MRLOCK_RWAIT) == 0) \ ++ { \ ++ atomic_or (&(lock.iv), __RTLD_MRLOCK_RWAIT); \ ++ oldval |= __RTLD_MRLOCK_RWAIT; \ ++ } \ ++ lll_futex_wait (&(lock), oldval); \ ++ } \ ++ out:; \ ++ } while (0) ++ ++ ++#define __rtld_mrlock_unlock(lock) \ ++ do { \ ++ int oldval = atomic_exchange_and_add (&(lock.iv), -__RTLD_MRLOCK_INC); \ ++ if (__builtin_expect ((oldval \ ++ & (__RTLD_MRLOCK_RBITS | __RTLD_MRLOCK_WWAIT)) \ ++ == (__RTLD_MRLOCK_INC | __RTLD_MRLOCK_WWAIT), 0)) \ ++ /* We have to wake all threads since there might be some queued \ ++ readers already. */ \ ++ lll_futex_wake (&(lock), 0x7fffffff); \ ++ } while (0) ++ ++ ++/* There can only ever be one thread trying to get the exclusive lock. */ ++#define __rtld_mrlock_change(lock) \ ++ do { \ ++ __label__ out; \ ++ while (1) \ ++ { \ ++ int oldval; \ ++ for (int tries = 0; tries < __RTLD_MRLOCK_TRIES; ++tries) \ ++ { \ ++ oldval = lock.iv; \ ++ while (__builtin_expect ((oldval & __RTLD_MRLOCK_RBITS) == 0, 1)) \ ++ { \ ++ int newval = ((oldval & __RTLD_MRLOCK_RWAIT) \ ++ + __RTLD_MRLOCK_WRITER); \ ++ int ret = atomic_compare_and_exchange_val_acq (&(lock.iv), \ ++ newval, \ ++ oldval); \ ++ if (__builtin_expect (ret == oldval, 1)) \ ++ goto out; \ ++ oldval = ret; \ ++ } \ ++ atomic_delay (); \ ++ } \ ++ atomic_or (&(lock.iv), __RTLD_MRLOCK_WWAIT); \ ++ oldval |= __RTLD_MRLOCK_WWAIT; \ ++ lll_futex_wait (&(lock), oldval); \ ++ } \ ++ out:; \ ++ } while (0) ++ ++ ++#define __rtld_mrlock_done(lock) \ ++ do { \ ++ int oldval = atomic_exchange_and_add (&(lock.iv), -__RTLD_MRLOCK_WRITER); \ ++ if (__builtin_expect ((oldval & __RTLD_MRLOCK_RWAIT) != 0, 0)) \ ++ lll_futex_wake (&(lock), 0x7fffffff); \ ++ } while (0) ++ ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sa_len.c +@@ -0,0 +1,44 @@ ++/* Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include ++#include ++#include ++#include ++ ++int ++__libc_sa_len (sa_family_t af) ++{ ++ switch (af) ++ { ++ case AF_APPLETALK: ++ return sizeof (struct sockaddr_at); ++ case AF_INET: ++ return sizeof (struct sockaddr_in); ++ case AF_INET6: ++ return sizeof (struct sockaddr_in6); ++ case AF_IPX: ++ return sizeof (struct sockaddr_ipx); ++ case AF_LOCAL: ++ return sizeof (struct sockaddr_un); ++ } ++ return 0; ++} ++INTDEF(__libc_sa_len) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sbrk.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sched_getaffinity.c +@@ -0,0 +1,64 @@ ++/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* From */ ++#define CPU_LEVEL_WHICH 3 /* Actual mask/id for which. */ ++#define CPU_WHICH_PID 2 /* Specifies a process id. */ ++ ++extern int __syscall_cpuset_getaffinity(int level, int which, int64_t id, ++ size_t setsize, cpu_set_t *mask); ++libc_hidden_proto(__syscall_cpuset_getaffinity) ++ ++int ++__libc_sched_getaffinity (pid_t pid, size_t cpusetsize, cpu_set_t *cpuset) ++{ ++ int res; ++ ++ if (pid == 0) ++ { ++ pid = __getpid(); ++ } ++ ++ if (cpusetsize > sizeof(cpu_set_t)) ++ { ++ /* Clean the rest of the memory the kernel won't do. */ ++ memset ((char *) cpuset + sizeof(cpu_set_t), '\0', cpusetsize - sizeof(cpu_set_t)); ++ ++ cpusetsize = sizeof(cpu_set_t); ++ } ++ ++ res = INLINE_SYSCALL (cpuset_getaffinity, 5, CPU_LEVEL_WHICH, ++ CPU_WHICH_PID, pid, cpusetsize, cpuset); ++ ++ if (errno == ERANGE) ++ { ++ __set_errno(EINVAL); ++ } ++ ++ return res; ++} ++ ++strong_alias (__libc_sched_getaffinity, __sched_getaffinity) ++weak_alias (__sched_getaffinity, sched_getaffinity) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sched_getp.c +@@ -0,0 +1,45 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++/* Retrieve scheduling parameters for a particular process. */ ++int ++__sched_getparam (pid_t pid, struct sched_param *param) ++{ ++ /* kFreeBSD return bogus values for SYS_sched_param (see PR kern/76485); ++ fortunately the same information can be retrieved through the rtprio() ++ system call. */ ++ struct rtprio rtp; ++ ++ if (__rtprio (RTP_LOOKUP, pid, &rtp) >= 0) ++ { ++ if (RTP_PRIO_IS_REALTIME (rtp.type)) ++ param->sched_priority = RTP_PRIO_MAX - rtp.prio; ++ else ++ param->sched_priority = 0; ++ } ++ ++ return 0; ++} ++ ++weak_alias (__sched_getparam, sched_getparam) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sched_setaffinity.c +@@ -0,0 +1,57 @@ ++/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* From */ ++#define CPU_LEVEL_WHICH 3 /* Actual mask/id for which. */ ++#define CPU_WHICH_PID 2 /* Specifies a process id. */ ++ ++extern int __syscall_cpuset_setaffinity(int level, int which, int64_t id, ++ size_t setsize, const cpu_set_t *mask); ++libc_hidden_proto(__syscall_cpuset_setaffinity) ++ ++int ++__libc_sched_setaffinity (pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset) ++{ ++ int res; ++ ++ if (pid == 0) ++ { ++ pid = __getpid(); ++ } ++ ++ ++ res = INLINE_SYSCALL (cpuset_setaffinity, 5, CPU_LEVEL_WHICH, ++ CPU_WHICH_PID, pid, cpusetsize, cpuset); ++ ++ if (errno == ERANGE || errno == EDEADLK) ++ { ++ __set_errno(EINVAL); ++ } ++ ++ return res; ++} ++ ++strong_alias (__libc_sched_setaffinity, __sched_setaffinity) ++weak_alias (__sched_setaffinity, sched_setaffinity) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/seekdir.c +@@ -0,0 +1,2 @@ ++/* Avoid , which doesn't pass the testsuite. */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/semctl.c +@@ -0,0 +1,89 @@ ++/* Copyright (C) 2004, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/*- ++ * Copyright (c) 2002 Doug Rabson ++ * 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. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 ++#include /* va_list */ ++#include /* NULL */ ++#include ++ ++/* union semun from FreeBSD */ ++/* ++ * semctl's arg parameter structure ++ */ ++union semun ++{ ++ int val; /* value for SETVAL */ ++ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ ++ unsigned short *array; /* array for GETALL & SETALL */ ++}; ++ ++extern int __syscall_semctl (int semid, int semnum, ++ int cmd, union semun *arg); ++libc_hidden_proto (__syscall_semctl) ++ ++int ++semctl (int semid, int semnum, int cmd, ...) ++{ ++ va_list ap; ++ union semun semun; ++ union semun *semun_ptr; ++ ++ va_start (ap, cmd); ++ if (cmd == IPC_SET || cmd == IPC_STAT || cmd == GETALL ++ || cmd == SETVAL || cmd == SETALL) ++ { ++ semun = va_arg (ap, union semun); ++ semun_ptr = &semun; ++ } ++ else ++ { ++ semun_ptr = NULL; ++ } ++ va_end (ap); ++ ++ return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd, semun_ptr); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/send.c +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern ssize_t __syscall_sendto (int fd, __const __ptr_t buf, ++ size_t n, int flags, ++ __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen); ++libc_hidden_proto (__syscall_sendto) ++ ++/* Send N bytes of BUF to socket FD. ++ Return the number of bytes sent or -1. */ ++ ++ssize_t ++__libc_send (int fd, const void *buf, size_t n, int flags) ++{ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, NULL, 0); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ int result = INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, NULL, 0); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++weak_alias (__libc_send, __send) ++libc_hidden_weak (__send) ++ ++weak_alias (__send, send) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sendto.c +@@ -0,0 +1,73 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Aurelien Jarno , 2005. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++/* According to POSIX.1-2004 the len argument specifies the length of ++ the sockaddr structure pointed to by the addrarg argument. However ++ the FreeBSD kernel waits the actual length of the address stored ++ there. The code below emulate this behaviour. */ ++ ++extern int __libc_sa_len (sa_family_t __af); ++extern int __libc_sa_len_internal (sa_family_t __af); ++ ++extern ssize_t __syscall_sendto (int fd, __const void * buf, ++ size_t n, int flags, ++ __CONST_SOCKADDR_ARG addr, ++ socklen_t addrlen); ++libc_hidden_proto (__syscall_sendto) ++ ++/* Send N bytes of BUF on socket FD to peer at address ADDR (which is ++ * ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */ ++ ++ ++ssize_t ++__libc_sendto (int fd, __const void * buf, size_t n, int flags, ++ __CONST_SOCKADDR_ARG addr, socklen_t addrlen) ++{ ++ socklen_t new_addrlen; ++ ++ if (addr.__sockaddr__) ++ { ++#ifndef NOT_IN_libc ++ new_addrlen = INTUSE(__libc_sa_len) ((addr.__sockaddr__)->sa_family); ++#else ++ new_addrlen = __libc_sa_len ((addr.__sockaddr__)->sa_family); ++#endif ++ ++ /* Only allow a smaller size, otherwise it could lead to ++ stack corruption */ ++ if (new_addrlen < addrlen) ++ addrlen = new_addrlen; ++ } ++ ++ /* We pass 6 arguments. */ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, addr.__sockaddr__, addrlen); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ int result = INLINE_SYSCALL (sendto, 6, fd, buf, n, flags, addr.__sockaddr__, addrlen); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++} ++ ++weak_alias (__libc_sendto, __sendto) ++weak_alias (__libc_sendto, sendto) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/setdomain.c +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Set the name of the current domain to NAME, which is LEN bytes long ++ (excluding a possible trailing NUL byte). This call is restricted to ++ the super-user. */ ++ ++int ++setdomainname (const char *name, size_t len) ++{ ++ /* Set the "kern.domainname" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_NISDOMAINNAME }; ++ ++ if (__sysctl (request, 2, NULL, NULL, (void *) name, len) < 0) ++ return -1; ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sethostid.c +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Set the current machine's Internet number to ID. ++ This call is restricted to the super-user. */ ++ ++int ++sethostid (long int id) ++{ ++ /* Set the "kern.hostid" sysctl value. */ ++ int value = id; ++ int request[2] = { CTL_KERN, KERN_HOSTID }; ++ ++ if (__sysctl (request, 2, NULL, NULL, &value, sizeof (value)) < 0) ++ return -1; ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sethostname.c +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Set the name of the current host to NAME, which is LEN bytes long ++ (excluding a possible trailing NUL byte). This call is restricted to ++ the super-user. */ ++ ++int ++sethostname (const char *name, size_t len) ++{ ++ /* Set the "kern.hostname" sysctl value. */ ++ int request[2] = { CTL_KERN, KERN_HOSTNAME }; ++ ++ if (__sysctl (request, 2, NULL, NULL, (void *) name, len) < 0) ++ return -1; ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/setlogin.c +@@ -0,0 +1,34 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Defined in getlogin_r.c. */ ++extern char *__getlogin_cache; ++ ++extern int __syscall_setlogin (const char *__name); ++ ++int ++setlogin (const char *name) ++{ ++ /* FIXME: Not multithread-safe. */ ++ __getlogin_cache = NULL; ++ return INLINE_SYSCALL (setlogin, 1, name); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/setrlimit64.c +@@ -0,0 +1 @@ ++/* 'setrlimit64' is the same as 'setrlimit', because __rlim64_t == __rlim_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/shm_open.c +@@ -0,0 +1,65 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_shm_open (const char *path, int flags, mode_t mode); ++libc_hidden_proto (__syscall_shm_open); ++ ++/* Open shared memory object. */ ++int ++shm_open (const char *name, int oflag, mode_t mode) ++{ ++ /* First try the new syscall. */ ++ int fd = INLINE_SYSCALL (shm_open, 3, name, oflag, mode); ++ ++#ifndef __ASSUME_POSIXSHM_SYSCALL ++ /* New syscall not available, use fallback code. */ ++ if (fd == -1 && errno == ENOSYS) ++ { ++ struct stat stab; ++ ++ if ((oflag & O_ACCMODE) == O_WRONLY) ++ return (EINVAL); ++ ++ fd = __open (name, oflag, mode); ++ if (fd != -1) ++ { ++ if (__fstat (fd, &stab) != 0 || !S_ISREG (stab.st_mode)) ++ { ++ __close (fd); ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if (__fcntl (fd, F_SETFL, (int) FPOSIXSHM) != 0) ++ { ++ __close (fd); ++ return -1; ++ } ++ } ++ } ++#endif ++ ++ return fd; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/shm_unlink.c +@@ -0,0 +1,48 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_shm_unlink (const char *name); ++libc_hidden_proto (__syscall_shm_unlink) ++ ++libc_hidden_proto (__unlink) ++ ++/* Unlink a shared memory object. */ ++int ++shm_unlink (const char *name) ++{ ++ /* First try the new syscall. */ ++ int result = INLINE_SYSCALL (shm_unlink, 1, name); ++ ++#ifndef __ASSUME_POSIXSHM_SYSCALL ++ /* New syscall not available, simply unlink the file. */ ++ if (result == -1 && errno == ENOSYS) ++# ifdef NOT_IN_libc ++ return unlink (name); ++# else ++ return __unlink (name); ++# endif ++#endif ++ ++ return result; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sigaction.c +@@ -0,0 +1,47 @@ ++/* Copyright (C) 1991,1995,1996,1997,2002,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_sigaction (int __sig, const struct sigaction *__act, struct sigaction *__oact) __THROW; ++libc_hidden_proto (__syscall_sigaction) ++ ++int ++__libc_sigaction (sig, act, oact) ++ int sig; ++ const struct sigaction *act; ++ struct sigaction *oact; ++{ ++ if (sig <= 0 || sig >= NSIG) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ return INLINE_SYSCALL (sigaction, 3, sig, act, oact); ++} ++libc_hidden_def (__libc_sigaction) ++ ++#ifndef LIBC_SIGACTION ++weak_alias (__libc_sigaction, __sigaction) ++libc_hidden_weak (__sigaction) ++weak_alias (__libc_sigaction, sigaction) ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sigreturn.c +@@ -0,0 +1,3 @@ ++/* The sigreturn syscall cannot be explicitly called on FreeBSD, only ++ implicitly by returning from a signal handler. */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sigset-cvt-mask.h +@@ -0,0 +1,36 @@ ++/* Convert between lowlevel sigmask and libc representation of sigset_t. ++ FreeBSD version. ++ Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++static inline int __attribute__ ((unused)) ++sigset_set_old_mask (sigset_t *set, int mask) ++{ ++ set->__sigbits[0] = (unsigned int) mask; ++ set->__sigbits[1] = 0; ++ set->__sigbits[2] = 0; ++ set->__sigbits[3] = 0; ++ ++ return 0; ++} ++ ++static inline int __attribute__ ((unused)) ++sigset_get_old_mask (const sigset_t *set) ++{ ++ return (unsigned int) set->__sigbits[0]; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sigstack.c +@@ -0,0 +1,3 @@ ++/* We can reuse the Linux implementation with some tricks. */ ++#define __NR_sigaltstack 1 ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sleep.c +@@ -0,0 +1,44 @@ ++/* Implementation of the POSIX sleep function using nanosleep. ++ Copyright (C) 1996-1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The default implementation of sleep() in sysdeps/posix/sleep.c, based on ++ SIGALRM, does not mix well with threads. Therefore we use the nanosleep() ++ system call. */ ++unsigned int ++__sleep (unsigned int seconds) ++{ ++ struct timespec ts = { tv_sec: seconds, tv_nsec: 0 }; ++ int ret; ++ ++ /* This is not necessary but some buggy programs depend on this. */ ++ if (seconds == 0) ++ return 0; ++ ++ ret = __nanosleep (&ts, &ts); ++ ++ if (ret == 0) ++ return 0; ++ ++ /* Round remaining time. */ ++ return (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L); ++} ++ ++weak_alias (__sleep, sleep) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/stat16conv.c +@@ -0,0 +1,84 @@ ++/* Convert between different 'struct stat' formats. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_fhstat (const fhandle_t *fhp, struct stat16 *buf); ++extern int __syscall_fstat (int, struct stat16 *__unbounded); ++extern int __syscall_lstat (const char *__unbounded, struct stat16 *__unbounded); ++extern int __syscall_stat (const char *__unbounded, struct stat16 *__unbounded); ++libc_hidden_proto (__syscall_fhstat) ++libc_hidden_proto (__syscall_fstat) ++libc_hidden_proto (__syscall_lstat) ++libc_hidden_proto (__syscall_stat) ++ ++/* Convert a 'struct stat16' to 'struct stat'. */ ++static inline void ++stat16_to_stat (const struct stat16 *p16, struct stat *q) ++{ ++ q->st_dev = p16->st_dev; ++ q->st_ino = p16->st_ino; ++ q->st_mode = p16->st_mode; ++ q->__pad_mode = 0; ++ q->st_nlink = p16->st_nlink; ++ q->__pad_nlink = 0; ++ q->st_uid = p16->st_uid; ++ q->st_gid = p16->st_gid; ++ q->st_rdev = p16->st_rdev; ++ q->st_atim = p16->st_atimespec; ++ q->st_mtim = p16->st_mtimespec; ++ q->st_ctim = p16->st_ctimespec; ++ q->st_size = p16->st_size; ++ q->st_blocks = p16->st_blocks; ++ q->st_blksize = p16->st_blksize; ++ q->st_flags = p16->st_flags; ++ q->st_gen = p16->st_gen; ++#if 0 ++ memcpy (q->__unused1, p16->__unused2, sizeof (p16->__unused2)); ++#endif ++} ++ ++/* Convert a 'struct stat16' to 'struct stat64'. */ ++static inline void ++stat16_to_stat64 (const struct stat16 *p16, struct stat64 *q) ++{ ++ q->st_dev = p16->st_dev; ++ q->st_ino = p16->st_ino; ++ q->st_mode = p16->st_mode; ++ q->__pad_mode = 0; ++ q->st_nlink = p16->st_nlink; ++ q->__pad_nlink = 0; ++ q->st_uid = p16->st_uid; ++ q->st_gid = p16->st_gid; ++ q->st_rdev = p16->st_rdev; ++ q->st_atim = p16->st_atimespec; ++ q->st_mtim = p16->st_mtimespec; ++ q->st_ctim = p16->st_ctimespec; ++ q->st_size = p16->st_size; ++ q->st_blocks = p16->st_blocks; ++ q->st_blksize = p16->st_blksize; ++ q->st_flags = p16->st_flags; ++ q->st_gen = p16->st_gen; ++#if 0 ++ memcpy (q->__unused1, p16->__unused2, sizeof (p16->__unused2)); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/statfs.c +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++__statfs (const char *file, struct statfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs'. */ ++ statfs5_to_statfs (&kbuf, buf); ++ ++ return 0; ++} ++libc_hidden_def (__statfs) ++weak_alias (__statfs, statfs) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/statfs64.c +@@ -0,0 +1,37 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++statfs64 (const char *file, struct statfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ statfs5_to_statfs64 (&kbuf, buf); ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/statfsconv.c +@@ -0,0 +1,205 @@ ++/* Convert between different 'struct statfs' and 'struct statvfs' formats. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* ++ * filesystem statistics ++ */ ++ ++#define MFSNAMELEN 16 /* length of type name including null */ ++#define MNAMELEN 88 /* size of on/from name bufs */ ++ ++struct statfs_fbsd5 { ++ uint32_t f_version; /* structure version number */ ++ uint32_t f_type; /* type of filesystem */ ++ uint64_t f_flags; /* copy of mount exported flags */ ++ uint64_t f_bsize; /* filesystem fragment size */ ++ uint64_t f_iosize; /* optimal transfer block size */ ++ uint64_t f_blocks; /* total data blocks in filesystem */ ++ uint64_t f_bfree; /* free blocks in filesystem */ ++ int64_t f_bavail; /* free blocks avail to non-superuser */ ++ uint64_t f_files; /* total file nodes in filesystem */ ++ int64_t f_ffree; /* free nodes avail to non-superuser */ ++ uint64_t f_syncwrites; /* count of sync writes since mount */ ++ uint64_t f_asyncwrites; /* count of async writes since mount */ ++ uint64_t f_syncreads; /* count of sync reads since mount */ ++ uint64_t f_asyncreads; /* count of async reads since mount */ ++ uint64_t f_spare[10]; /* unused spare */ ++ uint32_t f_namemax; /* maximum filename length */ ++ __uid_t f_owner; /* user that mounted the filesystem */ ++ __fsid_t f_fsid; /* filesystem id */ ++ char f_charspare[80]; /* spare string space */ ++ char f_fstypename[MFSNAMELEN]; /* filesystem type name */ ++ char f_mntfromname[MNAMELEN]; /* mounted filesystem */ ++ char f_mntonname[MNAMELEN]; /* directory on which mounted */ ++}; ++ ++extern int __syscall_getfsstat(struct statfs_fbsd5 *buf, long bufsize, int flags); ++extern int __syscall_statfs(const char *path, struct statfs_fbsd5 *buf); ++extern int __syscall_fstatfs(int fd, struct statfs_fbsd5 *buf); ++extern int __syscall_fhstatfs(const struct fhandle *u_fhp, struct statfs_fbsd5 *buf); ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statfs structure. ++ */ ++ ++static inline void ++statfs5_to_statfs(const struct statfs_fbsd5 *pk, struct statfs *p32) ++{ ++ memset(p32, 0, sizeof(*p32)); ++ ++ p32->f_version = pk->f_version; ++ p32->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p32->f_iosize = MIN(pk->f_iosize, ULONG_MAX); ++ ++ p32->f_blocks = MIN(pk->f_blocks, ULONG_MAX); ++ p32->f_bfree = MIN(pk->f_bfree, ULONG_MAX); ++ p32->f_bavail = MIN(pk->f_bavail, ULONG_MAX); ++ p32->f_files = MIN(pk->f_files, ULONG_MAX); ++ p32->f_ffree = MIN(pk->f_ffree, ULONG_MAX); ++ ++ p32->f_fsid = pk->f_fsid; ++ p32->f_owner = pk->f_owner; ++ p32->f_type = pk->f_type; ++ p32->f_flags = pk->f_flags; ++ ++ p32->f_syncwrites = MIN(pk->f_syncwrites, ULONG_MAX); ++ p32->f_asyncwrites = MIN(pk->f_asyncwrites, ULONG_MAX); ++ p32->f_syncreads = MIN(pk->f_syncreads, ULONG_MAX); ++ p32->f_asyncreads = MIN(pk->f_asyncreads, ULONG_MAX); ++ ++ p32->f_namemax = MIN(pk->f_namemax, USHRT_MAX); ++ ++ memcpy(p32->f_fstypename, pk->f_fstypename, sizeof (p32->f_fstypename)); ++ memcpy(p32->f_mntonname, pk->f_mntonname, sizeof (p32->f_mntonname)); ++ memcpy(p32->f_mntfromname,pk->f_mntfromname,sizeof (p32->f_mntfromname)); ++} ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statfs64 structure. ++ */ ++ ++static inline void ++statfs5_to_statfs64(const struct statfs_fbsd5 *pk, struct statfs64 *p64) ++{ ++ memset(p64, 0, sizeof(*p64)); ++ ++ p64->f_version = pk->f_version; ++ p64->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p64->f_iosize = MIN(pk->f_iosize, ULONG_MAX); ++ ++ p64->f_blocks = pk->f_blocks; ++ p64->f_bfree = pk->f_bfree; ++ p64->f_bavail = pk->f_bavail; ++ p64->f_files = pk->f_files; ++ p64->f_ffree = pk->f_ffree; ++ ++ p64->f_fsid = pk->f_fsid; ++ p64->f_owner = pk->f_owner; ++ p64->f_type = pk->f_type; ++ p64->f_flags = pk->f_flags; ++ ++ p64->f_syncwrites = MIN(pk->f_syncwrites, ULONG_MAX); ++ p64->f_asyncwrites = MIN(pk->f_asyncwrites, ULONG_MAX); ++ p64->f_syncreads = MIN(pk->f_syncreads, ULONG_MAX); ++ p64->f_asyncreads = MIN(pk->f_asyncreads, ULONG_MAX); ++ ++ p64->f_namemax = MIN(pk->f_namemax, USHRT_MAX); ++ ++ memcpy(p64->f_fstypename, pk->f_fstypename, sizeof (p64->f_fstypename)); ++ memcpy(p64->f_mntonname, pk->f_mntonname, sizeof (p64->f_mntonname)); ++ memcpy(p64->f_mntfromname,pk->f_mntfromname,sizeof (p64->f_mntfromname)); ++} ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statvfs structure. ++ */ ++ ++static inline void ++statfs5_to_statvfs (const struct statfs_fbsd5 *pk, struct statvfs *p32) ++{ ++ /* FIXME: What is the difference between f_bsize and f_frsize ? */ ++ p32->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p32->f_frsize = MIN(pk->f_bsize, ULONG_MAX); ++ ++ p32->f_blocks = MIN(pk->f_blocks, ULONG_MAX); ++ p32->f_bfree = MIN(pk->f_bfree, ULONG_MAX); ++ p32->f_bavail = MIN(pk->f_bavail, ULONG_MAX); ++ p32->f_files = MIN(pk->f_files, ULONG_MAX); ++ p32->f_ffree = MIN(pk->f_ffree, ULONG_MAX); ++ p32->f_favail = MIN(pk->f_ffree, ULONG_MAX); /* Hmm. May be filesystem dependent. */ ++ ++ memcpy(&(p32->f_fsid), &(pk->f_fsid), sizeof(__fsid_t)); ++ ++ p32->f_flag = ++ (pk->f_flags & MNT_RDONLY ? ST_RDONLY : 0) ++ | (pk->f_flags & MNT_NOSUID ? ST_NOSUID : 0) ++ | (pk->f_flags & MNT_NODEV ? ST_NODEV : 0) ++ | (pk->f_flags & MNT_NOEXEC ? ST_NOEXEC : 0) ++ | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0) ++ | (pk->f_flags & MNT_NOATIME ? ST_NOATIME : 0); ++ p32->f_namemax = pk->f_namemax; ++ ++ memset (p32->f_spare, '\0', sizeof (p32->f_spare)); ++} ++ ++ ++/* ++ * Convert a FreeBSD 5.x format statfs structure to an glibc format statvfs64 structure. ++ */ ++ ++static inline void ++statfs5_to_statvfs64 (const struct statfs_fbsd5 *pk, struct statvfs64 *p64) ++{ ++ /* FIXME: What is the difference between f_bsize and f_frsize ? */ ++ p64->f_bsize = MIN(pk->f_bsize, ULONG_MAX); ++ p64->f_frsize = MIN(pk->f_bsize, ULONG_MAX); ++ ++ p64->f_blocks = pk->f_blocks; ++ p64->f_bfree = pk->f_bfree; ++ p64->f_bavail = pk->f_bavail; ++ p64->f_files = pk->f_files; ++ p64->f_ffree = pk->f_ffree; ++ p64->f_favail = pk->f_ffree; /* Hmm. May be filesystem dependent. */ ++ ++ memcpy(&(p64->f_fsid), &(pk->f_fsid), sizeof(__fsid_t)); ++ ++ p64->f_flag = ++ (pk->f_flags & MNT_RDONLY ? ST_RDONLY : 0) ++ | (pk->f_flags & MNT_NOSUID ? ST_NOSUID : 0) ++ | (pk->f_flags & MNT_NODEV ? ST_NODEV : 0) ++ | (pk->f_flags & MNT_NOEXEC ? ST_NOEXEC : 0) ++ | (pk->f_flags & MNT_SYNCHRONOUS ? ST_SYNCHRONOUS : 0) ++ | (pk->f_flags & MNT_NOATIME ? ST_NOATIME : 0); ++ p64->f_namemax = pk->f_namemax; ++ ++ memset (p64->f_spare, '\0', sizeof (p64->f_spare)); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/statvfs.c +@@ -0,0 +1,40 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++statvfs (const char *file, struct statvfs *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs'. */ ++ statfs5_to_statvfs (&kbuf, buf); ++ ++ return 0; ++} ++libc_hidden_weak (statvfs) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/statvfs64.c +@@ -0,0 +1,41 @@ ++/* Return information about the filesystem on which FILE resides. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include "statfsconv.c" ++ ++/* Return information about the filesystem on which FILE resides. */ ++int ++__statvfs64 (const char *file, struct statvfs64 *buf) ++{ ++ struct statfs_fbsd5 kbuf; ++ ++ if (__syscall_statfs (file, &kbuf) < 0) ++ return -1; ++ ++ /* Convert a 'struct statfs' to 'struct statvfs64'. */ ++ statfs5_to_statvfs64 (&kbuf, buf); ++ ++ return 0; ++} ++ ++weak_alias (__statvfs64, statvfs64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/stty.c +@@ -0,0 +1,2 @@ ++/* use stub only variant */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/symlinkat.c +@@ -0,0 +1,126 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_symlinkat (const char *path1, int fd, ++ const char *path2); ++libc_hidden_proto (__syscall_symlinkat) ++ ++/* Make a symbolic link to FROM named TO relative to TOFD. */ ++int ++symlinkat (from, tofd, to) ++ const char *from; ++ int tofd; ++ const char *to; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (symlinkat, 3, from, tofd, to); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (tofd != AT_FDCWD && to[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t tolen; ++ ++ if (tofd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ tolen = strlen (to); ++ if (__builtin_expect (tolen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + tolen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == tofd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, to); ++ to = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ return __symlink (from, to); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/kd.h +@@ -0,0 +1,25 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_KD_H ++#define _SYS_KD_H 1 ++ ++#include ++#include ++ ++#endif /* sys/kd.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/mount.h +@@ -0,0 +1,437 @@ ++/* Header file for handling mounted filesystems. FreeBSD version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_MOUNT_H ++#define _SYS_MOUNT_H 1 ++ ++#include ++ ++/* Retrieving the list of mounted filesystems. */ ++ ++#include ++#include ++#include ++#include ++ ++/* ++ * File identifier. ++ * These are unique per filesystem on a single machine. ++ */ ++#define MAXFIDSZ 16 ++ ++struct fid { ++ __u_short fid_len; /* length of data in bytes */ ++ __u_short fid_reserved; /* force longword alignment */ ++ char fid_data[MAXFIDSZ]; /* data (variable length) */ ++}; ++ ++/* ++ * filesystem statistics ++ */ ++#define MFSNAMELEN 16 /* length of type name including null */ ++#define MNAMELEN 88 /* size of on/from name bufs */ ++#define STATFS_VERSION 0x20030518 /* current version number */ ++ ++ ++/* ++ * User specifiable flags. ++ */ ++#define MNT_RDONLY 0x00000001 /* read only filesystem */ ++#define MNT_SYNCHRONOUS 0x00000002 /* filesystem written synchronously */ ++#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */ ++#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */ ++#define MNT_NODEV 0x00000010 /* don't interpret special files */ ++#define MNT_UNION 0x00000020 /* union with underlying filesystem */ ++#define MNT_ASYNC 0x00000040 /* filesystem written asynchronously */ ++#define MNT_SUIDDIR 0x00100000 /* special handling of SUID on dirs */ ++#define MNT_SOFTDEP 0x00200000 /* soft updates being done */ ++#define MNT_NOSYMFOLLOW 0x00400000 /* do not follow symlinks */ ++#define MNT_GJOURNAL 0x02000000 /* GEOM journal support enabled */ ++#define MNT_JAILDEVFS 0x02000000 /* jail-friendly DEVFS behaviour */ ++#define MNT_MULTILABEL 0x04000000 /* MAC support for individual objects */ ++#define MNT_ACLS 0x08000000 /* ACL support enabled */ ++#define MNT_NOATIME 0x10000000 /* disable update of file access time */ ++#define MNT_NOCLUSTERR 0x40000000 /* disable cluster read */ ++#define MNT_NOCLUSTERW 0x80000000 /* disable cluster write */ ++#define MNT_NFS4ACLS 0x00000010 ++ ++/* ++ * NFS export related mount flags. ++ */ ++#define MNT_EXRDONLY 0x00000080 /* exported read only */ ++#define MNT_EXPORTED 0x00000100 /* filesystem is exported */ ++#define MNT_DEFEXPORTED 0x00000200 /* exported to the world */ ++#define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */ ++#define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */ ++#define MNT_EXPUBLIC 0x20000000 /* public export (WebNFS) */ ++ ++/* ++ * Flags set by internal operations, ++ * but visible to the user. ++ * XXX some of these are not quite right.. (I've never seen the root flag set) ++ */ ++#define MNT_LOCAL 0x00001000 /* filesystem is stored locally */ ++#define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */ ++#define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */ ++#define MNT_USER 0x00008000 /* mounted by a user */ ++#define MNT_IGNORE 0x00800000 /* do not show entry in df */ ++ ++/* ++ * Mask of flags that are visible to statfs(). ++ * XXX I think that this could now become (~(MNT_CMDFLAGS)) ++ * but the 'mount' program may need changing to handle this. ++ */ ++#define MNT_VISFLAGMASK (MNT_RDONLY | MNT_SYNCHRONOUS | MNT_NOEXEC | \ ++ MNT_NOSUID | MNT_NODEV | MNT_UNION | \ ++ MNT_ASYNC | MNT_EXRDONLY | MNT_EXPORTED | \ ++ MNT_DEFEXPORTED | MNT_EXPORTANON| MNT_EXKERB | \ ++ MNT_LOCAL | MNT_USER | MNT_QUOTA | \ ++ MNT_ROOTFS | MNT_NOATIME | MNT_NOCLUSTERR| \ ++ MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \ ++ MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ ++ MNT_JAILDEVFS | MNT_MULTILABEL | MNT_ACLS) ++ ++/* Mask of flags that can be updated. */ ++#define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | \ ++ MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | \ ++ MNT_NOATIME | \ ++ MNT_NOSYMFOLLOW | MNT_IGNORE | MNT_JAILDEVFS | \ ++ MNT_NOCLUSTERR | MNT_NOCLUSTERW | MNT_SUIDDIR | \ ++ MNT_ACLS | MNT_USER) ++ ++/* ++ * External filesystem command modifier flags. ++ * Unmount can use the MNT_FORCE flag. ++ * XXX These are not STATES and really should be somewhere else. ++ */ ++#define MNT_UPDATE 0x00010000 /* not a real mount, just an update */ ++#define MNT_DELEXPORT 0x00020000 /* delete export host lists */ ++#define MNT_RELOAD 0x00040000 /* reload filesystem data */ ++#define MNT_FORCE 0x00080000 /* force unmount or readonly change */ ++#define MNT_SNAPSHOT 0x01000000 /* snapshot the filesystem */ ++#define MNT_BYFSID 0x08000000 /* specify filesystem by ID. */ ++#define MNT_CMDFLAGS (MNT_UPDATE | MNT_DELEXPORT | MNT_RELOAD | \ ++ MNT_FORCE | MNT_SNAPSHOT | MNT_BYFSID) ++/* ++ * Internal filesystem control flags stored in mnt_kern_flag. ++ * ++ * MNTK_UNMOUNT locks the mount entry so that name lookup cannot proceed ++ * past the mount point. This keeps the subtree stable during mounts ++ * and unmounts. ++ * ++ * MNTK_UNMOUNTF permits filesystems to detect a forced unmount while ++ * dounmount() is still waiting to lock the mountpoint. This allows ++ * the filesystem to cancel operations that might otherwise deadlock ++ * with the unmount attempt (used by NFS). ++ */ ++#define MNTK_UNMOUNTF 0x00000001 /* forced unmount in progress */ ++#define MNTK_ASYNC 0x00000002 /* filtered async flag */ ++#define MNTK_SOFTDEP 0x00000004 /* async disabled by softdep */ ++#define MNTK_NOINSMNTQ 0x00000008 /* insmntque is not allowed */ ++#define MNTK_UNMOUNT 0x01000000 /* unmount in progress */ ++#define MNTK_MWAIT 0x02000000 /* waiting for unmount to finish */ ++#define MNTK_WANTRDWR 0x04000000 /* upgrade to read/write requested */ ++#define MNTK_SUSPEND2 0x04000000 /* block secondary writes */ ++#define MNTK_SUSPEND 0x08000000 /* request write suspension */ ++#define MNTK_SUSPENDED 0x10000000 /* write operations are suspended */ ++#define MNTK_MPSAFE 0x20000000 /* Filesystem is MPSAFE. */ ++#define MNTK_NOKNOTE 0x80000000 /* Don't send KNOTEs from VOP hooks */ ++#define MNTK_LOOKUP_SHARED 0x40000000 /* FS supports shared lock lookups */ ++ ++/* ++ * Sysctl CTL_VFS definitions. ++ * ++ * Second level identifier specifies which filesystem. Second level ++ * identifier VFS_VFSCONF returns information about all filesystems. ++ * Second level identifier VFS_GENERIC is non-terminal. ++ */ ++#define VFS_VFSCONF 0 /* get configured filesystems */ ++#define VFS_GENERIC 0 /* generic filesystem information */ ++/* ++ * Third level identifiers for VFS_GENERIC are given below; third ++ * level identifiers for specific filesystems are given in their ++ * mount specific header files. ++ */ ++#define VFS_MAXTYPENUM 1 /* int: highest defined filesystem type */ ++#define VFS_CONF 2 /* struct: vfsconf for filesystem given ++ as next argument */ ++ ++/* ++ * Flags for various system call interfaces. ++ * ++ * waitfor flags to vfs_sync() and getfsstat() ++ */ ++#define MNT_WAIT 1 /* synchronously wait for I/O to complete */ ++#define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */ ++#define MNT_LAZY 3 /* push data not written by filesystem syncer */ ++#define MNT_SUSPEND 4 /* Suspend file system after sync */ ++ ++/* ++ * Generic file handle ++ */ ++struct fhandle { ++ __fsid_t fh_fsid; /* Filesystem id of mount point */ ++ struct fid fh_fid; /* Filesys specific id */ ++}; ++typedef struct fhandle fhandle_t; ++ ++/* ++ * Export arguments for local filesystem mount calls. ++ */ ++struct export_args { ++ int ex_flags; /* export related flags */ ++ uid_t ex_root; /* mapping for root uid */ ++ struct xucred ex_anon; /* mapping for anonymous user */ ++ struct sockaddr *ex_addr; /* net address to which exported */ ++ __u_char ex_addrlen; /* and the net address length */ ++ struct sockaddr *ex_mask; /* mask of valid bits in saddr */ ++ __u_char ex_masklen; /* and the smask length */ ++ char *ex_indexfile; /* index file for WebNFS URLs */ ++}; ++ ++/* ++ * Structure holding information for a publicly exported filesystem ++ * (WebNFS). Currently the specs allow just for one such filesystem. ++ */ ++struct nfs_public { ++ int np_valid; /* Do we hold valid information */ ++ fhandle_t np_handle; /* Filehandle for pub fs (internal) */ ++ struct mount *np_mount; /* Mountpoint of exported fs */ ++ char *np_index; /* Index file */ ++}; ++ ++/* ++ * Filesystem configuration information. One of these exists for each ++ * type of filesystem supported by the kernel. These are searched at ++ * mount time to identify the requested filesystem. ++ * ++ * XXX: Never change the first two arguments! ++ */ ++struct vfsconf { ++ __u_int vfc_version; /* ABI version number */ ++ char vfc_name[MFSNAMELEN]; /* filesystem type name */ ++ struct vfsops *vfc_vfsops; /* filesystem operations vector */ ++ int vfc_typenum; /* historic filesystem type number */ ++ int vfc_refcount; /* number mounted of this type */ ++ int vfc_flags; /* permanent flags */ ++ struct vfsoptdecl *vfc_opts; /* mount options */ ++ TAILQ_ENTRY(vfsconf) vfc_list; /* list of vfscons */ ++}; ++ ++/* Userland version of the struct vfsconf. */ ++struct xvfsconf { ++ struct vfsops *vfc_vfsops; /* filesystem operations vector */ ++ char vfc_name[MFSNAMELEN]; /* filesystem type name */ ++ int vfc_typenum; /* historic filesystem type number */ ++ int vfc_refcount; /* number mounted of this type */ ++ int vfc_flags; /* permanent flags */ ++ struct vfsconf *vfc_next; /* next in list */ ++}; ++ ++#ifndef BURN_BRIDGES ++struct ovfsconf { ++ void *vfc_vfsops; ++ char vfc_name[32]; ++ int vfc_index; ++ int vfc_refcount; ++ int vfc_flags; ++}; ++#endif ++ ++/* ++ * NB: these flags refer to IMPLEMENTATION properties, not properties of ++ * any actual mounts; i.e., it does not make sense to change the flags. ++ */ ++#define VFCF_STATIC 0x00010000 /* statically compiled into kernel */ ++#define VFCF_NETWORK 0x00020000 /* may get data over the network */ ++#define VFCF_READONLY 0x00040000 /* writes are not implemented */ ++#define VFCF_SYNTHETIC 0x00080000 /* data does not represent real files */ ++#define VFCF_LOOPBACK 0x00100000 /* aliases some other mounted FS */ ++#define VFCF_UNICODE 0x00200000 /* stores file names as Unicode*/ ++#define VFCF_JAIL 0x00400000 /* can be mounted from within a jail */ ++ ++typedef u_int32_t fsctlop_t; ++ ++struct vfsidctl { ++ int vc_vers; /* should be VFSIDCTL_VERS1 (below) */ ++ __fsid_t vc_fsid; /* fsid to operate on. */ ++ char vc_fstypename[MFSNAMELEN]; ++ /* type of fs 'nfs' or '*' */ ++ fsctlop_t vc_op; /* operation VFS_CTL_* (below) */ ++ void *vc_ptr; /* pointer to data structure. */ ++ size_t vc_len; /* sizeof said structure. */ ++ u_int32_t vc_spare[12]; /* spare (must be zero). */ ++}; ++ ++/* vfsidctl API version. */ ++#define VFS_CTL_VERS1 0x01 ++ ++/* ++ * New style VFS sysctls, do not reuse/conflict with the namespace for ++ * private sysctls. ++ * All "global" sysctl ops have the 33rd bit set: ++ * 0x...1.... ++ * Private sysctl ops should have the 33rd bit unset. ++ */ ++#define VFS_CTL_QUERY 0x00010001 /* anything wrong? (vfsquery) */ ++#define VFS_CTL_TIMEO 0x00010002 /* set timeout for vfs notification */ ++#define VFS_CTL_NOLOCKS 0x00010003 /* disable file locking */ ++ ++struct vfsquery { ++ u_int32_t vq_flags; ++ u_int32_t vq_spare[31]; ++}; ++ ++/* vfsquery flags */ ++#define VQ_NOTRESP 0x0001 /* server down */ ++#define VQ_NEEDAUTH 0x0002 /* server bad auth */ ++#define VQ_LOWDISK 0x0004 /* we're low on space */ ++#define VQ_MOUNT 0x0008 /* new filesystem arrived */ ++#define VQ_UNMOUNT 0x0010 /* filesystem has left */ ++#define VQ_DEAD 0x0020 /* filesystem is dead, needs force unmount */ ++#define VQ_ASSIST 0x0040 /* filesystem needs assistance from external ++ program */ ++#define VQ_NOTRESPLOCK 0x0080 /* server lockd down */ ++#define VQ_FLAG0100 0x0100 /* placeholder */ ++#define VQ_FLAG0200 0x0200 /* placeholder */ ++#define VQ_FLAG0400 0x0400 /* placeholder */ ++#define VQ_FLAG0800 0x0800 /* placeholder */ ++#define VQ_FLAG1000 0x1000 /* placeholder */ ++#define VQ_FLAG2000 0x2000 /* placeholder */ ++#define VQ_FLAG4000 0x4000 /* placeholder */ ++#define VQ_FLAG8000 0x8000 /* placeholder */ ++ ++ ++struct iovec; ++struct uio; ++ ++__BEGIN_DECLS ++ ++/* Mounting and unmounting filesystems. */ ++int mount(const char *, const char *, int, void *); ++int nmount(struct iovec *, unsigned int, int); ++int unmount(const char *, int); ++ ++/* C library stuff */ ++int getvfsbyname(const char *, struct xvfsconf *); ++ ++/* getfsstat() appears in BSD 4.4. A variant of this API is found on OSF/1, ++ but on that system the user also needs to include . */ ++ ++#ifndef __USE_FILE_OFFSET64 ++extern int getfsstat (struct statfs *__buf, long __bufsize, ++ int __flags) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (getfsstat, ++ (struct statfs *__buf, long __bufsize, int __flags), ++ getfsstat64); ++# else ++# define getfsstat getfsstat64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int getfsstat64 (struct statfs64 *__buf, long __bufsize, ++ int __flags) __THROW; ++#endif ++ ++#ifdef _LIBC ++extern int __getfsstat (struct statfs *__buf, long __bufsize, int __flags); ++extern int __getfsstat64 (struct statfs64 *__buf, long __bufsize, int __flags); ++#endif ++ ++/* getmntinfo() appears in BSD 4.4. */ ++ ++#ifndef __USE_FILE_OFFSET64 ++extern int getmntinfo (struct statfs **__mntbufp, int __flags) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (getmntinfo, ++ (struct statfs **__mntbufp, int __flags), ++ getmntinfo64); ++# else ++# define getmntinfo getmntinfo64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int getmntinfo64 (struct statfs64 **__mntbufp, int __flags) __THROW; ++#endif ++ ++#ifdef _LIBC ++extern int __getmntinfo (struct statfs **__mntbufp, int __flags); ++#endif ++ ++__END_DECLS ++ ++ ++/* Opening files on specified mounted filesystems. ++ These system calls are reserved to the superuser, for security reasons. */ ++ ++__BEGIN_DECLS ++ ++/* Return in *FHP the file handle corresponding to the file or directory ++ PATH. */ ++extern int getfh (__const char *__path, fhandle_t *__fhp) __THROW; ++ ++/* Return in *FHP the file handle corresponding to the file or directory ++ PATH. */ ++extern int lgetfh (__const char *__path, fhandle_t *__fhp) __THROW; ++ ++/* Open a file handle *FHP, using the open() like FLAGS. Return the ++ new file descriptor. */ ++extern int fhopen (__const fhandle_t *__fhp, int __flags) __THROW; ++ ++/* Get file attributes for the file whose handle is *FHP, and return them ++ in *BUF. Like fhopen + fstat + close. */ ++#ifndef __USE_FILE_OFFSET64 ++extern int fhstat (__const fhandle_t *__fhp, struct stat *__buf) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (fhstat, ++ (__const fhandle_t *__fhp, struct stat *__buf), ++ fhstat64); ++# else ++# define fhstat fhstat64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int fhstat64 (__const fhandle_t *__fhp, struct stat64 *__buf) __THROW; ++#endif ++ ++/* Return information about the filesystem on which the file resides whose ++ handle is *FHP. Like fhopen + fstatfs + close. */ ++#ifndef __USE_FILE_OFFSET64 ++extern int fhstatfs (__const fhandle_t *__fhp, struct statfs *__buf) __THROW; ++#else ++# ifdef __REDIRECT ++extern int __REDIRECT (fhstatfs, ++ (__const fhandle_t *__fhp, struct statfs *__buf), ++ fhstatfs64); ++# else ++# define fhstatfs fhstatfs64 ++# endif ++#endif ++#ifdef __USE_LARGEFILE64 ++extern int fhstatfs64 (__const fhandle_t *__fhp, ++ struct statfs64 *__buf) __THROW; ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYS_MOUNT_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/param.h +@@ -0,0 +1,238 @@ ++/* Copyright (C) 1995,1996,1997,2000,2001,2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PARAM_H ++#define _SYS_PARAM_H 1 ++ ++#include ++#include ++ ++#ifndef NULL ++#define NULL 0 ++#endif ++ ++/* ++ * __FreeBSD_version numbers are documented in the Porter's Handbook. ++ * If you bump the version for any reason, you should update the documentation ++ * there. ++ * Currently this lives here: ++ * ++ * doc/en_US.ISO8859-1/books/porters-handbook/book.sgml ++ * ++ * scheme is: <0 if release branch, otherwise 1>xx ++ */ ++#include ++ ++/* Some inet code expects that this file defines the 'u_int32_t' type. */ ++#include ++#include ++ ++/* ++ * Machine-independent constants (some used in following include files). ++ * Redefined constants are from POSIX 1003.1 limits file. ++ * ++ * MAXCOMLEN should be >= sizeof(ac_comm) (see ) ++ * MAXLOGNAME should be == UT_NAMESIZE+1 (see ) ++ */ ++ ++#define MAXCOMLEN 19 /* max command name remembered */ ++#define MAXINTERP 32 /* max interpreter file name length */ ++#define MAXLOGNAME 17 /* max login name length (incl. NUL) */ ++#define MAXUPRC CHILD_MAX /* max simultaneous processes */ ++#define NCARGS ARG_MAX /* max bytes for an exec function */ ++#define NGROUPS NGROUPS_MAX /* max number groups */ ++#define NOGROUP 65535 /* marker for empty group set member */ ++#define MAXHOSTNAMELEN 256 /* max hostname size */ ++#define SPECNAMELEN 63 /* max length of devicename */ ++#define TTY_NAME_MAX SPECNAMELEN ++ ++/* BSD names for some values. */ ++ ++#define NBBY CHAR_BIT ++#ifndef NGROUPS ++# define NGROUPS NGROUPS_MAX ++#endif ++#define MAXSYMLINKS 32 ++#define CANBSIZ MAX_CANON ++#define NCARGS ARG_MAX ++#define MAXPATHLEN PATH_MAX ++ ++/* The following is not really correct but it is a value we used for a ++ long time and which seems to be usable. People should not use NOFILE ++ anyway. */ ++#define NOFILE OPEN_MAX ++ ++/* Bit map related macros. */ ++#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) ++#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) ++#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) ++#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) ++ ++/* Macros for counting and rounding. */ ++#ifndef howmany ++# define howmany(x, y) (((x) + ((y) - 1)) / (y)) ++#endif ++#ifdef __GNUC__ ++# define roundup(x, y) (__builtin_constant_p (y) && powerof2 (y) \ ++ ? (((x) + (y) - 1) & ~((y) - 1)) \ ++ : ((((x) + ((y) - 1)) / (y)) * (y))) ++#else ++# define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) ++#endif ++#define powerof2(x) ((((x) - 1) & (x)) == 0) ++ ++/* Macros for min/max. */ ++#define MIN(a,b) (((a)<(b))?(a):(b)) ++#define MAX(a,b) (((a)>(b))?(a):(b)) ++ ++/* Machine type dependent parameters. */ ++#include ++ ++#ifndef DEV_BSHIFT ++#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ ++#endif ++#define DEV_BSIZE (1<>PAGE_SHIFT) ++#endif ++ ++/* ++ * btodb() is messy and perhaps slow because `bytes' may be an off_t. We ++ * want to shift an unsigned type to avoid sign extension and we don't ++ * want to widen `bytes' unnecessarily. Assume that the result fits in ++ * a daddr_t. ++ */ ++#ifndef btodb ++#define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \ ++ (sizeof (bytes) > sizeof(long) \ ++ ? (daddr_t)((unsigned long long)(bytes) >> DEV_BSHIFT) \ ++ : (daddr_t)((unsigned long)(bytes) >> DEV_BSHIFT)) ++#endif ++ ++#ifndef dbtob ++#define dbtob(db) /* calculates (db * DEV_BSIZE) */ \ ++ ((off_t)(db) << DEV_BSHIFT) ++#endif ++ ++#endif /* _NO_NAMESPACE_POLLUTION */ ++ ++#define PRIMASK 0x0ff ++#define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */ ++#define PDROP 0x200 /* OR'd with pri to stop re-entry of interlock mutex */ ++ ++#define NBPW sizeof(int) /* number of bytes per word (integer) */ ++ ++#define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */ ++ ++#define NODEV (dev_t)(-1) /* non-existent device */ ++ ++#define CBLOCK 128 /* Clist block size, must be a power of 2. */ ++#define CBQSIZE (CBLOCK/NBBY) /* Quote bytes/cblock - can do better. */ ++ /* Data chars/clist. */ ++#define CBSIZE (CBLOCK - sizeof(struct cblock *) - CBQSIZE) ++#define CROUND (CBLOCK - 1) /* Clist rounding. */ ++ ++/* ++ * File system parameters and macros. ++ * ++ * MAXBSIZE - Filesystems are made out of blocks of at most MAXBSIZE bytes ++ * per block. MAXBSIZE may be made larger without effecting ++ * any existing filesystems as long as it does not exceed MAXPHYS, ++ * and may be made smaller at the risk of not being able to use ++ * filesystems which require a block size exceeding MAXBSIZE. ++ * ++ * BKVASIZE - Nominal buffer space per buffer, in bytes. BKVASIZE is the ++ * minimum KVM memory reservation the kernel is willing to make. ++ * Filesystems can of course request smaller chunks. Actual ++ * backing memory uses a chunk size of a page (PAGE_SIZE). ++ * ++ * If you make BKVASIZE too small you risk seriously fragmenting ++ * the buffer KVM map which may slow things down a bit. If you ++ * make it too big the kernel will not be able to optimally use ++ * the KVM memory reserved for the buffer cache and will wind ++ * up with too-few buffers. ++ * ++ * The default is 16384, roughly 2x the block size used by a ++ * normal UFS filesystem. ++ */ ++#define MAXBSIZE 65536 /* must be power of 2 */ ++#define BKVASIZE 16384 /* must be power of 2 */ ++#define BKVAMASK (BKVASIZE-1) ++ ++/* ++ * Scale factor for scaled integers used to count %cpu time and load avgs. ++ * ++ * The number of CPU `tick's that map to a unique `%age' can be expressed ++ * by the formula (1 / (2 ^ (FSHIFT - 11))). The maximum load average that ++ * can be calculated (assuming 32 bits) can be closely approximated using ++ * the formula (2 ^ (2 * (16 - FSHIFT))) for (FSHIFT < 15). ++ * ++ * For the scheduler to maintain a 1:1 mapping of CPU `tick' to `%age', ++ * FSHIFT must be at least 11; this gives us a maximum load avg of ~1024. ++ */ ++#define FSHIFT 11 /* bits to right of fixed binary point */ ++#define FSCALE (1<> (PAGE_SHIFT - DEV_BSHIFT)) ++ ++#define ctodb(db) /* calculates pages to devblks */ \ ++ ((db) << (PAGE_SHIFT - DEV_BSHIFT)) ++ ++#endif /* _SYS_PARAM_H_ */ ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ptrace.h +@@ -0,0 +1,113 @@ ++/*- ++ * Copyright (c) 1984, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ptrace.h 8.2 (Berkeley) 1/4/94 ++ * $FreeBSD: src/sys/sys/ptrace.h,v 1.28.10.1.2.1 2009/10/25 01:10:29 kensmith Exp $ ++ */ ++ ++#ifndef _SYS_PTRACE_H ++#define _SYS_PTRACE_H 1 ++ ++#include ++#include ++ ++__BEGIN_DECLS ++ ++#define PT_TRACE_ME 0 /* child declares it's being traced */ ++#define PT_READ_I 1 /* read word in child's I space */ ++#define PT_READ_D 2 /* read word in child's D space */ ++/* was PT_READ_U 3 * read word in child's user structure */ ++#define PT_WRITE_I 4 /* write word in child's I space */ ++#define PT_WRITE_D 5 /* write word in child's D space */ ++/* was PT_WRITE_U 6 * write word in child's user structure */ ++#define PT_CONTINUE 7 /* continue the child */ ++#define PT_KILL 8 /* kill the child process */ ++#define PT_STEP 9 /* single step the child */ ++ ++#define PT_ATTACH 10 /* trace some running process */ ++#define PT_DETACH 11 /* stop tracing a process */ ++#define PT_IO 12 /* do I/O to/from stopped process. */ ++ ++#if 0 /* our threading libray is different */ ++#define PT_LWPINFO 13 /* Info about the LWP that stopped. */ ++#define PT_GETNUMLWPS 14 /* get total number of threads */ ++#define PT_GETLWPLIST 15 /* get thread list */ ++#endif ++ ++#define PT_CLEARSTEP 16 /* turn off single step */ ++#define PT_SETSTEP 17 /* turn on single step */ ++#define PT_SUSPEND 18 /* suspend a thread */ ++#define PT_RESUME 19 /* resume a thread */ ++ ++#define PT_TO_SCE 20 ++#define PT_TO_SCX 21 ++#define PT_SYSCALL 22 ++ ++#define PT_GETREGS 33 /* get general-purpose registers */ ++#define PT_SETREGS 34 /* set general-purpose registers */ ++#define PT_GETFPREGS 35 /* get floating-point registers */ ++#define PT_SETFPREGS 36 /* set floating-point registers */ ++#define PT_GETDBREGS 37 /* get debugging registers */ ++#define PT_SETDBREGS 38 /* set debugging registers */ ++#define PT_FIRSTMACH 64 /* for machine-specific requests */ ++ ++struct ptrace_io_desc { ++ int piod_op; /* I/O operation */ ++ void *piod_offs; /* child offset */ ++ void *piod_addr; /* parent offset */ ++ size_t piod_len; /* request length */ ++}; ++ ++/* ++ * Operations in piod_op. ++ */ ++#define PIOD_READ_D 1 /* Read from D space */ ++#define PIOD_WRITE_D 2 /* Write to D space */ ++#define PIOD_READ_I 3 /* Read from I space */ ++#define PIOD_WRITE_I 4 /* Write to I space */ ++ ++#if 0 ++/* Argument structure for PT_LWPINFO. */ ++struct ptrace_lwpinfo { ++ lwpid_t pl_lwpid; /* LWP described. */ ++ int pl_event; /* Event that stopped the LWP. */ ++#define PL_EVENT_NONE 0 ++#define PL_EVENT_SIGNAL 1 ++ int pl_flags; /* LWP flags. */ ++#define PL_FLAG_SA 0x01 /* M:N thread */ ++#define PL_FLAG_BOUND 0x02 /* M:N bound thread */ ++ sigset_t pl_sigmask; /* LWP signal mask */ ++ sigset_t pl_siglist; /* LWP pending signal */ ++}; ++#endif ++ ++extern int ptrace(int _request, pid_t _pid, caddr_t _addr, int _data) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_PTRACE_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/reboot.h +@@ -0,0 +1,81 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1988, 1993, 1994 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)reboot.h 8.3 (Berkeley) 12/13/94 ++ * $FreeBSD: src/sys/sys/reboot.h,v 1.26.18.1 2008/11/25 02:59:29 kensmith Exp $ ++ */ ++ ++#ifndef _SYS_REBOOT_H_ ++#define _SYS_REBOOT_H_ 1 ++ ++#include ++ ++/* ++ * Arguments to reboot system call. These are passed to ++ * the boot program and on to init. ++ */ ++#define RB_AUTOBOOT 0 /* flags for system auto-booting itself */ ++ ++#define RB_ASKNAME 0x001 /* ask for file name to reboot from */ ++#define RB_SINGLE 0x002 /* reboot to single user only */ ++#define RB_NOSYNC 0x004 /* dont sync before reboot */ ++#define RB_HALT 0x008 /* don't reboot, just halt */ ++#define RB_INITNAME 0x010 /* name given for /etc/init (unused) */ ++#define RB_DFLTROOT 0x020 /* use compiled-in rootdev */ ++#define RB_KDB 0x040 /* give control to kernel debugger */ ++#define RB_RDONLY 0x080 /* mount root fs read-only */ ++#define RB_DUMP 0x100 /* dump kernel memory before reboot */ ++#define RB_MINIROOT 0x200 /* mini-root present in memory at boot time */ ++#define RB_VERBOSE 0x800 /* print all potentially useful info */ ++#define RB_SERIAL 0x1000 /* use serial port as console */ ++#define RB_CDROM 0x2000 /* use cdrom as root */ ++#define RB_POWEROFF 0x4000 /* turn the power off if possible */ ++#define RB_GDB 0x8000 /* use GDB remote debugger instead of DDB */ ++#define RB_MUTE 0x10000 /* start up with the console muted */ ++#define RB_SELFTEST 0x20000 /* don't complete the boot; do selftest */ ++#define RB_RESERVED1 0x40000 /* reserved for internal use of boot blocks */ ++#define RB_RESERVED2 0x80000 /* reserved for internal use of boot blocks */ ++#define RB_PAUSE 0x100000 /* pause after each output line during probe */ ++#define RB_MULTIPLE 0x20000000 /* use multiple consoles */ ++ ++#define RB_BOOTINFO 0x80000000 /* have `struct bootinfo *' arg */ ++ ++/* ++ * Compatibility with Linux ++ */ ++#define RB_HALT_SYSTEM RB_HALT ++#define RB_POWER_OFF RB_POWEROFF ++ ++__BEGIN_DECLS ++ ++/* Reboot or halt the system. */ ++extern int reboot (int __howto) __THROW; ++ ++__END_DECLS ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/rfork.h +@@ -0,0 +1,98 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)unistd.h 8.2 (Berkeley) 1/7/94 ++ * $FreeBSD: src/sys/sys/unistd.h,v 1.22.2.1 2000/03/18 23:20:12 jasone Exp $ ++ */ ++ ++#ifndef _SYS_RFORK_H ++#define _SYS_RFORK_H ++ ++#include ++ ++/* ++ * rfork() options. ++ * ++ * XXX currently, operations without RFPROC set are not supported. ++ */ ++#define RFNAMEG (1<<0) /* UNIMPL new plan9 `name space' */ ++#define RFENVG (1<<1) /* UNIMPL copy plan9 `env space' */ ++#define RFFDG (1<<2) /* copy fd table */ ++#define RFNOTEG (1<<3) /* UNIMPL create new plan9 `note group' */ ++#define RFPROC (1<<4) /* change child (else changes curproc) */ ++#define RFMEM (1<<5) /* share `address space' */ ++#define RFNOWAIT (1<<6) /* parent need not wait() on child */ ++#define RFCNAMEG (1<<10) /* UNIMPL zero plan9 `name space' */ ++#define RFCENVG (1<<11) /* UNIMPL zero plan9 `env space' */ ++#define RFCFDG (1<<12) /* zero fd table */ ++#define RFTHREAD (1<<13) /* enable kernel thread support */ ++#define RFSIGSHARE (1<<14) /* share signal handlers */ ++#define RFLINUXTHPN (1<<16) /* do linux clone exit parent notification */ ++#define RFSTOPPED (1<<17) /* leave child in a stopped state */ ++#define RFHIGHPID (1<<18) /* use a pid higher than 10 (idleproc) */ ++#define RFTSIGZMB (1<<19) /* select signal for exit parent notification */ ++#define RFTSIGSHIFT 20 /* selected signal number is in bits 20-27 */ ++#define RFTSIGMASK 0xFF ++#define RFTSIGNUM(flags) (((flags) >> RFTSIGSHIFT) & RFTSIGMASK) ++#define RFTSIGFLAGS(signum) ((signum) << RFTSIGSHIFT) ++#define RFPPWAIT (1<<31) /* parent sleeps until child exits (vfork) */ ++ ++#define RFTHPNSHIFT 24 /* reserve bits 24-30 */ ++#define RFTHPNMASK 0x7F /* for compatibility with linuxthreads/clone() */ ++ /* allow to specify "clone exit parent notification" signal */ ++#define RFTHPNSIGNUM(flags) (((flags) >> RFTHPNSHIFT) & RFTHPNMASK) ++ ++__BEGIN_DECLS ++ ++extern int rfork (int __flags) __THROW; ++ ++#ifdef _LIBC ++extern int __rfork (int __flags); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYS_RFORK_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/socketvar.h +@@ -0,0 +1,189 @@ ++/* This header is used on many systems but for GNU we have ++ almost everything defined in the standard header. */ ++ ++#include ++ ++/*- ++ * Copyright (c) 1982, 1986, 1990, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)socketvar.h 8.3 (Berkeley) 2/19/95 ++ * ++ * $FreeBSD: src/sys/sys/socketvar.h,v 1.171.2.1.2.1 2009/10/25 01:10:29 kensmith Exp $ ++ */ ++ ++#ifndef _SYS_SOCKETVAR_H_ ++#define _SYS_SOCKETVAR_H_ ++ ++#include /* for TAILQ macros */ ++#include /* for struct selinfo */ ++#include ++#include ++#include ++ ++struct socket; ++struct vnet; ++ ++struct xsockbuf { ++ u_int sb_cc; ++ u_int sb_hiwat; ++ u_int sb_mbcnt; ++ u_int sb_mcnt; ++ u_int sb_ccnt; ++ u_int sb_mbmax; ++ int sb_lowat; ++ int sb_timeo; ++ short sb_flags; ++}; ++ ++/* ++ * Variables for socket buffering. ++ */ ++struct sockbuf { ++ struct selinfo sb_sel; /* process selecting read/write */ ++ struct mtx sb_mtx; /* sockbuf lock */ ++ struct sx sb_sx; /* prevent I/O interlacing */ ++ short sb_state; /* (c/d) socket state on sockbuf */ ++#define sb_startzero sb_mb ++ struct mbuf *sb_mb; /* (c/d) the mbuf chain */ ++ struct mbuf *sb_mbtail; /* (c/d) the last mbuf in the chain */ ++ struct mbuf *sb_lastrecord; /* (c/d) first mbuf of last ++ * record in socket buffer */ ++ struct mbuf *sb_sndptr; /* (c/d) pointer into mbuf chain */ ++ u_int sb_sndptroff; /* (c/d) byte offset of ptr into chain */ ++ u_int sb_cc; /* (c/d) actual chars in buffer */ ++ u_int sb_hiwat; /* (c/d) max actual char count */ ++ u_int sb_mbcnt; /* (c/d) chars of mbufs used */ ++ u_int sb_mcnt; /* (c/d) number of mbufs in buffer */ ++ u_int sb_ccnt; /* (c/d) number of clusters in buffer */ ++ u_int sb_mbmax; /* (c/d) max chars of mbufs to use */ ++ u_int sb_ctl; /* (c/d) non-data chars in buffer */ ++ int sb_lowat; /* (c/d) low water mark */ ++ int sb_timeo; /* (c/d) timeout for read/write */ ++ short sb_flags; /* (c/d) flags, see below */ ++ int (*sb_upcall)(struct socket *, void *, int); /* (c/d) */ ++ void *sb_upcallarg; /* (c/d) */ ++}; ++ ++ ++/* ++ * Kernel structure per socket. ++ * Contains send and receive buffer queues, ++ * handle on protocol and pointer to protocol ++ * private data and error information. ++ */ ++typedef u_quad_t so_gen_t; ++ ++ ++/*- ++ * Locking key to struct socket: ++ * (a) constant after allocation, no locking required. ++ * (b) locked by SOCK_LOCK(so). ++ * (c) locked by SOCKBUF_LOCK(&so->so_rcv). ++ * (d) locked by SOCKBUF_LOCK(&so->so_snd). ++ * (e) locked by ACCEPT_LOCK(). ++ * (f) not locked since integer reads/writes are atomic. ++ * (g) used only as a sleep/wakeup address, no value. ++ * (h) locked by global mutex so_global_mtx. ++ */ ++struct socket { ++ int so_count; /* (b) reference count */ ++ short so_type; /* (a) generic type, see socket.h */ ++ short so_options; /* from socket call, see socket.h */ ++ short so_linger; /* time to linger while closing */ ++ short so_state; /* (b) internal state flags SS_* */ ++ int so_qstate; /* (e) internal state flags SQ_* */ ++ void *so_pcb; /* protocol control block */ ++ struct vnet *so_vnet; /* network stack instance */ ++ struct protosw *so_proto; /* (a) protocol handle */ ++/* ++ * Variables for connection queuing. ++ * Socket where accepts occur is so_head in all subsidiary sockets. ++ * If so_head is 0, socket is not related to an accept. ++ * For head socket so_incomp queues partially completed connections, ++ * while so_comp is a queue of connections ready to be accepted. ++ * If a connection is aborted and it has so_head set, then ++ * it has to be pulled out of either so_incomp or so_comp. ++ * We allow connections to queue up based on current queue lengths ++ * and limit on number of queued connections for this socket. ++ */ ++ struct socket *so_head; /* (e) back pointer to listen socket */ ++ TAILQ_HEAD(, socket) so_incomp; /* (e) queue of partial unaccepted connections */ ++ TAILQ_HEAD(, socket) so_comp; /* (e) queue of complete unaccepted connections */ ++ TAILQ_ENTRY(socket) so_list; /* (e) list of unaccepted connections */ ++ u_short so_qlen; /* (e) number of unaccepted connections */ ++ u_short so_incqlen; /* (e) number of unaccepted incomplete ++ connections */ ++ u_short so_qlimit; /* (e) max number queued connections */ ++ short so_timeo; /* (g) connection timeout */ ++ u_short so_error; /* (f) error affecting connection */ ++ struct sigio *so_sigio; /* [sg] information for async I/O or ++ out of band data (SIGURG) */ ++ u_long so_oobmark; /* (c) chars to oob mark */ ++ TAILQ_HEAD(, aiocblist) so_aiojobq; /* AIO ops waiting on socket */ ++ ++ struct sockbuf so_rcv, so_snd; ++ ++ struct ucred *so_cred; /* (a) user credentials */ ++ struct label *so_label; /* (b) MAC label for socket */ ++ struct label *so_peerlabel; /* (b) cached MAC label for peer */ ++ /* NB: generation count must not be first. */ ++ so_gen_t so_gencnt; /* (h) generation count */ ++ void *so_emuldata; /* (b) private data for emulators */ ++ struct so_accf { ++ struct accept_filter *so_accept_filter; ++ void *so_accept_filter_arg; /* saved filter args */ ++ char *so_accept_filter_str; /* saved user args */ ++ } *so_accf; ++ int so_fibnum; /* routing domain for this socket */ ++}; ++ ++/* ++ * Externalized form of struct socket used by the sysctl(3) interface. ++ */ ++struct xsocket { ++ size_t xso_len; /* length of this structure */ ++ struct socket *xso_so; /* makes a convenient handle sometimes */ ++ short so_type; ++ short so_options; ++ short so_linger; ++ short so_state; ++ caddr_t so_pcb; /* another convenient handle */ ++ int xso_protocol; ++ int xso_family; ++ u_short so_qlen; ++ u_short so_incqlen; ++ u_short so_qlimit; ++ short so_timeo; ++ u_short so_error; ++ pid_t so_pgid; ++ u_long so_oobmark; ++ struct xsockbuf so_rcv, so_snd; ++ uid_t so_uid; /* XXX */ ++}; ++ ++#endif /* !_SYS_SOCKETVAR_H_ */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/swap.h +@@ -0,0 +1,37 @@ ++/* Calls to enable swapping on specified locations. FreeBSD version. ++ Copyright (C) 1996-1997, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __SYS_SWAP_H ++ ++#define __SYS_SWAP_H 1 ++#include ++ ++ ++__BEGIN_DECLS ++ ++/* Make the block special device PATH available to the system for swapping. ++ This call is restricted to the super-user. */ ++extern int swapon (__const char *__path) __THROW; ++ ++/* Stop using block special device PATH for swapping. */ ++extern int swapoff (__const char *__path) __THROW; ++ ++__END_DECLS ++ ++#endif /* sys/swap.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/syscall.h +@@ -0,0 +1,451 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSCALL_H ++#define _SYSCALL_H 1 ++ ++#define SYS_syscall 0 ++#define SYS_exit 1 ++#define SYS_fork 2 ++#define SYS_read 3 ++#define SYS_write 4 ++#define SYS_open 5 ++#define SYS_close 6 ++#define SYS_wait4 7 ++ /* 8 is old creat */ ++#define SYS_link 9 ++#define SYS_unlink 10 ++ /* 11 is obsolete execv */ ++#define SYS_chdir 12 ++#define SYS_fchdir 13 ++#define SYS_mknod 14 ++#define SYS_chmod 15 ++#define SYS_chown 16 ++#define SYS_obreak 17 ++#define SYS_freebsd4_getfsstat 18 ++ /* 19 is old lseek */ ++#define SYS_getpid 20 ++#define SYS_mount 21 ++#define SYS_unmount 22 ++#define SYS_setuid 23 ++#define SYS_getuid 24 ++#define SYS_geteuid 25 ++#define SYS_ptrace 26 ++#define SYS_recvmsg 27 ++#define SYS_sendmsg 28 ++#define SYS_recvfrom 29 ++#define SYS_accept 30 ++#define SYS_getpeername 31 ++#define SYS_getsockname 32 ++#define SYS_access 33 ++#define SYS_chflags 34 ++#define SYS_fchflags 35 ++#define SYS_sync 36 ++#define SYS_kill 37 ++ /* 38 is old stat */ ++#define SYS_getppid 39 ++ /* 40 is old lstat */ ++#define SYS_dup 41 ++#define SYS_pipe 42 ++#define SYS_getegid 43 ++#define SYS_profil 44 ++#define SYS_ktrace 45 ++ /* 46 is old sigaction */ ++#define SYS_getgid 47 ++ /* 48 is old sigprocmask */ ++#define SYS_getlogin 49 ++#define SYS_setlogin 50 ++#define SYS_acct 51 ++ /* 52 is old sigpending */ ++#define SYS_sigaltstack 53 ++#define SYS_ioctl 54 ++#define SYS_reboot 55 ++#define SYS_revoke 56 ++#define SYS_symlink 57 ++#define SYS_readlink 58 ++#define SYS_execve 59 ++#define SYS_umask 60 ++#define SYS_chroot 61 ++ /* 62 is old fstat */ ++ /* 63 is old getkerninfo */ ++ /* 64 is old getpagesize */ ++#define SYS_msync 65 ++#define SYS_vfork 66 ++ /* 67 is obsolete vread */ ++ /* 68 is obsolete vwrite */ ++#define SYS_sbrk 69 ++#define SYS_sstk 70 ++ /* 71 is old mmap */ ++#define SYS_vadvise 72 ++#define SYS_munmap 73 ++#define SYS_mprotect 74 ++#define SYS_madvise 75 ++ /* 76 is obsolete vhangup */ ++ /* 77 is obsolete vlimit */ ++#define SYS_mincore 78 ++#define SYS_getgroups 79 ++#define SYS_setgroups 80 ++#define SYS_getpgrp 81 ++#define SYS_setpgid 82 ++#define SYS_setitimer 83 ++ /* 84 is old wait */ ++#define SYS_swapon 85 ++#define SYS_getitimer 86 ++ /* 87 is old gethostname */ ++ /* 88 is old sethostname */ ++#define SYS_getdtablesize 89 ++#define SYS_dup2 90 ++#define SYS_fcntl 92 ++#define SYS_select 93 ++#define SYS_fsync 95 ++#define SYS_setpriority 96 ++#define SYS_socket 97 ++#define SYS_connect 98 ++ /* 99 is old accept */ ++#define SYS_getpriority 100 ++ /* 101 is old send */ ++ /* 102 is old recv */ ++ /* 103 is old sigreturn */ ++#define SYS_bind 104 ++#define SYS_setsockopt 105 ++#define SYS_listen 106 ++ /* 107 is obsolete vtimes */ ++ /* 108 is old sigvec */ ++ /* 109 is old sigblock */ ++ /* 110 is old sigsetmask */ ++ /* 111 is old sigsuspend */ ++ /* 112 is old sigstack */ ++ /* 113 is old recvmsg */ ++ /* 114 is old sendmsg */ ++ /* 115 is obsolete vtrace */ ++#define SYS_gettimeofday 116 ++#define SYS_getrusage 117 ++#define SYS_getsockopt 118 ++#define SYS_readv 120 ++#define SYS_writev 121 ++#define SYS_settimeofday 122 ++#define SYS_fchown 123 ++#define SYS_fchmod 124 ++ /* 125 is old recvfrom */ ++#define SYS_setreuid 126 ++#define SYS_setregid 127 ++#define SYS_rename 128 ++ /* 129 is old truncate */ ++ /* 130 is old ftruncate */ ++#define SYS_flock 131 ++#define SYS_mkfifo 132 ++#define SYS_sendto 133 ++#define SYS_shutdown 134 ++#define SYS_socketpair 135 ++#define SYS_mkdir 136 ++#define SYS_rmdir 137 ++#define SYS_utimes 138 ++ /* 139 is obsolete 4.2 sigreturn */ ++#define SYS_adjtime 140 ++ /* 141 is old getpeername */ ++ /* 142 is old gethostid */ ++ /* 143 is old sethostid */ ++ /* 144 is old getrlimit */ ++ /* 145 is old setrlimit */ ++ /* 146 is old killpg */ ++#define SYS_setsid 147 ++#define SYS_quotactl 148 ++ /* 149 is old quota */ ++ ++#define SYS_nlm_syscall 154 ++ /* 150 is old getsockname */ ++#define SYS_nfssvc 155 ++ /* 156 is old getdirentries */ ++#define SYS_freebsd4_statfs 157 ++#define SYS_freebsd4_fstatfs 158 ++#define SYS_lgetfh 160 ++#define SYS_getfh 161 ++#define SYS_freebsd4_getdomainname 162 ++#define SYS_freebsd4_setdomainname 163 ++#define SYS_freebsd4_uname 164 ++#define SYS_sysarch 165 ++#define SYS_rtprio 166 ++#define SYS_semsys 169 ++#define SYS_msgsys 170 ++#define SYS_shmsys 171 ++#define SYS_freebsd6_pread 173 ++#define SYS_freebsd6_pwrite 174 ++#define SYS_ntp_adjtime 176 ++#define SYS_setgid 181 ++#define SYS_setegid 182 ++#define SYS_seteuid 183 ++#define SYS_stat 188 ++#define SYS_fstat 189 ++#define SYS_lstat 190 ++#define SYS_pathconf 191 ++#define SYS_fpathconf 192 ++#define SYS_getrlimit 194 ++#define SYS_setrlimit 195 ++#define SYS_getdirentries 196 ++#define SYS_freebsd6_mmap 197 ++#define SYS___syscall 198 ++#define SYS_freebsd6_lseek 199 ++#define SYS_freebsd6_truncate 200 ++#define SYS_freebsd6_ftruncate 201 ++#define SYS_sysctl 202 ++#define SYS_mlock 203 ++#define SYS_munlock 204 ++#define SYS_undelete 205 ++#define SYS_futimes 206 ++#define SYS_getpgid 207 ++#define SYS_poll 209 ++#define SYS_semctl 220 ++#define SYS_semget 221 ++#define SYS_semop 222 ++#define SYS_msgctl 224 ++#define SYS_msgget 225 ++#define SYS_msgsnd 226 ++#define SYS_msgrcv 227 ++#define SYS_shmat 228 ++#define SYS_shmctl 229 ++#define SYS_shmdt 230 ++#define SYS_shmget 231 ++#define SYS_clock_gettime 232 ++#define SYS_clock_settime 233 ++#define SYS_clock_getres 234 ++#define SYS_ktimer_create 235 ++#define SYS_ktimer_delete 236 ++#define SYS_ktimer_settime 237 ++#define SYS_ktimer_gettime 238 ++#define SYS_ktimer_getoverrun 239 ++#define SYS_nanosleep 240 ++#define SYS_ntp_gettime 248 ++#define SYS_minherit 250 ++#define SYS_rfork 251 ++#define SYS_openbsd_poll 252 ++#define SYS_issetugid 253 ++#define SYS_lchown 254 ++#define SYS_aio_read 255 ++#define SYS_aio_write 256 ++#define SYS_lio_listio 257 ++#define SYS_getdents 272 ++#define SYS_lchmod 274 ++#define SYS_netbsd_lchown 275 ++#define SYS_lutimes 276 ++#define SYS_netbsd_msync 277 ++#define SYS_nstat 278 ++#define SYS_nfstat 279 ++#define SYS_nlstat 280 ++#define SYS_preadv 289 ++#define SYS_pwritev 290 ++#define SYS_freebsd4_fhstatfs 297 ++#define SYS_fhopen 298 ++#define SYS_fhstat 299 ++#define SYS_modnext 300 ++#define SYS_modstat 301 ++#define SYS_modfnext 302 ++#define SYS_modfind 303 ++#define SYS_kldload 304 ++#define SYS_kldunload 305 ++#define SYS_kldfind 306 ++#define SYS_kldnext 307 ++#define SYS_kldstat 308 ++#define SYS_kldfirstmod 309 ++#define SYS_getsid 310 ++#define SYS_setresuid 311 ++#define SYS_setresgid 312 ++ /* 313 is obsolete signanosleep */ ++#define SYS_aio_return 314 ++#define SYS_aio_suspend 315 ++#define SYS_aio_cancel 316 ++#define SYS_aio_error 317 ++#define SYS_oaio_read 318 ++#define SYS_oaio_write 319 ++#define SYS_olio_listio 320 ++#define SYS_yield 321 ++ /* 322 is obsolete thr_sleep */ ++ /* 323 is obsolete thr_wakeup */ ++#define SYS_mlockall 324 ++#define SYS_munlockall 325 ++#define SYS_getcwd 326 ++#define SYS_sched_setparam 327 ++#define SYS_sched_getparam 328 ++#define SYS_sched_setscheduler 329 ++#define SYS_sched_getscheduler 330 ++#define SYS_sched_yield 331 ++#define SYS_sched_get_priority_max 332 ++#define SYS_sched_get_priority_min 333 ++#define SYS_sched_rr_get_interval 334 ++#define SYS_utrace 335 ++#define SYS_freebsd4_sendfile 336 ++#define SYS_kldsym 337 ++#define SYS_jail 338 ++#define SYS_sigprocmask 340 ++#define SYS_sigsuspend 341 ++#define SYS_freebsd4_sigaction 342 ++#define SYS_sigpending 343 ++#define SYS_freebsd4_sigreturn 344 ++#define SYS_sigtimedwait 345 ++#define SYS_sigwaitinfo 346 ++#define SYS_acl_get_file 347 ++#define SYS_acl_set_file 348 ++#define SYS_acl_get_fd 349 ++#define SYS_acl_set_fd 350 ++#define SYS_acl_delete_file 351 ++#define SYS_acl_delete_fd 352 ++#define SYS_acl_aclcheck_file 353 ++#define SYS_acl_aclcheck_fd 354 ++#define SYS_extattrctl 355 ++#define SYS_extattr_set_file 356 ++#define SYS_extattr_get_file 357 ++#define SYS_extattr_delete_file 358 ++#define SYS_aio_waitcomplete 359 ++#define SYS_getresuid 360 ++#define SYS_getresgid 361 ++#define SYS_kqueue 362 ++#define SYS_kevent 363 ++#define SYS_extattr_set_fd 371 ++#define SYS_extattr_get_fd 372 ++#define SYS_extattr_delete_fd 373 ++#define SYS_setugid 374 ++#define SYS_nfsclnt 375 ++#define SYS_eaccess 376 ++#define SYS_nmount 378 ++#define SYS_mac_get_proc 384 ++#define SYS_mac_set_proc 385 ++#define SYS_mac_get_fd 386 ++#define SYS_mac_get_file 387 ++#define SYS_mac_set_fd 388 ++#define SYS_mac_set_file 389 ++#define SYS_kenv 390 ++#define SYS_lchflags 391 ++#define SYS_uuidgen 392 ++#define SYS_sendfile 393 ++#define SYS_mac_syscall 394 ++#define SYS_getfsstat 395 ++#define SYS_statfs 396 ++#define SYS_fstatfs 397 ++#define SYS_fhstatfs 398 ++#define SYS_ksem_close 400 ++#define SYS_ksem_post 401 ++#define SYS_ksem_wait 402 ++#define SYS_ksem_trywait 403 ++#define SYS_ksem_init 404 ++#define SYS_ksem_open 405 ++#define SYS_ksem_unlink 406 ++#define SYS_ksem_getvalue 407 ++#define SYS_ksem_destroy 408 ++#define SYS_mac_get_pid 409 ++#define SYS_mac_get_link 410 ++#define SYS_mac_set_link 411 ++#define SYS_extattr_set_link 412 ++#define SYS_extattr_get_link 413 ++#define SYS_extattr_delete_link 414 ++#define SYS_mac_execve 415 ++#define SYS_sigaction 416 ++#define SYS_sigreturn 417 ++#define SYS_getcontext 421 ++#define SYS_setcontext 422 ++#define SYS_swapcontext 423 ++#define SYS_swapoff 424 ++#define SYS_acl_get_link 425 ++#define SYS_acl_set_link 426 ++#define SYS_acl_delete_link 427 ++#define SYS_acl_aclcheck_link 428 ++#define SYS_sigwait 429 ++#define SYS_thr_create 430 ++#define SYS_thr_exit 431 ++#define SYS_thr_self 432 ++#define SYS_thr_kill 433 ++#define SYS__umtx_lock 434 ++#define SYS__umtx_unlock 435 ++#define SYS_jail_attach 436 ++#define SYS_extattr_list_fd 437 ++#define SYS_extattr_list_file 438 ++#define SYS_extattr_list_link 439 ++#define SYS_ksem_timedwait 441 ++#define SYS_thr_suspend 442 ++#define SYS_thr_wake 443 ++#define SYS_kldunloadf 444 ++#define SYS_audit 445 ++#define SYS_auditon 446 ++#define SYS_getauid 447 ++#define SYS_setauid 448 ++#define SYS_getaudit 449 ++#define SYS_setaudit 450 ++#define SYS_getaudit_addr 451 ++#define SYS_setaudit_addr 452 ++#define SYS_auditctl 453 ++#define SYS__umtx_op 454 ++#define SYS_thr_new 455 ++#define SYS_sigqueue 456 ++#define SYS_kmq_open 457 ++#define SYS_kmq_setattr 458 ++#define SYS_kmq_timedreceive 459 ++#define SYS_kmq_timedsend 460 ++#define SYS_kmq_notify 461 ++#define SYS_kmq_unlink 462 ++#define SYS_abort2 463 ++#define SYS_thr_set_name 464 ++#define SYS_aio_fsync 465 ++#define SYS_rtprio_thread 466 ++#define SYS_sctp_peeloff 471 ++#define SYS_sctp_generic_sendmsg 472 ++#define SYS_sctp_generic_sendmsg_iov 473 ++#define SYS_sctp_generic_recvmsg 474 ++#define SYS_pread 475 ++#define SYS_pwrite 476 ++#define SYS_mmap 477 ++#define SYS_lseek 478 ++#define SYS_truncate 479 ++#define SYS_ftruncate 480 ++#define SYS_thr_kill2 481 ++#define SYS_shm_open 482 ++#define SYS_shm_unlink 483 ++#define SYS_cpuset 484 ++#define SYS_cpuset_setid 485 ++#define SYS_cpuset_getid 486 ++#define SYS_cpuset_getaffinity 487 ++#define SYS_cpuset_setaffinity 488 ++#define SYS_faccessat 489 ++#define SYS_fchmodat 490 ++#define SYS_fchownat 491 ++#define SYS_fexecve 492 ++#define SYS_fstatat 493 ++#define SYS_futimesat 494 ++#define SYS_linkat 495 ++#define SYS_mkdirat 496 ++#define SYS_mkfifoat 497 ++#define SYS_mknodat 498 ++#define SYS_openat 499 ++#define SYS_readlinkat 500 ++#define SYS_renameat 501 ++#define SYS_symlinkat 502 ++#define SYS_unlinkat 503 ++#define SYS_posix_openpt 504 ++#define SYS_gssd_syscall 505 ++#define SYS_jail_get 506 ++#define SYS_jail_set 507 ++#define SYS_jail_remove 508 ++#define SYS_pselect 522 ++#define SYS_getloginclass 523 ++#define SYS_setloginclass 524 ++#define SYS_rctl_get_racct 525 ++#define SYS_rctl_get_rules 526 ++#define SYS_rctl_get_limits 527 ++#define SYS_rctl_add_rule 528 ++#define SYS_rctl_remove_rule 529 ++#define SYS_posix_fallocate 530 ++#define SYS_MAXSYSCALL 532 ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/sysmacros.h +@@ -0,0 +1,36 @@ ++/* Definitions of macros to access `dev_t' values. FreeBSD version. ++ Copyright (C) 1996-1997, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_SYSMACROS_H ++#define _SYS_SYSMACROS_H 1 ++ ++/* For compatibility we provide alternative names. ++ ++ The problem here is that compilers other than GCC probably don't ++ have the `long long' type and so `dev_t' is actually an array. */ ++#define major(dev) ((int)(((unsigned int) (dev) >> 8) & 0xff)) ++#define minor(dev) ((int)((dev) & 0xffff00ff)) ++#define makedev(major, minor) (((major) << 8) | (minor)) ++ ++/* Access the functions with their new names. */ ++#define gnu_dev_major(dev) major (dev) ++#define gnu_dev_minor(dev) minor (dev) ++#define gnu_dev_makedev(maj, min) makedev (maj, min) ++ ++#endif /* sys/sysmacros.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ttydefaults.h +@@ -0,0 +1,97 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * (c) UNIX System Laboratories, Inc. ++ * All or some portions of this file are derived from material licensed ++ * to the University of California by American Telephone and Telegraph ++ * Co. or Unix System Laboratories, Inc. and are reproduced herein with ++ * the permission of UNIX System Laboratories, Inc. ++ * ++ * 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)ttydefaults.h 8.4 (Berkeley) 1/21/94 ++ */ ++ ++/* ++ * System wide defaults for terminal state. FreeBSD version. ++ */ ++#ifndef _SYS_TTYDEFAULTS_H_ ++#define _SYS_TTYDEFAULTS_H_ ++ ++/* ++ * Defaults on "first" open. ++ */ ++#define TTYDEF_IFLAG (BRKINT | ICRNL | IMAXBEL | IXON | IXANY) ++#define TTYDEF_OFLAG (OPOST | ONLCR) ++#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL) ++#define TTYDEF_CFLAG (CREAD | CS8 | HUPCL) ++#define TTYDEF_SPEED (B9600) ++ ++/* ++ * Control Character Defaults ++ */ ++#define CTRL(x) (x&037) ++#define CEOF CTRL('d') ++#ifdef _POSIX_VDISABLE ++# define CEOL _POSIX_VDISABLE ++#else ++# define CEOL ((unsigned char)'\377') /* XXX avoid _POSIX_VDISABLE */ ++#endif ++#define CERASE 0177 ++#define CERASE2 CTRL('h') ++#define CINTR CTRL('c') ++#define CSTATUS CTRL('t') ++#define CKILL CTRL('u') ++#define CMIN 1 ++#define CQUIT 034 /* FS, ^\ */ ++#define CSUSP CTRL('z') ++#define CTIME 0 ++#define CDSUSP CTRL('y') ++#define CSTART CTRL('q') ++#define CSTOP CTRL('s') ++#define CLNEXT CTRL('v') ++#define CDISCARD CTRL('o') ++#define CWERASE CTRL('w') ++#define CREPRINT CTRL('r') ++#define CEOT CEOF ++/* compat */ ++#define CBRK CEOL ++#define CRPRNT CREPRINT ++#define CFLUSH CDISCARD ++ ++/* PROTECTED INCLUSION ENDS HERE */ ++#endif /* !_SYS_TTYDEFAULTS_H_ */ ++ ++/* ++ * #define TTYDEFCHARS to include an array of default control characters. ++ */ ++#ifdef TTYDEFCHARS ++cc_t ttydefchars[NCCS] = { ++ CEOF, CEOL, CEOL, CERASE, CWERASE, CKILL, CREPRINT, ++ CERASE2, CINTR, CQUIT, CSUSP, CDSUSP, CSTART, CSTOP, CLNEXT, ++ CDISCARD, CMIN, CTIME, CSTATUS, _POSIX_VDISABLE ++}; ++#undef TTYDEFCHARS ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sys/ucontext.h +@@ -0,0 +1,48 @@ ++/* Data structures for user-level context switching. Generic version. ++ Copyright (C) 1997-1999, 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This file's definitions suffice for any platform where all ++ the machine-specific state is described in `struct sigcontext'. */ ++ ++#ifndef _SYS_UCONTEXT_H ++#define _SYS_UCONTEXT_H 1 ++ ++#include ++#include ++ ++/* We need the signal context definitions even if they are not used ++ included in . */ ++#include ++ ++/* This include file defines the type 'mcontext_t'. */ ++#include ++ ++/* Userlevel context. */ ++typedef struct ucontext ++ { ++ __sigset_t uc_sigmask; ++ mcontext_t uc_mcontext; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ int uc_flags; ++#define UCF_SWAPPED 0x00000001 /* Used by swapcontext(3). */ ++ int __unused1[4]; ++ } ucontext_t; ++ ++#endif /* sys/ucontext.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls-inline.h +@@ -0,0 +1,59 @@ ++/* prototypes of generally used "inline syscalls" ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef KFREEBSD_INLINE_SYSCALLS_H ++#define KFREEBSD_INLINE_SYSCALLS_H ++ ++#include ++#define __need_sigset_t ++#include ++ ++#include ++ ++struct iovec; ++struct rusage; ++struct timespec; ++ ++int __syscall_open(const char *path, int flags, ...); ++int __syscall_close(int fd); ++libc_hidden_proto (__syscall_open) ++libc_hidden_proto (__syscall_close) ++ ++ssize_t __syscall_read(int fd, void *buf, size_t nbyte); ++ssize_t __syscall_write(int fd, const void *buf, size_t nbyte); ++ssize_t __syscall_writev(int fd, const struct iovec *iovp, int iovcnt); ++libc_hidden_proto (__syscall_read) ++libc_hidden_proto (__syscall_write) ++libc_hidden_proto (__syscall_writev) ++ ++ssize_t __syscall_readlink(const char *path, char *buf, size_t bufsiz); ++libc_hidden_proto (__syscall_readlink) ++ ++int __syscall_fcntl(int fd, int cmd, ...); ++int __syscall_fork(void); ++int __syscall_wait4(int pid, int *status, int options, struct rusage *rusage); ++int __syscall_sigsuspend (const sigset_t *set); ++int __syscall_nanosleep (const struct timespec *requested_time, struct timespec *remaining); ++libc_hidden_proto (__syscall_fcntl) ++libc_hidden_proto (__syscall_fork) ++libc_hidden_proto (__syscall_wait4) ++libc_hidden_proto (__syscall_sigsuspend) ++libc_hidden_proto (__syscall_nanosleep) ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/syscalls.list +@@ -0,0 +1,194 @@ ++# File name Caller Syscall name # args Strong name Weak names ++sys_access - access i:si __syscall_access ++acl_aclcheck_fd - acl_aclcheck_fd i:iip __acl_aclcheck_fd ++acl_aclcheck_file - acl_aclcheck_file i:sip __acl_aclcheck_file ++acl_delete_fd - acl_delete_fd i:ii __acl_delete_fd ++acl_delete_file - acl_delete_file i:si __acl_delete_file ++acl_get_fd - acl_get_fd i:iip __acl_get_fd ++acl_get_file - acl_get_file i:sip __acl_get_file ++acl_set_fd - acl_set_fd i:iip __acl_set_fd ++acl_set_file - acl_set_file i:sip __acl_set_file ++sys_aio_cancel - aio_cancel i:ip __syscall_aio_cancel ++sys_aio_error - aio_error i:p __syscall_aio_error ++sys_aio_read - aio_read i:p __syscall_aio_read ++sys_aio_return - aio_return i:p __syscall_aio_return ++sys_aio_suspend - aio_suspend i:bnP __syscall_aio_suspend ++sys_aio_waitcomplete - aio_waitcomplete i:pp __syscall_aio_waitcomplete ++sys_aio_write - aio_write i:p __syscall_aio_write ++sys_clock_getres - clock_getres i:ip __syscall_clock_getres ++sys_clock_gettime - clock_gettime i:ip __syscall_clock_gettime ++sys_clock_settime - clock_settime i:ip __syscall_clock_settime ++sys_execve - execve i:ppp __syscall_execve ++extattrctl - extattrctl i:sisI extattrctl ++extattr_delete_file - extattr_delete_file i:ss extattr_delete_file ++extattr_get_file - extattr_get_file i:ssbn extattr_get_file ++extattr_set_file - extattr_set_file i:ssbn extattr_set_file ++fhopen - fhopen i:pi fhopen ++sys_fork - fork i: __syscall_fork fork ++sys_fhstat - fhstat i:pp __syscall_fhstat ++sys_getfsstat - getfsstat i:pii __syscall_getfsstat ++sys_statfs - statfs i:sp __syscall_statfs ++sys_fstatfs - fstatfs i:ip __syscall_fstatfs ++sys_fhstatfs - fhstatfs i:pp __syscall_fhstatfs ++sys_fstat - fstat i:ip __syscall_fstat ++sys_ftruncate - ftruncate i:ii __syscall_ftruncate ++sys_freebsd6_ftruncate - freebsd6_ftruncate i:iii __syscall_freebsd6_ftruncate ++futimes - futimes i:ip __futimes futimes ++sys_getcwd - getcwd i:bn __syscall_getcwd ++sys_getdents - getdents i:ibn __syscall_getdents ++sys_getdirentries - getdirentries i:ibnP __syscall_getdirentries ++getfh - getfh i:sp getfh ++sys_getlogin - getlogin i:bn __syscall_getlogin ++getpgid - getpgid i:i __getpgid __getpgid_internal getpgid ++getpgrp - getpgrp i: getpgrp ++getresgid - getresgid i:ppp getresgid ++getresuid - getresuid i:ppp getresuid ++getrlimit - getrlimit i:ip __getrlimit getrlimit getrlimit64 ++getsid - getsid i:i getsid ++issetugid - issetugid i: issetugid ++jail - jail i:p jail ++jail_attach - jail_attach i:i jail_attach ++jail_remove - jail_remove i:i jail_remove ++jail_get - jail_get i:pii jail_get ++jail_set - jail_set i:pii jail_set ++kenv - kenv i:issi kenv ++kldfind - kldfind i:s kldfind ++kldfirstmod - kldfirstmod i:i kldfirstmod ++kldload - kldload i:s kldload ++kldnext - kldnext i:i kldnext ++kldstat - kldstat i:ip kldstat ++kldsym - kldsym i:iip kldsym ++kldunload - kldunload i:i kldunload ++kldunloadf - kldunloadf i:ii kldunloadf ++ktrace - ktrace i:siii ktrace ++lchflags - lchflags i:si lchflags ++lchmod - lchmod i:si __lchmod lchmod ++lchown - lchown i:sii __lchown lchown ++sys_lio_listio - lio_listio i:ibnP __syscall_lio_listio ++sys_lseek - lseek i:iii __syscall_lseek ++sys_freebsd6_lseek - freebsd6_lseek i:iiii __syscall_freebsd6_lseek ++sys_lstat - lstat i:sp __syscall_lstat ++lutimes - lutimes i:sp __lutimes lutimes ++posix_madvise - madvise i:pii posix_madvise ++minherit - minherit i:aii minherit ++mincore - mincore i:anV mincore ++mlock - mlock i:bn mlock ++mlockall - mlockall i:i mlockall ++mkfifo - mkfifo i:si __mkfifo mkfifo ++sys_mknod - mknod i:sii __syscall_mknod ++sys_mmap - mmap b:aniiii __syscall_mmap ++sys_freebsd6_mmap - freebsd6_mmap b:aniiiii __syscall_freebsd6_mmap ++sys_munmap - munmap i:pi __syscall_munmap ++modfind - modfind i:s modfind ++modfnext - modfnext i:i modfnext ++modnext - modnext i:i modnext ++modstat - modstat i:ip modstat ++mount - mount i:ssiP mount ++msgctl - msgctl i:iip msgctl ++msgget - msgget i:ii msgget ++msgrcv - msgrcv Ci:ibnii __libc_msgrcv msgrcv ++msgsnd - msgsnd Ci:ibni __libc_msgsnd msgsnd ++munlock - munlock i:ai munlock ++munlockall - munlockall i: munlockall ++nanosleep - nanosleep Ci:pp __libc_nanosleep __nanosleep nanosleep ++nfssvc - nfssvc i:ip nfssvc ++nlm_syscall - nlm_syscall i:iiip nlm_syscall ++nmount - nmount i:pii nmount ++sys_nfstat - nfstat i:ip __syscall_nfstat ++sys_nlstat - nlstat i:sp __syscall_nlstat ++sys_nstat - nstat i:sp __syscall_nstat ++ntp_adjtime - ntp_adjtime i:p ntp_adjtime ++obreak - obreak i:a __syscall_obreak ++sys_open - open i:siv __syscall_open ++poll - poll Ci:pii __poll poll ++sys_pread - pread i:ibni __syscall_pread ++sys_freebsd6_pread - freebsd6_pread i:ibnii __syscall_freebsd6_pread ++sys_pwrite - pwrite i:ibni __syscall_pwrite ++sys_freebsd6_pwrite - freebsd6_pwrite i:ibnii __syscall_freebsd6_pwrite ++preadv - preadv Ci:ipii __preadv preadv __preadv64 preadv64 ++pwritev - pwritev Ci:ipii __pwritev pwritev __pwritev64 pwritev64 ++quotactl - quotactl i:siip quotactl ++sys_readv - readv i:ipi __syscall_readv ++rfork - rfork i:i __rfork rfork ++rtprio - rtprio i:iip __rtprio rtprio ++sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler ++sched_primax - sched_get_priority_max i:i __sched_get_priority_max sched_get_priority_max ++sched_primin - sched_get_priority_min i:i __sched_get_priority_min sched_get_priority_min ++sched_rr_gi - sched_rr_get_interval i:ip __sched_rr_get_interval sched_rr_get_interval ++sched_setp - sched_setparam i:ip __sched_setparam sched_setparam ++sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler ++sched_yield - sched_yield i: __sched_yield sched_yield ++semget - semget i:iii semget ++semop - semop i:ipi semop ++sys_semctl - semctl i:iiip __syscall_semctl ++bsd_sendfile - sendfile i:iiiippi bsd_sendfile ++setegid - setegid i:i setegid ++seteuid - seteuid i:i seteuid ++setgid - setgid i:i __setgid setgid ++sys_setlogin - setlogin i:s __syscall_setlogin ++setpgid - setpgid i:ii __setpgid setpgid ++setresgid - setresgid i:iii setresgid ++setresuid - setresuid i:iii setresuid ++setrlimit - setrlimit i:ip __setrlimit setrlimit setrlimit64 ++setsid - setsid i: __setsid setsid ++setuid - setuid i:i __setuid setuid ++shmat - shmat i:iai shmat ++shmctl - shmctl i:iip shmctl ++shmdt - shmdt i:a shmdt ++shmget - shmget i:iii shmget ++sys_sigaction - sigaction i:ipp __syscall_sigaction ++sigpending - sigpending i:p sigpending ++sigprocmask - sigprocmask i:iPP __sigprocmask sigprocmask ++sigsuspend - sigsuspend Ci:p __sigsuspend sigsuspend ++sigwaitinfo - sigwaitinfo Ci:pp __sigwaitinfo sigwaitinfo ++sigtimedwait - sigtimedwait Ci:ppP __sigtimedwait sigtimedwait ++sigqueue - sigqueue i:iii __sigqueue sigqueue ++sys_stat - stat i:sp __syscall_stat ++sysarch - sysarch i:ip __sysarch sysarch ++sysctl - sysctl i:pibNbn __sysctl sysctl ++sys_truncate - truncate i:sii __syscall_truncate ++sys_freebsd6_truncate - freebsd6_truncate i:si __syscall_freebsd6_truncate ++undelete - undelete i:s undelete ++unmount - unmount i:si unmount ++utrace - utrace i:bn utrace ++sys_writev - writev i:ipi __syscall_writev ++yield - yield i: __syscall_yield ++wait4 - wait4 i:iWiP __syscall_wait4 __wait4 wait4 ++sys_close - close i:i __syscall_close ++sys_fcntl - fcntl i:iiF __syscall_fcntl ++sys_write - write i:ibn __syscall_write ++sys_read - read i:ibn __syscall_read ++sys_connect - connect i:ipi __syscall_connect ++sys_bind - bind i:ipi __syscall_bind ++sys_sendto - sendto i:ibnibn __syscall_sendto ++sys_nanosleep EXTRA nanosleep i:pp __syscall_nanosleep ++sys_sigsuspend EXTRA sigsuspend i:p __syscall_sigsuspend ++swapcontext - swapcontext i:pp __swapcontext swapcontext ++swapon - swapon i:s swapon ++swapoff - swapoff i:s swapoff ++getcontext - getcontext i:p __getcontext getcontext ++setcontext - setcontext i:p __setcontext setcontext ++kqueue EXTRA kqueue i: __kqueue kqueue ++kevent EXTRA kevent i:ipipip __kevent kevent ++sys_umtx - _umtx_op i:piipp __syscall__umtx_op ++sys_cpuset_getaffinity - cpuset_getaffinity i:iiiip __syscall_cpuset_getaffinity ++sys_cpuset_setaffinity - cpuset_setaffinity i:iiiip __syscall_cpuset_setaffinity ++sys_faccessat - faccessat i:isii __syscall_faccessat ++sys_fchmodat - fchmodat i:isii __syscall_fchmodat ++sys_fchownat - fchownat i:isiii __syscall_fchownat ++sys_fexecve - fexecve i:ipp __syscall_fexecve ++sys_fstatat - fstatat i:ispi __syscall_fstatat ++sys_futimesat - futimesat i:isp __syscall_futimesat ++sys_linkat - linkat i:isisi __syscall_linkat ++sys_mkdirat - mkdirat i:isi __syscall_mkdirat ++sys_mkfifoat - mkfifoat i:isi __syscall_mkfifoat ++sys_mknodat - mknodat i:isii __syscall_mknodat ++sys_openat - openat i:isii __syscall_openat ++sys_readlinkat - readlinkat i:issi __syscall_readlinkat ++sys_renameat - renameat i:isis __syscall_renameat ++sys_symlinkat - symlinkat i:sis __syscall_symlinkat ++sys_unlinkat - unlinkat i:isi __syscall_unlinkat ++sys_shm_open - shm_open i:sii __syscall_shm_open ++sys_shm_unlink - shm_unlink i:s __syscall_shm_unlink ++readlink - readlink i:spi __syscall_readlink __readlink readlink ++sys_pselect - pselect i:iPPPPP __syscall_pselect +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sysconf.c +@@ -0,0 +1,69 @@ ++/* Get file-specific information about a file. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static long int posix_sysconf (int name); ++ ++/* Get the value of the system variable NAME. */ ++long int ++__sysconf (int name) ++{ ++ int request[2]; ++ int value; ++ size_t len = sizeof(value); ++ ++ switch(name) ++ { ++ case _SC_CPUTIME: ++ case _SC_THREAD_CPUTIME: ++#if HP_TIMING_AVAIL ++ // XXX We can add here test for machines which cannot support a ++ // XXX usable TSC. ++ return 200809L; ++#else ++ return -1; ++#endif ++ case _SC_NGROUPS_MAX: ++ request[0] = CTL_KERN; ++ request[1] = KERN_NGROUPS; ++ if (__sysctl(request, 2, &value, &len, NULL, 0) == -1) ++ return NGROUPS_MAX; ++ return (long)value; ++ case _SC_ARG_MAX: ++ request[0] = CTL_KERN; ++ request[1] = KERN_ARGMAX; ++ if (__sysctl(request, 2, &value, &len, NULL, 0) == -1) ++ return ARG_MAX; ++ return (long)value; ++ } ++ return posix_sysconf (name); ++} ++ ++/* Now the POSIX version. */ ++#undef __sysconf ++#define __sysconf static posix_sysconf ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sysctlbyname.c +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* Read or write system parameters. */ ++int ++__sysctlbyname (const char *name, void *oldval, size_t *oldlenp, void *newval, size_t newlen) ++{ ++ int request[CTL_MAXNAME+2]; ++ size_t requestlen = CTL_MAXNAME+2; ++ ++ if (__sysctlnametomib(name, request, &requestlen) < 0) ++ return -1; ++ ++ /* Now call sysctl using the binary encoded request. */ ++ return __sysctl (request, requestlen, ++ oldval, oldlenp, newval, newlen); ++} ++ ++weak_alias (__sysctlbyname, sysctlbyname) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/sysctlnametomib.c +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++int ++__sysctlnametomib (const char *name, int *mibp, size_t *sizep) ++{ ++ /* Convert the string NAME to a binary encoded request. The kernel ++ contains a routine for doing this, called "name2oid". But the way ++ to call it is a little bit strange. */ ++ int name2oid_request[2] = { 0, 3 }; ++ int retval; ++ ++ *sizep *= sizeof (int); ++ retval = __sysctl (name2oid_request, 2, mibp, sizep, (void *) name, strlen (name)); ++ *sizep /= sizeof (int); ++ return retval; ++} ++ ++weak_alias (__sysctlnametomib, sysctlnametomib) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/tcdrain.c +@@ -0,0 +1,41 @@ ++/* Copyright (C) 1995, 1996, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Wait for pending output to be written on FD. */ ++int ++__libc_tcdrain (int fd) ++{ ++ if (SINGLE_THREAD_P) ++ return __ioctl (fd, TIOCDRAIN); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = __ioctl (fd, TIOCDRAIN); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++weak_alias (__libc_tcdrain, tcdrain) ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/tcflow.c +@@ -0,0 +1,4 @@ ++/* just use internal functions */ ++#define tcgetattr __tcgetattr ++#define write __write ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/telldir.c +@@ -0,0 +1,2 @@ ++/* Avoid , which doesn't pass the testsuite. */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/testrtsig.h +@@ -0,0 +1,44 @@ ++/* Test whether RT signals are really available. ++ Copyright (C) 2008 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++ ++static int ++kernel_has_rtsig (void) ++{ ++#if __ASSUME_REALTIME_SIGNALS ++ return 1; ++#else ++ ++ int request[2] = { CTL_KERN, KERN_OSRELDATE}; ++ size_t len; ++ int val; ++ ++ len = sizeof (val); ++ if (__sysctl (request, 2, &val, &len, NULL, 0) < 0) ++ return 0; ++ if ( val < 700050) /* FreeBSD 7.0 is 700055 */ ++ return 0; ++ return 1; ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate.c +@@ -0,0 +1,52 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __syscall_truncate (const char *__file, __off_t __length) __THROW; ++libc_hidden_proto (__syscall_truncate) ++extern int __syscall_freebsd6_truncate (const char *__file, int __unused1, ++ __off_t __length) __THROW; ++libc_hidden_proto (__syscall_freebsd6_truncate) ++ ++int ++__truncate (const char *file, __off_t length) ++{ ++ int result; ++ ++ /* First try the new syscall. */ ++ result = INLINE_SYSCALL (truncate, 2, file, length); ++ ++#ifndef __ASSUME_TRUNCATE_SYSCALL ++ if (result == -1 && errno == ENOSYS) ++ /* New syscall not available, us the old one. */ ++ result = INLINE_SYSCALL (freebsd6_truncate, 3, file, 0, length); ++#endif ++ ++ return result; ++} ++ ++weak_alias (__truncate, truncate) ++ ++/* 'truncate64' is the same as 'truncate', because __off64_t == __off_t. */ ++strong_alias (__truncate, __truncate64) ++weak_alias (__truncate64, truncate64) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/truncate64.c +@@ -0,0 +1 @@ ++/* 'truncate64' is the same as 'truncate', because __off64_t == __off_t. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ttyname.c +@@ -0,0 +1,71 @@ ++/* Copyright (C) 1991,92,93,96,97,98,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Static buffer in `ttyname'. */ ++libc_freeres_ptr (static char *ttyname_buf); ++ ++static const char dev[] = "/dev"; ++ ++/* Return the pathname of the terminal FD is open on, or NULL on errors. ++ The returned storage is good only until the next call to this function. */ ++char * ++ttyname (fd) ++ int fd; ++{ ++ static size_t buflen; ++ struct fiodgname_arg fgn; ++ ++ /* isatty check, tcgetattr is used because it sets the correct ++ errno (EBADF resp. ENOTTY) on error. */ ++ struct termios term; ++ if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0)) ++ return NULL; ++ ++ if (buflen == 0) ++ { ++ buflen = 4095; ++ ttyname_buf = (char *) malloc (buflen + 1); ++ if (ttyname_buf == NULL) ++ { ++ buflen = 0; ++ return NULL; ++ } ++ } ++ ++ /* Prepare the result buffer. */ ++ memcpy (ttyname_buf, dev, sizeof (dev) - 1); ++ ttyname_buf[sizeof (dev) - 1] = '/'; ++ ++ fgn.buf = ttyname_buf + sizeof (dev); ++ fgn.len = buflen - sizeof (dev); ++ ++ if (__ioctl(fd, FIODGNAME, &fgn) == -1) ++ { ++ return NULL; ++ } ++ ++ return ttyname_buf; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ttyname_r.c +@@ -0,0 +1,78 @@ ++/* Copyright (C) 1991,92,93,95,96,97,98,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static const char dev[] = "/dev"; ++ ++/* Store at most BUFLEN character of the pathname of the terminal FD is ++ open on in BUF. Return 0 on success, otherwise an error number. */ ++int ++__ttyname_r (fd, buf, buflen) ++ int fd; ++ char *buf; ++ size_t buflen; ++{ ++ int ret; ++ struct fiodgname_arg fgn; ++ ++ /* Test for the absolute minimal size. This makes life easier inside ++ the loop. */ ++ if (!buf) ++ { ++ __set_errno (EINVAL); ++ return EINVAL; ++ } ++ ++ if (buflen < (int) (sizeof (dev) + 1)) ++ { ++ __set_errno (ERANGE); ++ return ERANGE; ++ } ++ ++ /* isatty check, tcgetattr is used because it sets the correct ++ errno (EBADF resp. ENOTTY) on error. */ ++ struct termios term; ++ if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0)) ++ return errno; ++ ++ /* Prepare the result buffer. */ ++ memcpy (buf, dev, sizeof (dev) - 1); ++ buf[sizeof (dev) - 1] = '/'; ++ ++ fgn.buf = buf + sizeof (dev); ++ fgn.len = buflen - sizeof (dev); ++ ++ ret = __ioctl(fd, FIODGNAME, &fgn); ++ if (ret == -1) ++ { ++ __set_errno (EBADF); ++ return EBADF; ++ } ++ ++ return 0; ++} ++ ++weak_alias (__ttyname_r, ttyname_r) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ulimit.c +@@ -0,0 +1,2 @@ ++/* just use linux variant */ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/uname.c +@@ -0,0 +1,110 @@ ++/* Copyright (C) 2002, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#define SYSNAME "GNU/kFreeBSD" ++#define SYSNAME_LEN 13 ++ ++/* Check for bounds in pre-processor */ ++#if SYSNAME_LEN > _UTSNAME_SYSNAME_LENGTH ++#error ++#endif ++ ++/* Put information about the system in NAME. */ ++int ++__uname (struct utsname *name) ++{ ++ int request[2] = { CTL_KERN }; ++ size_t len; ++ ++ /* Fill sysname: "uname -s". */ ++ strcpy (name->sysname, SYSNAME); ++ ++ /* Fill nodename: "uname -n". Fetch sysctl "kern.hostname". */ ++ request[1] = KERN_HOSTNAME; ++ len = sizeof (name->nodename); ++ if (__sysctl (request, 2, name->nodename, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->nodename)) ++ name->nodename[len] = '\0'; ++ } ++ ++ /* Fill release: "uname -r". Fetch sysctl "kern.osrelease". */ ++ request[1] = KERN_OSRELEASE; ++ len = sizeof (name->release); ++ if (__sysctl (request, 2, name->release, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->release)) ++ name->release[len] = '\0'; ++ } ++ ++ /* Fill version: "uname -v". Fetch sysctl "kern.version". */ ++ request[1] = KERN_VERSION; ++ len = sizeof (name->version); ++ if (__sysctl (request, 2, name->version, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->version)) ++ name->version[len] = '\0'; ++ } ++ ++ /* Remove trailing whitespace. Turn non-trailing whitespace to ++ spaces. */ ++ { ++ char *p0 = name->version; ++ char *p = p0 + __strnlen (p0, sizeof (name->version)); ++ ++ while (p > p0 && (p[-1] == '\t' || p[-1] == '\n' || p[-1] == ' ')) ++ *--p = '\0'; ++ ++ while (p > p0) ++ { ++ --p; ++ if (*p == '\t' || *p == '\n') ++ *p = ' '; ++ } ++ } ++ ++#ifdef __x86_64__ ++ /* Check for bounds in pre-processor */ ++# if 7 > _UTSNAME_MACHINE_LENGTH ++# error ++# endif ++ /* Pristine FreeBSD kernel would return "amd64". Avoid that. */ ++ strcpy (name->machine, "x86_64"); ++#else ++ /* Fill machine: "uname -m". Fetch sysctl "hw.machine". */ ++ request[0] = CTL_HW; ++ request[1] = HW_MACHINE; ++ len = sizeof (name->machine); ++ if (__sysctl (request, 2, name->machine, &len, NULL, 0) >= 0) ++ { ++ if (len < sizeof (name->machine)) ++ name->machine[len] = '\0'; ++ } ++#endif ++ ++ return 0; ++} ++libc_hidden_def (__uname) ++weak_alias (__uname, uname) ++libc_hidden_def (uname) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/unlinkat.c +@@ -0,0 +1,135 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_unlinkat (int fd, const char *file, int flag); ++libc_hidden_proto (__syscall_unlinkat) ++ ++libc_hidden_proto (__unlink) ++ ++/* Remove the link named NAME. */ ++int ++unlinkat (fd, file, flag) ++ int fd; ++ const char *file; ++ int flag; ++{ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result = INLINE_SYSCALL (unlinkat, 3, fd, file, flag); ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (flag & ~AT_REMOVEDIR) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ if (flag & AT_REMOVEDIR) ++ return __rmdir (file); ++ else ++ return __unlink (file); ++#endif ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/unlockpt.c +@@ -0,0 +1,45 @@ ++/* Copyright (C) 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++ ++int ++__unlockpt (int fd) ++{ ++ struct stat64 st; ++ ++ /* there is no need/way to do unlocking of slave pseudo-terminal device, ++ just check whether fd might be valid master pseudo-terminal device */ ++ ++ if (__fxstat64 (_STAT_VER, fd, &st) < 0) ++ return -1; ++ ++ if (!(S_ISCHR (st.st_mode))) ++ { ++ __set_errno (ENOTTY); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++weak_alias (__unlockpt, unlockpt) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/usleep.c +@@ -0,0 +1,50 @@ ++/* Implementation of the BSD usleep function using nanosleep. ++ Copyright (C) 1996-1997, 1999, 2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++usleep (useconds_t useconds) ++{ ++ unsigned int sec; ++ unsigned int usec; ++ struct timespec ts; ++ ++ /* POSIX:2001 says that useconds >= 1000000 is invalid; nevertheless let's ++ be forgiving. */ ++ if (__builtin_expect (useconds < 1000000, 1)) ++ { ++ sec = 0; ++ usec = useconds; ++ } ++ else ++ { ++ sec = useconds / 1000000; ++ usec = useconds % 1000000; ++ } ++ ++ ts.tv_sec = sec; ++ ts.tv_nsec = usec * 1000; /* Multiply as 32-bit integers. */ ++ ++ /* Note the usleep() is a cancellation point. But since we call ++ nanosleep() which itself is a cancellation point we do not have ++ to do anything here. */ ++ return __nanosleep (&ts, NULL); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/ustat.c +@@ -0,0 +1,66 @@ ++/* Return info on filesystem. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int ++ustat (dev_t dev, struct ustat *ubuf) ++{ ++ int mntcount; ++ struct statfs *mntlist; ++ ++ /* Search for the device among the f_mntfromname fields of all mounted ++ filesystems. */ ++ mntcount = __getmntinfo (&mntlist, 0); ++ if (mntcount == 0 && errno != 0) ++ return -1; ++ if (mntcount > 0) ++ { ++ int i; ++ ++ for (i = 0; i < mntcount; i++) ++ { ++ struct statfs *mnt = &mntlist[i]; ++ struct stat statbuf; ++ ++ if ((__strnlen (mnt->f_mntfromname, sizeof (mnt->f_mntfromname)) ++ < sizeof (mnt->f_mntfromname)) ++ && __xstat (_STAT_VER, mnt->f_mntfromname, &statbuf) >= 0 ++ && S_ISBLK (statbuf.st_mode) ++ && statbuf.st_rdev == dev) ++ { ++ /* Found the device. Now produce the result. */ ++ memset (ubuf, '\0', sizeof (struct ustat)); ++ ubuf->f_tfree = mnt->f_bfree; ++ ubuf->f_tinode = mnt->f_ffree; ++ return 0; ++ } ++ } ++ } ++ ++ /* DEV is not among the mounted devices. */ ++ __set_errno (EINVAL); ++ return -1; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/Makefile +@@ -0,0 +1,6 @@ ++# Additional functions: ++ ++ifeq ($(subdir),login) ++# For . ++sysdep_routines += utmpconv ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/bits/utmp.h +@@ -0,0 +1,50 @@ ++/* The `struct utmp' type, describing entries in the utmp file. For FreeBSD. ++ Copyright (C) 1993, 1996-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _UTMP_H ++# error "Never include directly; use instead." ++#endif ++ ++#include ++#include ++ ++ ++#define UT_NAMESIZE 16 ++#define UT_LINESIZE 8 ++#define UT_HOSTSIZE 16 ++ ++ ++struct lastlog ++ { ++ time_t ll_time; ++ char ll_line[UT_LINESIZE]; ++ char ll_host[UT_HOSTSIZE]; ++ }; ++ ++struct utmp ++ { ++ char ut_line[UT_LINESIZE]; ++ char ut_user[UT_NAMESIZE]; ++#define ut_name ut_user ++ char ut_host[UT_HOSTSIZE]; ++ __time_t ut_time; ++ }; ++ ++ ++#define _HAVE_UT_HOST 1 /* We have the ut_host field. */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmp.c +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __utmpx_to_utmp (const struct utmpx *, struct utmp *); ++ ++/* Copy the information in UTMPX to UTMP. */ ++void ++getutmp (const struct utmpx *utmpx, struct utmp *utmp) ++{ ++ if (__utmpx_to_utmp (utmpx, utmp) < 0) ++ memset (utmp, '\0', sizeof (struct utmp)); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutmpx.c +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __utmp_to_utmpx (const struct utmp *, struct utmpx *); ++ ++/* Copy the information in UTMP to UTMPX. */ ++void ++getutmpx (const struct utmp *utmp, struct utmpx *utmpx) ++{ ++ if (__utmp_to_utmpx (utmp, utmpx) < 0) ++ memset (utmpx, '\0', sizeof (struct utmpx)); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxent.c +@@ -0,0 +1,46 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __utmp_to_utmpx (const struct utmp *, struct utmpx *); ++ ++/* Static buffer to store the result. */ ++static struct utmpx buffer; ++ ++struct utmpx * ++__getutxent (void) ++{ ++ for (;;) ++ { ++ struct utmp *tmp = __getutent (); ++ ++ if (tmp == NULL) ++ return NULL; ++ ++ if (__utmp_to_utmpx (tmp, &buffer) >= 0) ++ return &buffer; ++ ++ /* Skip entries that cannot be converted to utmpx. */ ++ } ++} ++ ++weak_alias (__getutxent, getutxent) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxid.c +@@ -0,0 +1,68 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern struct utmpx *__getutxent (void); ++ ++struct utmpx * ++getutxid (const struct utmpx *id) ++{ ++ switch (id->ut_type) ++ { ++ case INIT_PROCESS: ++ case LOGIN_PROCESS: ++ case USER_PROCESS: ++ case DEAD_PROCESS: ++ for (;;) ++ { ++ struct utmpx *next = __getutxent (); ++ ++ if (next == NULL) ++ return NULL; ++ ++ switch (next->ut_type) ++ { ++ case INIT_PROCESS: ++ case LOGIN_PROCESS: ++ case USER_PROCESS: ++ case DEAD_PROCESS: ++ if (strncmp (next->ut_id, id->ut_id, sizeof (id->ut_id)) == 0) ++ return next; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ default: ++ for (;;) ++ { ++ struct utmpx *next = __getutxent (); ++ ++ if (next == NULL) ++ return NULL; ++ ++ if (next->ut_type == id->ut_type) ++ return next; ++ } ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/getutxline.c +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern struct utmpx *__getutxent (void); ++ ++struct utmpx * ++getutxline (const struct utmpx *line) ++{ ++ for (;;) ++ { ++ struct utmpx *next = __getutxent (); ++ ++ if (next == NULL) ++ return NULL; ++ ++ if ((next->ut_type == LOGIN_PROCESS || next->ut_type == USER_PROCESS) ++ && strncmp (next->ut_line, line->ut_line, __UT_LINESIZE) == 0) ++ return next; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/pututxline.c +@@ -0,0 +1,50 @@ ++/* Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++extern int __utmp_to_utmpx (const struct utmp *, struct utmpx *); ++extern int __utmpx_to_utmp (const struct utmpx *, struct utmp *); ++ ++/* Static buffer to store the result. */ ++static struct utmpx buffer; ++ ++struct utmpx * ++pututxline (const struct utmpx *utmpx) ++{ ++ struct utmp tmp; ++ ++ if (__utmpx_to_utmp (utmpx, &tmp) >= 0) ++ { ++ struct utmp *tmpres = __pututline (&tmp); ++ ++ if (tmpres != NULL) ++ { ++ if (__utmp_to_utmpx (tmpres, &buffer) >= 0) ++ return &buffer; ++ ++ /* Hmm. We wrote a 'struct utmp' that we cannot convert back ++ to 'struct utmpx'. Shouldn't happen that often. */ ++ return NULL; ++ } ++ } ++ return NULL; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/updwtmpx.c +@@ -0,0 +1,31 @@ ++/* Copyright (C) 1998, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++extern int __utmpx_to_utmp (const struct utmpx *, struct utmp *); ++ ++void ++updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx) ++{ ++ struct utmp tmp; ++ ++ if (__utmpx_to_utmp (utmpx, &tmp) >= 0) ++ __updwtmp (wtmpx_file, &tmp); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp-equal.h +@@ -0,0 +1,50 @@ ++/* Copyright (C) 1996-1999,2000-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include ++ ++/* Test whether two entries match. */ ++static int ++__utmp_equal (const struct utmp *entry, const struct utmp *match) ++{ ++ /* This implementation is consistent with the __utmp_to_utmpx function. */ ++ return ++ (!((entry->ut_line[0] == '\0' && entry->ut_name[0] == '\0' ++ && entry->ut_host[0] == '\0') ++ || ((entry->ut_line[0] == '~' || entry->ut_line[0] == '{' ++ || entry->ut_line[0] == '|') ++ && entry->ut_line[1] == '\0')) ++ && ++ !((match->ut_line[0] == '\0' && match->ut_name[0] == '\0' ++ && match->ut_host[0] == '\0') ++ || ((match->ut_line[0] == '~' || match->ut_line[0] == '{' ++ || match->ut_line[0] == '|') ++ && match->ut_line[1] == '\0')) ++ && ++#if _HAVE_UT_ID - 0 ++ (entry->ut_id[0] && match->ut_id[0] ++ ? strncmp (entry->ut_id, match->ut_id, sizeof match->ut_id) == 0 ++ : strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line) == 0) ++#else ++ strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line) == 0 ++#endif ++ ); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmp_file.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-compat/utmpconv.c +@@ -0,0 +1,227 @@ ++/* Convert between 'struct utmp' and 'struct utmx'. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* We reuse the 'struct utmp' file format also for 'struct utmpx' records. ++ The mapping from 'struct utmp' to 'struct utmpx' is injective; the ++ reverse mapping succeeds only when common conventions are respected. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Compare two 'struct utmpx' records. */ ++int ++__utmpx_equal (const struct utmpx *u1, const struct utmpx *u2) ++{ ++ return (u1->ut_type == u2->ut_type) ++ && (u1->ut_pid == u2->ut_pid) ++ && (strncmp (u1->ut_line, u2->ut_line, __UT_LINESIZE) == 0) ++ && (strncmp (u1->ut_id, u2->ut_id, sizeof (u1->ut_id)) == 0) ++ && (strncmp (u1->ut_user, u2->ut_user, __UT_NAMESIZE) == 0) ++ && (strncmp (u1->ut_host, u2->ut_host, __UT_HOSTSIZE) == 0) ++ && (u1->ut_exit.e_termination == u2->ut_exit.e_termination) ++ && (u1->ut_exit.e_exit == u2->ut_exit.e_exit) ++ && (u1->ut_session == u2->ut_session) ++ && (u1->ut_tv.tv_sec == u2->ut_tv.tv_sec) ++ && (u1->ut_tv.tv_usec == u2->ut_tv.tv_usec) ++ && (memcmp (u1->ut_addr_v6, u2->ut_addr_v6, sizeof (u1->ut_addr_v6)) ++ == 0); ++} ++ ++int ++__utmp_to_utmpx (const struct utmp *u, struct utmpx *ux) ++{ ++ memset (ux, '\0', sizeof (struct utmpx)); ++ ++ if (u->ut_line[0] == '\0' && u->ut_name[0] == '\0' && u->ut_host[0] == '\0') ++ { ++ ux->ut_type = EMPTY; ++ } ++ else ++ { ++ if (u->ut_line[0] == '~' && u->ut_line[1] == '\0') ++ { ++ if (strncmp (u->ut_name, "runlevel", UT_NAMESIZE) == 0) ++ ux->ut_type = RUN_LVL; ++ else if (strncmp (u->ut_name, "reboot", UT_NAMESIZE) == 0) ++ ux->ut_type = BOOT_TIME; ++ else if (strncmp (u->ut_name, "acct", UT_NAMESIZE) == 0) ++ ux->ut_type = ACCOUNTING; ++ else ++ return -1; ++ } ++ else if (u->ut_line[0] == '{' && u->ut_line[1] == '\0') ++ { ++ if (strncmp (u->ut_name, "date", UT_NAMESIZE) == 0) ++ ux->ut_type = NEW_TIME; ++ else ++ return -1; ++ } ++ else if (u->ut_line[0] == '|' && u->ut_line[1] == '\0') ++ { ++ if (strncmp (u->ut_name, "date", UT_NAMESIZE) == 0) ++ ux->ut_type = OLD_TIME; ++ else ++ return -1; ++ } ++ else ++ { ++ if (strncmp (u->ut_name, "INIT", UT_NAMESIZE) == 0) ++ ux->ut_type = INIT_PROCESS; ++ else if (strncmp (u->ut_name, "LOGIN", UT_NAMESIZE) == 0) ++ ux->ut_type = LOGIN_PROCESS; ++ else if (strncmp (u->ut_name, "", UT_NAMESIZE) == 0) ++ ux->ut_type = DEAD_PROCESS; ++ else ++ ux->ut_type = USER_PROCESS; ++ ++ if (ux->ut_type == LOGIN_PROCESS || ux->ut_type == USER_PROCESS) ++ strncpy (ux->ut_user, u->ut_name, UT_NAMESIZE); ++ ++ if (strncmp (u->ut_line, "tty", 3) == 0) ++ { ++ strncpy (ux->ut_line, u->ut_line, UT_LINESIZE); ++ strncpy (ux->ut_id, u->ut_line + 3, sizeof (ux->ut_id)); ++ } ++ else ++ { ++ strncpy (ux->ut_id, u->ut_line, sizeof (ux->ut_id)); ++ } ++ } ++ ++ strncpy (ux->ut_host, u->ut_host, UT_HOSTSIZE); ++ ++ /* Hack: Recover the ut_pid from the hidden place after the host. */ ++ if (__strnlen (u->ut_host, UT_HOSTSIZE) < UT_HOSTSIZE - 2) ++ { ++ const char *hidden = u->ut_host + strlen (u->ut_host) + 1; ++ ++ if (hidden[0] != '\0') ++ { ++ size_t n = UT_HOSTSIZE - strlen (u->ut_host) - 1; ++ char buf[UT_HOSTSIZE]; ++ unsigned long pid; ++ char *endp; ++ ++ strncpy (buf, hidden, n); ++ buf[n] = '\0'; ++ ++ pid = strtoul (buf, &endp, 10); ++ if (endp != buf && *endp == '\0') ++ ux->ut_pid = pid; ++ } ++ } ++ ++ ux->ut_tv.tv_sec = u->ut_time; ++ ux->ut_tv.tv_usec = 0; ++ } ++ ++ return 0; ++} ++ ++int ++__utmpx_to_utmp (const struct utmpx *ux, struct utmp *u) ++{ ++ char buf[10+1]; ++ ++ switch (ux->ut_type) ++ { ++ case EMPTY: ++ strncpy (u->ut_line, "", UT_LINESIZE); ++ strncpy (u->ut_name, "", UT_NAMESIZE); ++ strncpy (u->ut_host, "", UT_HOSTSIZE); ++ break; ++ ++ case RUN_LVL: ++ strncpy (u->ut_line, "~", UT_LINESIZE); ++ strncpy (u->ut_name, "runlevel", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case BOOT_TIME: ++ strncpy (u->ut_line, "~", UT_LINESIZE); ++ strncpy (u->ut_name, "reboot", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case NEW_TIME: ++ strncpy (u->ut_line, "{", UT_LINESIZE); ++ strncpy (u->ut_name, "date", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case OLD_TIME: ++ strncpy (u->ut_line, "|", UT_LINESIZE); ++ strncpy (u->ut_name, "date", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case INIT_PROCESS: ++ case LOGIN_PROCESS: ++ case USER_PROCESS: ++ case DEAD_PROCESS: ++ if (ux->ut_line[0] != '\0') ++ strncpy (u->ut_line, ux->ut_line, UT_LINESIZE); ++ else ++ strncpy (u->ut_line, ux->ut_id, sizeof (ux->ut_id)); ++ switch (ux->ut_type) ++ { ++ case INIT_PROCESS: ++ strncpy (u->ut_name, "INIT", UT_NAMESIZE); ++ break; ++ case LOGIN_PROCESS: ++ strncpy (u->ut_name, "LOGIN", UT_NAMESIZE); ++ break; ++ case USER_PROCESS: ++ strncpy (u->ut_name, ux->ut_user, UT_NAMESIZE); ++ break; ++ case DEAD_PROCESS: ++ strncpy (u->ut_name, "", UT_NAMESIZE); ++ break; ++ } ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ case ACCOUNTING: ++ strncpy (u->ut_line, "~", UT_LINESIZE); ++ strncpy (u->ut_name, "acct", UT_NAMESIZE); ++ strncpy (u->ut_host, ux->ut_host, UT_HOSTSIZE); ++ break; ++ ++ default: ++ return -1; ++ } ++ ++ u->ut_time = ux->ut_tv.tv_sec; ++ ++ /* Hack: Put the ut_pid at a hidden place where there is likely room. */ ++ if (ux->ut_pid != 0) ++ { ++ size_t room = UT_HOSTSIZE - strlen (u->ut_host) - 1; ++ ++ sprintf (buf, "%lu", (unsigned long) ux->ut_pid); ++ if (strlen (buf) <= room) ++ strncpy (u->ut_host + strlen (u->ut_host) + 1, buf, room); ++ } ++ ++ return 0; ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/utmp-utmpx/utmp_file.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/wait.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/wait3.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/waitpid.c +@@ -0,0 +1,56 @@ ++/* Copyright (C) 1991,95,96,97,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* Wait for a child matching PID to die. ++ If PID is greater than 0, match any process whose process ID is PID. ++ If PID is (pid_t) -1, match any process. ++ If PID is (pid_t) 0, match any process with the ++ same process group as the current process. ++ If PID is less than -1, match any process whose ++ process group is the absolute value of PID. ++ If the WNOHANG bit is set in OPTIONS, and that child ++ is not already dead, return (pid_t) 0. If successful, ++ return PID and store the dead child's status in STAT_LOC. ++ Return (pid_t) -1 for errors. If the WUNTRACED bit is set in OPTIONS, ++ return status for stopped children; otherwise don't. */ ++pid_t ++__libc_waitpid (pid_t pid, int *stat_loc, int options) ++{ ++ if (SINGLE_THREAD_P) ++ { ++ return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); ++ } ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++ ++weak_alias (__libc_waitpid, __waitpid) ++libc_hidden_weak (__waitpid) ++weak_alias (__libc_waitpid, waitpid) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/writev.c +@@ -0,0 +1,57 @@ ++/* writev for FreeBSD. ++ Copyright (C) 1997-1998, 2000, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++extern ssize_t __syscall_writev (int, const struct iovec *__unbounded, int); ++ ++static ssize_t __atomic_writev_replacement (int, const struct iovec *, ++ int) internal_function; ++ ++ssize_t ++__libc_writev (int fd, const struct iovec *vector, int count) ++{ ++ if (count <= UIO_MAXIOV) ++ { ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ssize_t result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); ++ LIBC_CANCEL_RESET (oldtype); ++ return result; ++ ++ } ++ else ++ return __atomic_writev_replacement (fd, vector, count); ++} ++strong_alias (__libc_writev, __writev) ++weak_alias (__libc_writev, writev) ++ ++#define __libc_writev static internal_function __atomic_writev_replacement ++#include ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Makefile +@@ -0,0 +1,17 @@ ++32bit-predefine = __i386__ ++64bit-predefine = __x86_64__ ++ ++# Additional header files to be installed in $prefix/include: ++ ++ifeq ($(subdir),misc) ++sysdep_headers += \ ++ sys/io.h \ ++ sys/perm.h ++endif ++ ++# Additional functions, and particular system calls: ++ ++ifeq ($(subdir),misc) ++# For and . ++sysdep_routines += iopl ioperm ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/Versions +@@ -0,0 +1,8 @@ ++libc { ++ GLIBC_2.3.4 { ++ iopl; ++ } ++ GLIBC_2.10 { ++ ioperm; ++ } ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/____longjmp_chk.S +@@ -0,0 +1,7 @@ ++/* Jump to the position specified by ENV, causing the ++ setjmp call there to return VAL, or 1 if VAL is 0. ++ void __longjmp (__jmp_buf env, int val). */ ++ ++#warning longjmp_chk unimplemented ++#define __longjmp ____longjmp_chk ++#include<__longjmp.S> +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/mcontext.h +@@ -0,0 +1,167 @@ ++/* Machine-dependent processor state structure for FreeBSD. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. x86_64 version. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++/*- ++ * Copyright (c) 2003 Peter Wemm ++ * Copyright (c) 1999 Marcel Moolenaar ++ * 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 ++ * in this position and unchanged. ++ * 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. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. ++ * ++ * based on $FreeBSD: src/sys/amd64/include/ucontext.h,v 1.18 2003/11/08 04:39:22 peter Exp $ ++ */ ++ ++#ifdef __i386__ ++ ++/* Whole processor state. */ ++typedef struct ++ { ++ /* ++ * The first 20 fields must match the definition of ++ * sigcontext. So that we can support sigcontext ++ * and ucontext_t at the same time. ++ */ ++ ++ int mc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ int mc_gs; ++ int mc_fs; ++ int mc_es; ++ int mc_ds; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ int mc_edi; ++ int mc_esi; ++ int mc_ebp; ++ int mc_isp; /* Not used; sc_esp is used instead. */ ++ int mc_ebx; ++ int mc_edx; ++ int mc_ecx; ++ int mc_eax; ++ ++ int mc_trapno; ++ int mc_err; ++ ++ int mc_eip; /* Instruction pointer. */ ++ int mc_cs; /* Code segment register. */ ++ ++ int mc_efl; /* Processor flags. */ ++ ++ int mc_esp; /* This stack pointer is used. */ ++ int mc_ss; /* Stack segment register. */ ++ ++ int mc_len; /* sizeof(mcontext_t) */ ++#define _MC_FPFMT_NODEV 0x10000 /* device not present or configured */ ++#define _MC_FPFMT_387 0x10001 ++#define _MC_FPFMT_XMM 0x10002 ++ int mc_fpformat; ++#define _MC_FPOWNED_NONE 0x20000 /* FP state not used */ ++#define _MC_FPOWNED_FPU 0x20001 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 0x20002 /* FP state came from PCB */ ++ int mc_ownedfp; ++ int mc_spare1[1]; /* align next field to 16 bytes */ ++ /* ++ * See for the internals of mc_fpstate[]. ++ */ ++ int mc_fpstate[128] __attribute__((aligned(16))); ++ int mc_spare2[8]; ++ } mcontext_t; ++ ++#else ++ ++/* Whole processor state. */ ++typedef struct ++ { ++ /* ++ * The first 20 fields must match the definition of ++ * sigcontext. So that we can support sigcontext ++ * and ucontext_t at the same time. ++ */ ++ long mc_onstack; /* XXX - sigcontext compat. */ ++ long mc_rdi; /* machine state (struct trapframe) */ ++ long mc_rsi; ++ long mc_rdx; ++ long mc_rcx; ++ long mc_r8; ++ long mc_r9; ++ long mc_rax; ++ long mc_rbx; ++ long mc_rbp; ++ long mc_r10; ++ long mc_r11; ++ long mc_r12; ++ long mc_r13; ++ long mc_r14; ++ long mc_r15; ++ long mc_trapno; ++ long mc_addr; ++ long mc_flags; ++ long mc_err; ++ long mc_rip; ++ long mc_cs; ++ long mc_rflags; ++ long mc_rsp; ++ long mc_ss; ++ ++ long mc_len; /* sizeof(mcontext_t) */ ++#define _MC_FPFMT_NODEV 0x10000 /* device not present or configured */ ++#define _MC_FPFMT_XMM 0x10002 ++ long mc_fpformat; ++#define _MC_FPOWNED_NONE 0x20000 /* FP state not used */ ++#define _MC_FPOWNED_FPU 0x20001 /* FP state came from FPU */ ++#define _MC_FPOWNED_PCB 0x20002 /* FP state came from PCB */ ++ long mc_ownedfp; ++ /* ++ * See for the internals of mc_fpstate[]. ++ */ ++ long mc_fpstate[64] __attribute__((aligned(16))); ++ long mc_spare[8]; ++} mcontext_t; ++ ++#endif ++ ++/* Traditional BSD names for some members. */ ++#define mc_eflags mc_efl +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/bits/sigcontext.h +@@ -0,0 +1,147 @@ ++/* Machine-dependent signal context structure for FreeBSD. i386 version. ++ Copyright (C) 1991-1992,1994,1997,2001-2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifndef _BITS_SIGCONTEXT_H ++#define _BITS_SIGCONTEXT_H 1 ++ ++#ifdef __i386__ ++ ++/* State of this thread when the signal was taken. ++ The unions below are for compatibility with Linux (whose sigcontext ++ components don't have sc_ prefix) */ ++__extension__ struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ int sc_onstack; /* Nonzero if running on sigstack. */ ++ ++ /* Segment registers. */ ++ union { int sc_gs; int gs; }; ++ union { int sc_fs; int fs; }; ++ union { int sc_es; int es; }; ++ union { int sc_ds; int ds; }; ++ ++ /* "General" registers. These members are in the order that the i386 ++ `pusha' and `popa' instructions use (`popa' ignores %esp). */ ++ union { int sc_edi; int edi; }; ++ union { int sc_esi; int esi; }; ++ union { int sc_ebp; int ebp; }; ++ union { int sc_isp; int isp; }; /* Not used; sc_esp is used instead. */ ++ union { int sc_ebx; int ebx; }; ++ union { int sc_edx; int edx; }; ++ union { int sc_ecx; int ecx; }; ++ union { int sc_eax; int eax; }; ++ ++ union { int sc_trapno; int trapno; }; ++ union { int sc_err; int err; }; ++ ++ union { int sc_eip; int eip; }; /* Instruction pointer. */ ++ union { int sc_cs; int cs; }; /* Code segment register. */ ++ ++ union { int sc_efl; int eflags; }; /* Processor flags. */ ++ ++ union { int sc_esp; int esp; }; /* This stack pointer is used. */ ++ union { int sc_ss; int ss; }; /* Stack segment register. */ ++ ++ int sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ int sc_fpformat; ++ int sc_ownedfp; ++ int sc_spare1[1]; ++ int sc_fpstate[128] __attribute__((aligned(16))); ++ int sc_spare2[8]; ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_esp /* Stack pointer. */ ++#define sc_fp sc_ebp /* Frame pointer. */ ++#define sc_pc sc_eip /* Process counter. */ ++#define sc_ps sc_efl ++#define sc_eflags sc_efl ++ ++#if 1 /* FIXME: These need verification. */ ++ ++/* Codes for SIGILL. */ ++#define ILL_PRIVIN_FAULT 1 ++#define ILL_ALIGN_FAULT 14 ++#define ILL_FPOP_FAULT 24 ++ ++/* Codes for SIGBUS. */ ++#define BUS_PAGE_FAULT 12 ++#define BUS_SEGNP_FAULT 26 ++#define BUS_STK_FAULT 27 ++#define BUS_SEGM_FAULT 29 ++ ++#endif ++ ++#else ++ ++__extension__ struct sigcontext ++ { ++ __sigset_t sc_mask; /* Blocked signals to restore. */ ++ long sc_onstack; /* Nonzero if running on sigstack. */ ++ union { long sc_rdi; long rdi;}; ++ union { long sc_rsi; long rsi;}; ++ union { long sc_rdx; long rdx;}; ++ union { long sc_rcx; long rcx;}; ++ union { long sc_r8; long r8;}; ++ union { long sc_r9; long r9;}; ++ union { long sc_rax; long rax;}; ++ union { long sc_rbx; long rbx;}; ++ union { long sc_rbp; long rbp;}; ++ union { long sc_r10; long r10;}; ++ union { long sc_r11; long r11;}; ++ union { long sc_r12; long r12;}; ++ union { long sc_r13; long r13;}; ++ union { long sc_r14; long r14;}; ++ union { long sc_r15; long r15;}; ++ union { long sc_trapno; long trapno;}; ++ union { long sc_addr; long addr;}; ++ union { long sc_flags; long flags;}; ++ union { long sc_err; long err;}; ++ union { long sc_rip; long rip;}; ++ union { long sc_cs; long cs;}; ++ union { long sc_rflags; long rflags;}; ++ union { long sc_rsp; long rsp;}; ++ union { long sc_ss; long ss;}; ++ long sc_len; /* sizeof(mcontext_t) */ ++ /* ++ * XXX - See and for ++ * the following fields. ++ */ ++ long sc_fpformat; ++ long sc_ownedfp; ++ long sc_fpstate[64] __attribute__((aligned(16))); ++ long sc_spare[8]; ++ }; ++ ++/* Traditional BSD names for some members. */ ++#define sc_sp sc_rsp /* Stack pointer. */ ++#define sc_fp sc_rbp /* Frame pointer. */ ++#define sc_pc sc_rip /* Process counter. */ ++ ++#endif ++ ++#endif /* _BITS_SIGCONTEXT_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-cache.h +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-machine.h +@@ -0,0 +1,133 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. FreeBSD/amd64 version. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include_next ++ ++#undef RTLD_START ++ ++/* Initial entry point code for the dynamic linker. ++ The C function `_dl_start' is the real entry point; ++ its return value is the user program's entry point. */ ++#define RTLD_START asm ("\n\ ++.text\n\ ++ .align 16\n\ ++.globl _start\n\ ++# we dont use it: .globl _dl_start_user\n\ ++_start:\n\ ++ # align stack.\n\ ++ andq $-16, %rsp\n\ ++ # save argument pointer.\n\ ++ movq %rdi, %r13\n\ ++ call _dl_start\n\ ++# we dont use it: _dl_start_user:\n\ ++ # Save the user entry point address in %r12.\n\ ++ movq %rax, %r12\n\ ++ # See if we were run as a command with the executable file\n\ ++ # name as an extra leading argument.\n\ ++ movl _dl_skip_args(%rip), %eax\n\ ++ # get the original argument count.\n\ ++ movq 0(%r13), %rdx\n\ ++ # Adjust the pointer to skip _dl_skip_args words.\n\ ++ leaq (%r13,%rax,8), %r13\n\ ++ # Subtract _dl_skip_args from argc.\n\ ++ subl %eax, %edx\n\ ++ # Put argc on adjusted place\n\ ++ movq %rdx, 0(%r13)\n\ ++ # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ ++ # argc -> rsi\n\ ++ movq %rdx, %rsi\n\ ++ # _dl_loaded -> rdi\n\ ++ movq _rtld_local(%rip), %rdi\n\ ++ # env -> rcx\n\ ++ leaq 16(%r13,%rdx,8), %rcx\n\ ++ # argv -> rdx\n\ ++ leaq 8(%r13), %rdx\n\ ++ # Clear %rbp to mark outermost frame obviously even for constructors.\n\ ++ xorl %ebp, %ebp\n\ ++ # Call the function to run the initializers.\n\ ++ call _dl_init_internal@PLT\n\ ++ # Pass our finalizer function to the user in %rdx, as per ELF ABI draft.\n\ ++ leaq _dl_fini(%rip), %rdx\n\ ++ # And make sure %rdi points to argc stored on the stack.\n\ ++ movq %r13, %rdi\n\ ++ # Pass finalizer function also in %rsi, as per C calling convention.\n\ ++ movq %rdx, %rsi\n\ ++ # Jump to the user's entry point.\n\ ++ jmp *%r12\n\ ++.previous\n\ ++"); ++ ++#if 0 ++Under FreeBSD: ++#define AT_EXECPATH 15 /* Path to the executable. */ ++ ++Under Linux: ++#define AT_PLATFORM 15 /* String identifying platform. */ ++ ++Filled entries from kernel: ++ ++ if (args->execfd != -1) ++ AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd); ++ AUXARGS_ENTRY(pos, AT_PHDR, args->phdr); ++ AUXARGS_ENTRY(pos, AT_PHENT, args->phent); ++ AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum); ++ AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz); ++ AUXARGS_ENTRY(pos, AT_FLAGS, args->flags); ++ AUXARGS_ENTRY(pos, AT_ENTRY, args->entry); ++ AUXARGS_ENTRY(pos, AT_BASE, args->base); ++ if (imgp->execpathp != 0) ++ AUXARGS_ENTRY(pos, AT_EXECPATH, imgp->execpathp); ++ AUXARGS_ENTRY(pos, AT_NULL, 0); ++ ++#endif ++ ++#undef DL_PLATFORM_INIT ++#define DL_PLATFORM_INIT dl_platform_kfreebsd_x86_64_init () ++ ++#ifndef _DL_MACHINE_KFREEBSD ++#define _DL_MACHINE_KFREEBSD ++ ++static inline void cpuid(long op, long *rax, long *rdx) ++{ ++ __asm__( ++ "push %%rbx\n\t" ++ "cpuid\n\t" ++ "pop %%rbx\n\t" ++ : "=a" (*rax), ++ "=d" (*rdx) ++ : "0" (op) ++ : "rcx" ++ ); ++} ++ ++static inline void __attribute__ ((unused)) ++dl_platform_kfreebsd_x86_64_init (void) ++{ ++ /* we don't have reasonable AT_PLATFORM from kernel ++ use cpuid to guess AT_HWCAP */ ++ ++ long val, hwcap; ++ ++ cpuid(1, &val, &hwcap); ++ GLRO(dl_hwcap) = hwcap; ++ GLRO(dl_platform) = ELF_MACHINE_NAME; ++} ++ ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/dl-procinfo.h +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/elf/start.S +@@ -0,0 +1,143 @@ ++/* Startup code for FreeBSD/amd64 ABI. ++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Jaeger , 2001. ++ FreeBSD modification by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ In addition to the permissions in the GNU Lesser General Public ++ License, the Free Software Foundation gives you unlimited ++ permission to link the compiled version of this file with other ++ programs, and to distribute those programs without any restriction ++ coming from the use of this file. (The GNU Lesser General Public ++ License restrictions do apply in other respects; for example, they ++ cover modification of the file, and distribution when not linked ++ into another program.) ++ ++ Note that people who make modified versions of this file are not ++ obligated to grant this special exception for their modified ++ versions; it is their choice whether to do so. The GNU Lesser ++ General Public License gives permission to release a modified ++ version without this exception; this exception also makes it ++ possible to release a modified version which carries forward this ++ exception. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This is the canonical entry point, usually the first thing in the text ++ segment. The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry ++ point runs, most registers' values are unspecified, except for a few. ++ Blindly applied on amd64: ++ ++ %rdx Contains a function pointer to be registered with `atexit'. ++ This is how the dynamic linker arranges to have DT_FINI ++ functions called for shared libraries that have been loaded ++ before this code runs. ++ ++ %rsp The stack contains the arguments and environment: ++ 0(%rsp) argc ++ 8(%rsp) argv[0] ++ ... ++ (8*argc)(%rsp) NULL ++ (8*(argc+1))(%rsp) envp[0] ++ ... ++ NULL ++ ++ But on amd64 %rsp also have to be 16-byte aligned, ++ standard C calling convention already passes arguments in registers. ++ ++ FreeBSD uses %edi as pointer to arguments and environment, %rsp is passed aligned. ++ On entry from kernel, %rsp=%rdi or %rsp=%rdi-8, ++ on entry from ld.so, glibc might set up it slightly differently. ++ ++ On FreeBSD, we use %rsi for passing function pointer to rtld_fini(). ++ On entry from FreeBSD kernel, %rsi is cleared, %rdx is not cleared, ++ on entry from ld.so, glibc sets both %rsi and %rdx to point to rtld_fini(). ++ ++ Used interface (via %rdi, %rsi) is equal to standard C calling interface for ++ ++ void _start(void *arg, void *rtld_fini()); ++ ++*/ ++ ++#include "bp-sym.h" ++ ++ .text ++ .globl _start ++ .type _start,@function ++_start: ++ /* Clear the frame pointer. The ABI suggests this be done, to mark ++ the outermost frame obviously. */ ++ xorl %ebp, %ebp /* zero extending clears whole rbp */ ++ ++ /* Extract the arguments as encoded on the stack and set up ++ the arguments for __libc_start_main (int (*main) (int, char **, char **), ++ int argc, char *argv, ++ void (*init) (void), void (*fini) (void), ++ void (*rtld_fini) (void), void *stack_end). ++ The arguments are passed via registers and on the stack: ++ main: %rdi ++ argc: %rsi ++ argv: %rdx ++ init: %rcx ++ fini: %r8 ++ rtld_fini: %r9 ++ stack_end: stack. */ ++ ++ movq %rsi, %r9 /* Address of the shared library termination ++ function. */ ++ movq 0(%rdi), %rsi /* argument count. */ ++ leaq 8(%rdi), %rdx /* argv starts just at above argc. */ ++ ++ /* Align the stack to a 16 byte boundary to follow the ABI. */ ++ andq $~15, %rsp ++ ++ pushq %rax /* Push garbage because we push 8 more bytes. */ ++ ++ /* Provide the highest stack address to the user code (for stacks ++ which grow downwards). */ ++ pushq %rsp ++ ++#ifdef SHARED ++ /* Pass address of our own entry points to .fini and .init. */ ++ movq __libc_csu_fini@GOTPCREL(%rip), %r8 ++ movq __libc_csu_init@GOTPCREL(%rip), %rcx ++ ++ movq BP_SYM (main)@GOTPCREL(%rip), %rdi ++ ++ /* Call the user's main function, and exit with its value. ++ But let the libc call main. */ ++ call BP_SYM (__libc_start_main)@PLT ++#else ++ /* Pass address of our own entry points to .fini and .init. */ ++ movq $__libc_csu_fini, %r8 ++ movq $__libc_csu_init, %rcx ++ ++ movq $BP_SYM (main), %rdi ++ ++ /* Call the user's main function, and exit with its value. ++ But let the libc call main. */ ++ call BP_SYM (__libc_start_main) ++#endif ++ ++ hlt /* Crash if somehow `exit' does return. */ ++ ++/* Define a symbol for the first piece of initialized data. */ ++ .data ++ .globl __data_start ++__data_start: ++ .long 0 ++ .weak data_start ++ data_start = __data_start +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/get_clockfreq.c +@@ -0,0 +1 @@ ++#include "../i386/get_clockfreq.c" +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/getcontext.S +@@ -0,0 +1,38 @@ ++/* Save current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__getcontext) ++ clc ++ movq 0(%rsp), %rsi /* save the return PC value */ ++ ++ DO_CALL (getcontext, 1) ++ jb SYSCALL_ERROR_LABEL ++ ++ addq $8, %rsp /* remove stale return address */ ++ jmp *%rsi ++ ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__getcontext) ++ ++weak_alias(__getcontext, getcontext) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ioperm.c +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++int ++ioperm (unsigned long int from, unsigned long int num, int turn_on) ++{ ++ struct i386_ioperm_args args; ++ ++ args.start = from; ++ args.length = num; ++ args.enable = turn_on; ++ ++ return __sysarch (I386_SET_IOPERM, &args); ++} +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/iopl.c +@@ -0,0 +1 @@ ++#include "../i386/iopl.c" +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ldconfig.h +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++#define SYSDEP_KNOWN_INTERPRETER_NAMES \ ++ { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \ ++ { "/lib/ld-kfreebsd-x86-64.so.1", FLAG_ELF_LIBC6 }, \ ++ { "/lib64/ld-kfreebsd-x86-64.so.1", FLAG_ELF_LIBC6 }, \ ++ { "/libexec/ld-elf.so.1", FLAG_ELF_LIBC5 }, ++ ++#define SYSDEP_KNOWN_LIBRARY_NAMES \ ++ { "libc.so.0.1", FLAG_ELF_LIBC6 }, \ ++ { "libm.so.1", FLAG_ELF_LIBC6 }, \ ++ { "libc.so.4", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.4", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.5", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.5", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.6", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.6", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.7", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.7", FLAG_ELF_LIBC5 }, \ ++ { "libc.so.8", FLAG_ELF_LIBC5 }, \ ++ { "libm.so.8", FLAG_ELF_LIBC5 }, +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ldd-rewrite.sed +@@ -0,0 +1,3 @@ ++/LD_TRACE_LOADED_OBJECTS=1/a\ ++add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out" ++s_^\(RTLDLIST=\)\(.*lib\)\(\|64\)\(/[^/]*\)\(-kfreebsd-x86-64\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4\5\6"_ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/linuxthreads/Makefile +@@ -0,0 +1,4 @@ ++ifeq ($(subdir),linuxthreads) ++CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions \ ++ -fno-asynchronous-unwind-tables $(fno-unit-at-a-time) ++endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/linuxthreads/asm/prctl.h +@@ -0,0 +1 @@ ++/* placeholder to make linuxthreads/sysdeps/x86_64/pt-machine.h happy */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/linuxthreads/pt-machine.h +@@ -0,0 +1,51 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ x86-64 FreeBSD version. ++ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_PT_MACHINE_H ++#define _FREEBSD_PT_MACHINE_H 1 ++ ++/* ++ almost all parts are common with linux version ++ */ ++ ++#include ++ ++#ifndef __ASSEMBLER__ ++ ++/* and only one FreeBSD specifics */ ++ ++#include ++ ++/* Initialize the thread-unique value. */ ++ ++#undef INIT_THREAD_SELF ++#define INIT_THREAD_SELF(descr, nr) \ ++{ \ ++ long tmp; \ ++ tmp = (long) descr; \ ++ if (sysarch(AMD64_SET_FSBASE, &tmp) != 0) \ ++ { \ ++ abort(); \ ++ } \ ++} ++ ++#endif /* !__ASSEMBLER__ */ ++ ++#endif /* pt-machine.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/linuxthreads/sysdep-cancel.h +@@ -0,0 +1,145 @@ ++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Jakub Jelinek , 2002. ++ Modification for FreeBSD contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++/* Syscalls with more than 6 arguments are not supported here. */ ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ SINGLE_THREAD_P; \ ++ jne L(pseudo_cancel); \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ ret; \ ++ L(pseudo_cancel): \ ++ /* Save registers that might get destroyed. */ \ ++ SAVESTK_##args \ ++ PUSHARGS_##args \ ++ CENABLE \ ++ /* Restore registers. */ \ ++ POPARGS_##args \ ++ RESTSTK_##args \ ++ /* The return value from CENABLE is argument for CDISABLE. */ \ ++ movq %rax, (%rsp); \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ syscall; \ ++ popq %rdi; cfi_adjust_cfa_offset(-8); \ ++ pushfq; cfi_adjust_cfa_offset(8); \ ++ /* Save %rax since it's the return/error code from the syscall. */ \ ++ movq %rax, 8(%rsp); \ ++ CDISABLE \ ++ popfq; cfi_adjust_cfa_offset(-8); \ ++ /* fetch the error code from the syscall. */ \ ++ popq %rax; cfi_adjust_cfa_offset(-8); \ ++ /* adjust rsp, do not change flags */ \ ++ popq %rdx; cfi_adjust_cfa_offset(-8); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++# define PUSHARGS_0 /* Nothing. */ ++# define PUSHARGS_1 PUSHARGS_0 movq %rdi, 8(%rsp); ++# define PUSHARGS_2 PUSHARGS_1 movq %rsi, 16(%rsp); ++# define PUSHARGS_3 PUSHARGS_2 movq %rdx, 24(%rsp); ++# define PUSHARGS_4 PUSHARGS_3 movq %rcx, 32(%rsp); ++# define PUSHARGS_5 PUSHARGS_4 movq %r8, 40(%rsp); ++# define PUSHARGS_6 PUSHARGS_5 movq %r9, 48(%rsp); ++ ++# define POPARGS_0 /* Nothing. */ ++# define POPARGS_1 POPARGS_0 movq 8(%rsp), %rdi; ++# define POPARGS_2 POPARGS_1 movq 16(%rsp), %rsi; ++# define POPARGS_3 POPARGS_2 movq 24(%rsp), %rdx; ++# define POPARGS_4 POPARGS_3 movq 32(%rsp), %r10; ++# define POPARGS_5 POPARGS_4 movq 40(%rsp), %r8; ++# define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9; ++ ++/* We always have to align the stack before calling a function. */ ++# define SAVESTK_0 subq $24, %rsp;cfi_adjust_cfa_offset(24); ++# define SAVESTK_1 SAVESTK_0 ++# define SAVESTK_2 SAVESTK_1 ++# define SAVESTK_3 subq $40, %rsp;cfi_adjust_cfa_offset(40); ++# define SAVESTK_4 SAVESTK_3 ++# define SAVESTK_5 subq $56, %rsp;cfi_adjust_cfa_offset(56); ++# define SAVESTK_6 SAVESTK_5 ++ ++# define RESTSTK_0 /* Nothing. */ ++# define RESTSTK_1 RESTSTK_0 ++# define RESTSTK_2 RESTSTK_1 ++# define RESTSTK_3 addq $16, %rsp;cfi_adjust_cfa_offset(-16); ++# define RESTSTK_4 RESTSTK_3 ++# define RESTSTK_5 addq $32, %rsp;cfi_adjust_cfa_offset(-32); ++# define RESTSTK_6 RESTSTK_5 ++ ++# ifdef IS_IN_libpthread ++# define CENABLE call __pthread_enable_asynccancel; ++# define CDISABLE call __pthread_disable_asynccancel; ++# define __local_multiple_threads __pthread_multiple_threads ++# elif !defined NOT_IN_libc ++# define CENABLE call __libc_enable_asynccancel; ++# define CDISABLE call __libc_disable_asynccancel; ++# define __local_multiple_threads __libc_multiple_threads ++# else ++# define CENABLE call __librt_enable_asynccancel@plt; ++# define CDISABLE call __librt_disable_asynccancel@plt; ++# endif ++ ++# if defined IS_IN_libpthread || !defined NOT_IN_libc ++# ifndef __ASSEMBLER__ ++extern int __local_multiple_threads attribute_hidden; ++# define SINGLE_THREAD_P \ ++ __builtin_expect (__local_multiple_threads == 0, 1) ++# else ++# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip) ++# endif ++ ++# else ++ ++# ifndef __ASSEMBLER__ ++# define SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_header.data.multiple_threads) == 0, 1) ++# else ++# define SINGLE_THREAD_P cmpl $0, %fs:MULTIPLE_THREADS_OFFSET ++# endif ++ ++# endif ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++# define NO_CANCELLATION 1 ++ ++#endif ++ ++#ifndef __ASSEMBLER__ ++# define RTLD_SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ p_header.data.multiple_threads) == 0, 1) ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/linuxthreads/tls.h +@@ -0,0 +1,62 @@ ++/* Definitions for thread-local data handling. linuxthreads/x86-64 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _FREEBSD_TLS_H ++#define _FREEBSD_TLS_H ++ ++#include ++ ++#ifdef HAVE_TLS_SUPPORT ++ ++# ifndef __ASSEMBLER__ ++ ++#include ++#include ++ ++/* Code to initially initialize the thread pointer. This might need ++ special attention since 'errno' is not yet available and if the ++ operation can cause a failure 'errno' must not be touched. */ ++ ++# undef TLS_INIT_TP ++# define TLS_INIT_TP(descr, secondcall) \ ++ ({ \ ++ void *_descr = (descr); \ ++ tcbhead_t *head = _descr; \ ++ long int _result; \ ++ \ ++ head->tcb = _descr; \ ++ /* For now the thread descriptor is at the same address. */ \ ++ head->self = _descr; \ ++ \ ++ asm volatile ("syscall" \ ++ : "=a" (_result) \ ++ : "0" ((unsigned long int) SYS_sysarch), \ ++ "D" ((unsigned long int) AMD64_SET_FSBASE), \ ++ "S" (&_descr) \ ++ : "memory", "cc", "cx", "dx", "r8", "r9", "r10", "r11"); \ ++ \ ++ _result ? "cannot set %fs base address for thread-local storage" : 0; \ ++ }) ++ ++ ++# endif /* HAVE_TLS_SUPPORT */ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* tls.h */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/linuxthreads/vfork.S +@@ -0,0 +1,67 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++#ifdef SHARED ++ cmpq $0, __libc_pthread_functions(%rip) ++#else ++ .weak pthread_create ++ movq $pthread_create, %rax ++ testq %rax, %rax ++#endif ++ jne HIDDEN_JUMPTARGET (__fork) ++ ++ /* Pop the return PC value into ESI. */ ++ popq %rsi ++ cfi_adjust_cfa_offset(-8) ++ ++ /* Perform the system call. */ ++ DO_CALL (vfork, 0) ++ jb L(error) /* Branch forward if it failed. */ ++ ++ /* In the parent process, %rdx == 0, %rax == child pid. */ ++ /* In the child process, %rdx == 1, %rax == parent pid. */ ++ ++ /* Change %rax to be 0 in the child process. */ ++ decq %rdx ++ andq %rdx, %rax ++ ++ /* Jump to the return PC. */ ++ jmp *%rsi ++ ++L(error): ++ /* Push back the return PC. */ ++ pushq %rsi ++ cfi_adjust_cfa_offset(8) ++ ++ /* Branch to the error handler, hidden in PSEUDO_END. */ ++ jmp SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/makecontext.S +@@ -0,0 +1,146 @@ ++/* makecontext() for FreeBSD/amd64. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* ++ void makecontext(ucontext_t *ucp, void *func(), int argc, ...); ++ ++ ++ input parameters: ++ ++ rdi ucp ++ rsi func ++ edx argc ++ rcx arg1 -> ucp.rdi ++ r8 arg2 -> ucp.rsi ++ r9 arg3 -> ucp.rdx ++ 8(%rsp) arg4 -> ucp.rcx ++ 16(%rsp) arg5 -> ucp.r8 ++ 24(%rsp) arg6 -> ucp.r9 ++ i*8+24(%rsp) arg(6+i)-> future stack ++ ++*/ ++ ++ENTRY(__makecontext) ++ ++ /* Compute the address of the stack. ++ The information comes from us_stack element. */ ++ movq oSS_SP(%rdi), %rax ++ addq oSS_SIZE(%rdi), %rax ++ ++ /* Put start addr into ucp */ ++ movq %rsi, oRIP(%rdi) ++ ++ /* properly align future stack */ ++ andq $-16, %rax ++ subq $8, %rax ++ ++ /* Put the next context into preserved ucp.rbx ++ (from the uc_link element). */ ++ movq oLINK(%rdi), %rsi ++ movq %rsi, oRBX(%rdi) ++ ++ /* save future registers arguments */ ++ ++ orl %edx, %edx ++ jz L(param_done) ++ ++ decl %edx ++ movq %rcx, oRDI(%rdi) ++ jz L(param_done) ++ ++ decl %edx ++ movq %r8, oRSI(%rdi) ++ jz L(param_done) ++ ++ decl %edx ++ movq %r9, oRDX(%rdi) ++ jz L(param_done) ++ ++ movq 8(%rsp), %rsi ++ decl %edx ++ movq %rsi, oRCX(%rdi) ++ jz L(param_done) ++ ++ movq 16(%rsp), %rcx ++ decl %edx ++ movq %rcx, oR8(%rdi) ++ jz L(param_done) ++ ++ movq 24(%rsp), %rsi ++ decl %edx ++ movq %rsi, oR9(%rdi) ++ jz L(param_done) ++ ++ /* we have to copy some arguments also on the future stack */ ++ movl %edx, %ecx ++ negq %rdx ++ leaq -16(%rax,%rdx,8), %rax /* we a litle bit waste stack space */ ++ orq $8, %rax ++ ++1: movq 24(%rsp,%rcx,8), %rsi ++ movq %rsi,(%rax,%rcx,8) ++ loop 1b ++ ++L(param_done): ++ ++ /* Store the future stack pointer and chain helper code. */ ++ leaq L(exitcode)(%rip), %rdx ++ movq %rax, oRSP(%rdi) ++ movq %rdx, (%rax) ++ ++ /* 'makecontext' returns no value. */ ++ ret ++ ++/***************************************************************************/ ++ ++ /* This is the helper code which gets called if a function which ++ is registered with 'makecontext' returns. In this case we ++ have to install the context listed in the uc_link element of ++ the context 'makecontext' manipulated at the time of the ++ 'makecontext' call. If the pointer is NULL the process must ++ terminate. */ ++ ++L(exitcode): ++ /* we don't bother with extra arguments left on the stack ++ - more than 6 arguments is rare ++ - setcontext changes stacks immediately ++ - exit will call _exit in near future ++ */ ++ ++ testq %rbx, %rbx /* If it is zero exit. */ ++ jz 2f ++ ++ movq %rbx, %rdi ++ call JUMPTARGET(__setcontext) ++ /* If this returns (which can happen if the syscall fails) we'll ++ exit the program with the return error value (-1). */ ++ ++2: movq %rax, %rdi ++ call HIDDEN_JUMPTARGET(exit) ++ /* The 'exit' call should never return. In case it does cause ++ the process to terminate. */ ++ hlt ++END(__makecontext) ++ ++weak_alias(__makecontext, makecontext) ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/pipe.S +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY (__pipe) ++ DO_CALL (pipe, 1) ++ jb SYSCALL_ERROR_LABEL ++ movl %eax, 0(%rdi) ++ movl %edx, 4(%rdi) ++ xorl %eax, %eax ++L(pseudo_end): ++ ret ++PSEUDO_END (__pipe) ++libc_hidden_def (__pipe) ++weak_alias (__pipe, pipe) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/readelflib.c +@@ -0,0 +1,62 @@ ++/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Jaeger , 1999 and ++ Jakub Jelinek , 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++int process_elf32_file (const char *file_name, const char *lib, int *flag, ++ unsigned int *osversion, char **soname, ++ void *file_contents, size_t file_length); ++int process_elf64_file (const char *file_name, const char *lib, int *flag, ++ unsigned int *osversion, char **soname, ++ void *file_contents, size_t file_length); ++ ++/* Returns 0 if everything is ok, != 0 in case of error. */ ++int ++process_elf_file (const char *file_name, const char *lib, int *flag, ++ unsigned int *osversion, char **soname, void *file_contents, ++ size_t file_length) ++{ ++ ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents; ++ int ret; ++ ++ if (elf_header->e_ident [EI_CLASS] == ELFCLASS32) ++ return process_elf32_file (file_name, lib, flag, osversion, soname, ++ file_contents, file_length); ++ else ++ { ++ ret = process_elf64_file (file_name, lib, flag, osversion, soname, ++ file_contents, file_length); ++ /* x86-64 64bit libraries are always LIBC6. */ ++ if (!ret) ++ *flag = FLAG_X8664_LIB64|FLAG_ELF_LIBC6; ++ return ret; ++ } ++} ++ ++#undef __ELF_NATIVE_CLASS ++#undef process_elf_file ++#define process_elf_file process_elf32_file ++#define __ELF_NATIVE_CLASS 32 ++#include "elf/readelflib.c" ++ ++#undef __ELF_NATIVE_CLASS ++#undef process_elf_file ++#define process_elf_file process_elf64_file ++#define __ELF_NATIVE_CLASS 64 ++#include "elf/readelflib.c" +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/rfork.S +@@ -0,0 +1,44 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__rfork) ++ /* save the return PC value into RSI */ ++ movq 0(%rsp), %rsi; ++ DO_CALL (rfork, 1) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ decq %rdx ++ andq %rdx, %rax ++ ++ popq %rdx ++ cfi_adjust_cfa_offset(-8) ++ ++ jmp *%rsi ++ ++L(pseudo_end): ++ ret ++PSEUDO_END (__rfork) ++ ++weak_alias (__rfork, rfork) ++ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sigcontextinfo.h +@@ -0,0 +1,35 @@ ++/* Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* ++native FreeBSD: ++ sighandler(int signum, int code, struct sigcontext * sg, void * fault_ip) ++posix like: ++ sighandler(int signum, siginfo_t * si, struct sigcontext * sg, void * fault_ip) ++*/ ++ ++#define SIGCONTEXT long _code, struct sigcontext * _sg, void * ++#define SIGCONTEXT_EXTRA_ARGS _code, _sg, ++ ++/* really, really, rest of glibc expects that struct sigcontext is the last argument */ ++#define GET_PC(ctx) ((void *) (_sg)->sc_rip) ++#define GET_FRAME(ctx) ((void *) (_sg)->sc_rbp) ++#define GET_STACK(ctx) ((void *) (_sg)->sc_rsp) ++ ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/start_thread.S +@@ -0,0 +1,196 @@ ++/* Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Bruno Haible , 2002. ++ Modification for amd64 contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* __start_thread (flags, stack, func, arg) ++ calls __rfork (flags), and in the child sets the stack pointer and then ++ calls _exit (func (arg)). ++ It cannot be done in portable C. */ ++ ++/* ++ The parameters are passed in registers: ++ rdi: flags for rfork ++ rsi: child_stack ++ rdx: func ++ rcx: arg ++*/ ++ ++#include ++#include ++ ++#define SIG_SETMASK 3 ++ ++/* There is a window of a few instructions, right after the rfork ++ system call, where the handling of a signal would write garbage ++ into the stack shared by the parent and the child (assuming ++ RFMEM is set in flags). To solve this: 1. We block all signals ++ around the rfork system call and unblock them afterwards in ++ the parent and in the child (but only after changing the stack ++ pointer). 2. The child accesses only values passed in registers ++ and on its own stack. This way, if the parent is scheduled to ++ run first, and handles a signal, it will not affect the child; ++ and if the child runs first, and handles a signal, it will use ++ the child's stack and not affect the parent. ++*/ ++ ++ .text ++ENTRY (__start_thread) ++ ++ /* Insert the argument onto the new aligned stack. */ ++ andq $-16,%rsi ++ subq $16,%rsi ++ movq %rcx,8(%rsi) ++ ++ /* Save the function pointer. It will be popped off in the child */ ++ movq %rdx,0(%rsi) ++ ++ testq $32, %rdi /* flags & RFMEM */ ++ jnz L(complex) ++ ++ /* Do the system call. */ ++ movl $SYS_ify(rfork),%eax ++ /* End FDE now, because in the child the unwind info will be ++ wrong. */ ++ cfi_endproc; ++ syscall /* rdi and rsi are extra preserved */ ++ ++ jb SYSCALL_ERROR_LABEL ++ ++ testq %rdx,%rdx /* 0 for the parent and 1 for the child */ ++ jz L(pseudo_end) /* just return in parent */ ++ ++L(thread_start): ++ ++ /* set up stack */ ++ movq %rsi, %rsp ++ ++ /* Clear the frame pointer. The ABI suggests this be done, to mark ++ the outermost frame obviously. */ ++ xorl %ebp, %ebp ++ ++L(thread_start2): ++ ++ /* Set up arguments for the function call. */ ++ popq %rax /* Function to call. */ ++ popq %rdi /* Argument. */ ++ call *%rax ++ ++ /* Call exit with return value from function call. */ ++ movq %rax, %rdi ++ call HIDDEN_JUMPTARGET (_exit) ++ ++ ++/****************************************************************************************************** ++ * ++ * and now the complex one ... ++ * ++ ******************************************************************************************************/ ++ ++L(complex): ++ ++ subq $32, %rsp ++ ++ /* save arguments - flags and stack */ ++ movq %rdi,0(%rsp) ++ movq %rsi,8(%rsp) ++ ++ /* Block all signals. */ ++ orq $-1, %rax ++ movq %rax, 16(%rsp) ++ movq %rax, 24(%rsp) ++ ++ leaq 16(%rsp), %rsi ++ movl $SIG_SETMASK, %edi ++ movq %rsi,%rdx ++ DO_CALL (sigprocmask, 3) ++ jb L(error) ++ ++ /* restore arguments - flags and stack */ ++ movq 0(%rsp),%rdi ++ movq 8(%rsp),%rsi ++ ++ /* Copy mask info into the child's stack. */ ++ ++ subq $16,%rsi ++ movq 16(%rsp),%rcx ++ movq 24(%rsp),%rdx ++ movq %rcx, 0(%rsi) ++ movq %rdx, 8(%rsi) ++ ++ /* Perform the rfork system call. */ ++ DO_CALL (rfork, 1) ++ jb L(error_unmask) ++ ++ /* %rdx is now 0 for the parent and 1 for the child. */ ++ testq %rdx, %rdx ++ jnz L(child) ++ ++ /* Save the child pid, currently in %rax. */ ++ movq %rax, 0(%rsp) ++ ++ /* Restore the previous signal mask. */ ++ movl $SIG_SETMASK, %edi ++ leaq 16(%rsp), %rsi ++ xorl %edx,%edx ++ DO_CALL (sigprocmask, 3) ++ ++ /* Return the child pid, saved on stack. */ ++ movq 0(%rsp), %rax ++ addq $32, %rsp ++L(pseudo_end): ++ ret ++ ++L(error_unmask): ++ ++ /* Save the error code, currently in %rax. */ ++ movq %rax, 0(%rsp) ++ ++ /* Restore the previous signal mask. */ ++ movq $SIG_SETMASK, %rdi ++ leaq 16(%rsp), %rsi ++ xorl %edx,%edx ++ DO_CALL (sigprocmask, 3) ++ ++ /* load saved error code */ ++ movq 0(%rsp), %rax ++ ++L(error): ++ addq $32, %rsp ++ jmp SYSCALL_ERROR_LABEL ++ ++L(child):/* Here we are in the child thread. */ ++ ++ /* set up stack */ ++ movq %rsi, %rsp ++ ++ /* Clear the frame pointer. The ABI suggests this be done, to mark ++ the outermost frame obviously. */ ++ xorl %ebp, %ebp ++ ++ /* Restore the previous signal mask. */ ++ movq $SIG_SETMASK, %rdi ++ xorl %edx,%edx ++ DO_CALL (sigprocmask, 3) ++ ++ addq $16, %rsp ++ jmp L(thread_start2) ++ ++ cfi_startproc; ++ ++PSEUDO_END (__start_thread) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/swapcontext.S +@@ -0,0 +1,32 @@ ++/* swap current context. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text ++ENTRY(__swapcontext) ++ clc ++ DO_CALL (swapcontext, 2) ++ jb SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++ ++PSEUDO_END(__swapcontext) ++ ++weak_alias(__swapcontext, swapcontext) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/io.h +@@ -0,0 +1,180 @@ ++/* Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_IO_H ++#define _SYS_IO_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* If TURN_ON is TRUE, request for permission to do direct i/o on the ++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O ++ permission off for that range. This call requires root privileges. ++ ++ Portability note: not all kFreeBSD platforms support this call. Most ++ platforms based on the PC I/O architecture probably will, however. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to ++ access any I/O port is granted. This call requires root ++ privileges. */ ++extern int iopl (int __level) __THROW; ++ ++#if defined __GNUC__ && __GNUC__ >= 2 ++ ++static __inline unsigned char ++inb (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned char ++inb_p (unsigned short int port) ++{ ++ unsigned char _v; ++ ++ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw (unsigned short int port) ++{ ++ unsigned short _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned short int ++inw_p (unsigned short int port) ++{ ++ unsigned short int _v; ++ ++ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl (unsigned short int port) ++{ ++ unsigned int _v; ++ ++ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline unsigned int ++inl_p (unsigned short int port) ++{ ++ unsigned int _v; ++ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (port)); ++ return _v; ++} ++ ++static __inline void ++outb (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outb_p (unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outw (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1": :"a" (value), "Nd" (port)); ++ ++} ++ ++static __inline void ++outw_p (unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++outl (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (port)); ++} ++ ++static __inline void ++outl_p (unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (value), ++ "Nd" (port)); ++} ++ ++static __inline void ++insb (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insw (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++insl (unsigned short int port, void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsb (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsw (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++static __inline void ++outsl (unsigned short int port, const void *addr, unsigned long int count) ++{ ++ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (addr), ++ "=c" (count):"d" (port), "0" (addr), "1" (count)); ++} ++ ++#endif /* GNU C */ ++ ++__END_DECLS ++#endif /* _SYS_IO_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys/perm.h +@@ -0,0 +1,36 @@ ++/* Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_PERM_H ++#define _SYS_PERM_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++/* Set port input/output permissions. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++ ++/* Change I/O privilege level. */ ++extern int iopl (int __level) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_PERM_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sys_fork.S +@@ -0,0 +1,36 @@ ++/* Copyright (C) 1991-1992, 1994-1995, 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++.text; ++ENTRY (__syscall_fork) ++ DO_CALL (fork, 0) ++ jb SYSCALL_ERROR_LABEL; ++ /* R1 is now 0 for the parent and 1 for the child. Decrement it to ++ make it -1 (all bits set) for the parent, and 0 (no bits set) ++ for the child. Then AND it with R0, so the parent gets ++ R0&-1==R0, and the child gets R0&0==0. */ ++ ++ decq %rdx ++ andq %rdx, %rax ++ ++L(pseudo_end): ++ ret ++PSEUDO_END (__syscall_fork) ++libc_hidden_def (__syscall_fork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysarch.h +@@ -0,0 +1,72 @@ ++/* Parameters for the architecture specific system call. amd64 version. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYSARCH_H ++#define _SYSARCH_H 1 ++ ++#include ++ ++/* Function that can be used as first argument to 'sysarch'. */ ++enum ++ { ++ I386_GET_LDT = 0, ++#define I386_GET_LDT I386_GET_LDT ++ I386_SET_LDT = 1, ++#define I386_SET_LDT I386_SET_LDT ++ I386_GET_IOPERM = 3, ++#define I386_GET_IOPERM I386_GET_IOPERM ++ I386_SET_IOPERM = 4, ++#define I386_SET_IOPERM I386_SET_IOPERM ++ I386_GET_FSBASE = 7, ++#define I386_GET_FSBASE I386_GET_FSBASE ++ I386_SET_FSBASE = 8, ++#define I386_SET_FSBASE I386_SET_FSBASE ++ I386_GET_GSBASE = 9, ++#define I386_GET_GSBASE I386_GET_GSBASE ++ I386_SET_GSBASE = 10, ++#define I386_SET_GSBASE I386_SET_GSBASE ++ AMD64_GET_FSBASE = 128, ++#define AMD64_GET_FSBASE AMD64_GET_FSBASE ++ AMD64_SET_FSBASE = 129, ++#define AMD64_SET_FSBASE AMD64_SET_FSBASE ++ AMD64_GET_GSBASE = 130, ++#define AMD64_GET_GSBASE AMD64_GET_GSBASE ++ AMD64_SET_GSBASE = 131 ++#define AMD64_SET_GSBASE AMD64_SET_GSBASE ++ }; ++ ++/* Argument struct for I386_GET_IOPERM and I386_SET_IOPERM. */ ++struct i386_ioperm_args ++ { ++ unsigned int start; ++ unsigned int length; ++ int enable; ++ }; ++ ++__BEGIN_DECLS ++ ++extern int sysarch (int __cmd, void *__arg); ++ ++#ifdef _LIBC ++extern int __sysarch (int __cmd, void *__arg); ++#endif ++ ++__END_DECLS ++ ++#endif /* _SYSARCH_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/syscall.S +@@ -0,0 +1,31 @@ ++/* Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++ .text ++ENTRY (__syscall) ++ movq %rcx, %r10 ++ movl $SYS_ify (syscall), %eax ++ syscall ++ jb SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__syscall) ++weak_alias (__syscall, syscall) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/syscalls-internal.h +@@ -0,0 +1,78 @@ ++/* generally used "internal syscalls" ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef KFREEBSD_INTERNAL_SYSCALLS_H ++#define KFREEBSD_INTERNAL_SYSCALLS_H ++ ++#include ++ ++/* ++ for now, we do not care whether syscall succeeded, ++ we do not have defined ++ INTERNAL_SYSCALL_ERROR_P and INTERNAL_SYSCALL_ERRNO ++ we do not store errno at all ++ to be sure, we return void ++*/ ++ ++#undef INTERNAL_SYSCALL_DECL ++#undef INTERNAL_SYSCALL_NCS ++#undef INTERNAL_SYSCALL ++#undef INTERNAL_SYSCALL_ERROR_P ++#undef INTERNAL_SYSCALL_ERRNO ++ ++#define INTERNAL_SYSCALL_DECL(err) \ ++ do { } while (0) ++ ++#define INTERNAL_SYSCALL(name, err, nr, args...) \ ++ INTERNAL_SYSCALL_##name(name, err, nr, ##args) ++ ++ ++#define INTERNAL_SYSCALL_close(name, err, nr, fd) \ ++(void)({ \ ++ register long int _a1 = (long int) (fd); \ ++ register long int result; \ ++ asm volatile ( \ ++ "syscall" \ ++ : "=a" (result) \ ++ : "0" ((long int) SYS_##name), \ ++ "D" (_a1) \ ++ : "memory", "cc", "cx", "dx", "r8", "r9", "r10", "r11"); \ ++ result; \ ++}) ++ ++#define INTERNAL_SYSCALL_writev(name, err, nr, fd, iov, cnt) \ ++(void)({ \ ++ register long int _a1 = (long int) (fd); \ ++ register long int _a2 = (long int) (iov); \ ++ register long int _a3 = (long int) (cnt); \ ++ register long int result; \ ++ register long int _trash; \ ++ asm volatile ( \ ++ "syscall" \ ++ : "=a" (result), \ ++ "=d" (_trash) \ ++ : "0" ((long int) SYS_##name), \ ++ "D" (_a1), \ ++ "S" (_a2), \ ++ "d" (_a3) \ ++ /* beware rdx is not preserved after syscall */ \ ++ : "memory", "cc", "cx", "r8", "r9", "r10", "r11"); \ ++ result; \ ++}) ++#endif +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.S +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* The following code is only used in the shared library when we ++ compile the reentrant version. Otherwise each system call defines ++ each own version. */ ++ ++#ifndef PIC ++ ++/* The syscall stubs jump here when they detect an error. ++ The code for Linux is almost identical to the canonical Unix ++ code, except that the error number in %rax is negated. */ ++ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %rax. */ ++ ++ .text ++ENTRY (__syscall_error) ++ ++#define __syscall_error __syscall_error_1 ++#include ++ ++#endif /* !PIC */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/sysdep.h +@@ -0,0 +1,233 @@ ++/* Copyright (C) 2001,02,03,04 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Modification for FreeBSD contributed by Petr Salinger, 2006. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _KFREEBSD_X86_64_SYSDEP_H ++#define _KFREEBSD_X86_64_SYSDEP_H 1 ++ ++/* There is some commonality. */ ++#include ++#include ++#include ++#include ++ ++#ifdef IS_IN_rtld ++# include /* Defines RTLD_PRIVATE_ERRNO. */ ++#endif ++ ++ ++#ifdef __ASSEMBLER__ ++ ++/* We don't want the label for the error handle to be global when we define ++ it here. */ ++#ifdef PIC ++# define SYSCALL_ERROR_LABEL 0f ++#else ++# define SYSCALL_ERROR_LABEL syscall_error ++#endif ++ ++#undef PSEUDO ++#define PSEUDO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ jb SYSCALL_ERROR_LABEL; \ ++ L(pseudo_end): ++ ++#undef PSEUDO_END ++#define PSEUDO_END(name) \ ++ SYSCALL_ERROR_HANDLER \ ++ END (name) ++ ++#undef PSEUDO_NOERRNO ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_NOERRNO ++#define PSEUDO_END_NOERRNO(name) \ ++ END (name) ++ ++#define ret_NOERRNO ret ++ ++#undef PSEUDO_ERRVAL ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ .text; \ ++ ENTRY (name) \ ++ DO_CALL (syscall_name, args); \ ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END (name) ++ ++#define ret_ERRVAL ret ++ ++#ifndef PIC ++#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ ++#elif RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++0: \ ++ leaq rtld_errno(%rip), %rcx; \ ++ movl %eax, (%rcx); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++#elif USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno ++# else ++# define SYSCALL_ERROR_ERRNO errno ++# endif ++# define SYSCALL_ERROR_HANDLER \ ++0: \ ++ movq SYSCALL_ERROR_ERRNO@GOTTPOFF(%rip), %rcx;\ ++ movl %eax, %fs:(%rcx); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++#elif defined _LIBC_REENTRANT ++/* Store (%eax) into errno through the GOT. ++ Note that errno occupies only 4 bytes. */ ++# define SYSCALL_ERROR_HANDLER \ ++0: \ ++ pushq %rax; \ ++ cfi_adjust_cfa_offset(8); \ ++ PUSH_ERRNO_LOCATION_RETURN; \ ++ call BP_SYM (__errno_location)@PLT; \ ++ POP_ERRNO_LOCATION_RETURN; \ ++ popq %rdx; \ ++ cfi_adjust_cfa_offset(-8); \ ++ movl %edx, (%rax); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++ ++/* A quick note: it is assumed that the call to `__errno_location' does ++ not modify the stack! */ ++#else /* Not _LIBC_REENTRANT. */ ++# define SYSCALL_ERROR_HANDLER \ ++0:movq errno@GOTPCREL(%RIP), %rcx; \ ++ movl %eax, (%rcx); \ ++ orq $-1, %rax; \ ++ jmp L(pseudo_end); ++#endif /* PIC */ ++ ++/* The FreeBSD/amd64 kernel expects the system call parameters in ++ registers according to the following table: ++ ++ syscall number rax ++ arg 1 rdi ++ arg 2 rsi ++ arg 3 rdx ++ arg 4 r10 ++ arg 5 r8 ++ arg 6 r9 ++ ++ The FreeBSD kernel internal syscall usage of registers: ++ ++ preserved: ++ stack pointer rsp ++ C preserved rbx, rbp, r12-r15 ++ some input params rdi, rsi ++ ++ destroyed: ++ return value(s) rax, rdx, eflags ++ return address from syscall rcx ++ eflags from syscall r11 ++ used internally r8-r10 ++ ++ Normal function call, including calls to the system call stub ++ functions in the libc, get the first six parameters passed in ++ registers and the seventh parameter and later on the stack. The ++ register use is as follows: ++ ++ system call number in the DO_CALL macro ++ arg 1 rdi ++ arg 2 rsi ++ arg 3 rdx ++ arg 4 rcx ++ arg 5 r8 ++ arg 6 r9 ++ ++ We have to take care that the stack is aligned to 16 bytes. When ++ called the stack is not aligned since the return address has just ++ been pushed. ++ ++*/ ++ ++#undef DO_CALL ++#define DO_CALL(syscall_name, args) \ ++ DOARGS_##args \ ++ movl $SYS_ify (syscall_name), %eax; \ ++ syscall; ++ ++#define DOARGS_0 /* nothing */ ++#define DOARGS_1 /* nothing */ ++#define DOARGS_2 /* nothing */ ++#define DOARGS_3 /* nothing */ ++#define DOARGS_4 movq %rcx, %r10; ++#define DOARGS_5 DOARGS_4 ++#define DOARGS_6 DOARGS_5 ++#define DOARGS_7 DOARGS_6 ++#define DOARGS_8 DOARGS_7 ++ ++#else /* !__ASSEMBLER__ */ ++ ++#include ++ ++#endif /* __ASSEMBLER__ */ ++ ++ ++/* Pointer mangling support. */ ++#if defined NOT_IN_libc && defined IS_IN_rtld ++/* We cannot use the thread descriptor because in ld.so we use setjmp ++ earlier than the descriptor is initialized. */ ++# ifdef __ASSEMBLER__ ++# define PTR_MANGLE(reg) xorq __pointer_chk_guard_local(%rip), reg; \ ++ rolq $17, reg ++# define PTR_DEMANGLE(reg) rorq $17, reg; \ ++ xorq __pointer_chk_guard_local(%rip), reg ++# else ++# define PTR_MANGLE(reg) asm ("xorq __pointer_chk_guard_local(%%rip), %0\n" \ ++ "rolq $17, %0" \ ++ : "=r" (reg) : "0" (reg)) ++# define PTR_DEMANGLE(reg) asm ("rorq $17, %0\n" \ ++ "xorq __pointer_chk_guard_local(%%rip), %0" \ ++ : "=r" (reg) : "0" (reg)) ++# endif ++#else ++# ifdef __ASSEMBLER__ ++# define PTR_MANGLE(reg) xorq %fs:POINTER_GUARD, reg; \ ++ rolq $17, reg ++# define PTR_DEMANGLE(reg) rorq $17, reg; \ ++ xorq %fs:POINTER_GUARD, reg ++# else ++# define PTR_MANGLE(var) asm ("xorq %%fs:%c2, %0\n" \ ++ "rolq $17, %0" \ ++ : "=r" (var) \ ++ : "0" (var), \ ++ "i" (offsetof (tcbhead_t, \ ++ pointer_guard))) ++# define PTR_DEMANGLE(var) asm ("rorq $17, %0\n" \ ++ "xorq %%fs:%c2, %0" \ ++ : "=r" (var) \ ++ : "0" (var), \ ++ "i" (offsetof (tcbhead_t, \ ++ pointer_guard))) ++# endif ++#endif ++ ++#endif /* _KFREEBSD_X86_64_SYSDEP_H */ +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/ucontext_i.h +@@ -0,0 +1,38 @@ ++/* Offsets needed in the makecontext() function implementation. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Offsets of the fields in the ucontext_t structure. */ ++ ++#define oRDI 24 ++#define oRSI 32 ++#define oRDX 40 ++#define oRCX 48 ++#define oR8 56 ++#define oR9 64 ++ ++#define oRAX 72 ++#define oRBX 80 ++#define oRBP 88 ++ ++#define oRIP 176 ++#define oRSP 200 ++ ++#define oLINK 816 ++#define oSS_SP 824 ++#define oSS_SIZE 832 +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/x86_64/vfork.S +@@ -0,0 +1,58 @@ ++/* Copyright (C) 1999, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++ /* Pop the return PC value into ESI. */ ++ popq %rsi ++ cfi_adjust_cfa_offset(-8) ++ ++ /* Perform the system call. */ ++ DO_CALL (vfork, 0) ++ jb L(error) /* Branch forward if it failed. */ ++ ++ /* In the parent process, %rdx == 0, %rax == child pid. */ ++ /* In the child process, %rdx == 1, %rax == parent pid. */ ++ ++ /* Change %rax to be 0 in the child process. */ ++ decq %rdx ++ andq %rdx, %rax ++ ++ /* Jump to the return PC. */ ++ jmp *%rsi ++ ++L(error): ++ /* Push back the return PC. */ ++ pushq %rsi ++ cfi_adjust_cfa_offset(8) ++ ++ /* Branch to the error handler, hidden in PSEUDO_END. */ ++ jmp SYSCALL_ERROR_LABEL ++L(pseudo_end): ++ ret ++PSEUDO_END (__vfork) ++libc_hidden_def (__vfork) ++ ++weak_alias (__vfork, vfork) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/xmknod.c +@@ -0,0 +1,48 @@ ++/* xmknod call using old-style Unix mknod and mkfifo system calls. ++ Copyright (C) 1991, 1993, 1995-1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++extern int __syscall_mknod (const char *, mode_t, dev_t); ++extern int __mkfifo (const char *, mode_t); ++ ++/* Create a device file named PATH, with permission and special bits MODE ++ and device number DEV (which can be constructed from major and minor ++ device numbers with the `makedev' macro above). */ ++int ++__xmknod (int vers, const char *path, mode_t mode, dev_t *dev) ++{ ++ if (vers != _MKNOD_VER) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++ /* The FreeBSD mknod() system call cannot be used to create FIFOs; we ++ must use the mkfifo() system call for this purpose. */ ++ if (S_ISFIFO (mode)) ++ return __mkfifo (path, mode & ~S_IFMT); ++ ++ return __syscall_mknod (path, mode, *dev); ++} ++libc_hidden_def (__xmknod) ++ ++weak_alias (__xmknod, _xmknod) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/xmknodat.c +@@ -0,0 +1,145 @@ ++/* Copyright (C) 2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++extern int __syscall_mknodat (int fd, const char *path, ++ mode_t mode, dev_t dev); ++libc_hidden_proto (__syscall_mknodat) ++ ++extern int __syscall_mkfifoat (int fd, const char *path, ++ mode_t mode); ++libc_hidden_proto (__syscall_mkfifoat) ++ ++/* Create a device file named PATH relative to FD, with permission and ++ special bits MODE and device number DEV (which can be constructed ++ from major and minor device numbers with the `makedev' macro above). */ ++int ++__xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t * dev) ++{ ++ if (vers != _MKNOD_VER) ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++ ++# ifndef __ASSUME_ATFCTS ++ if (__have_atfcts >= 0) ++# endif ++ { ++ int result; ++ ++ /* The FreeBSD mknod() system call cannot be used to create FIFOs; we ++ must use the mkfifo() system call for this purpose. */ ++ if (S_ISFIFO (mode)) ++ result = INLINE_SYSCALL (mkfifoat, 3, fd, file, mode); ++ else ++ result = INLINE_SYSCALL (mknodat, 4, fd, file, mode, *dev); ++ ++# ifndef __ASSUME_ATFCTS ++ if (result == -1 && errno == ENOSYS) ++ __have_atfcts = -1; ++ else ++# endif ++ return result; ++ } ++ ++#ifndef __ASSUME_ATFCTS ++ if (fd != AT_FDCWD && file[0] != '/') ++ { ++ int mib[4]; ++ size_t kf_len = 0; ++ char *kf_buf, *kf_bufp; ++ size_t filelen; ++ ++ if (fd < 0) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ ++ filelen = strlen (file); ++ if (__builtin_expect (filelen == 0, 0)) ++ { ++ __set_errno (ENOENT); ++ return -1; ++ } ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_FILEDESC; ++ mib[3] = __getpid (); ++ ++ if (__sysctl (mib, 4, NULL, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_buf = alloca (kf_len + filelen); ++ if (__sysctl (mib, 4, kf_buf, &kf_len, NULL, 0) != 0) ++ { ++ __set_errno (ENOSYS); ++ return -1; ++ } ++ ++ kf_bufp = kf_buf; ++ while (kf_bufp < kf_buf + kf_len) ++ { ++ struct kinfo_file *kf = (struct kinfo_file *) (uintptr_t) kf_bufp; ++ ++ if (kf->kf_fd == fd) ++ { ++ if (kf->kf_type != KF_TYPE_VNODE || ++ kf->kf_vnode_type != KF_VTYPE_VDIR) ++ { ++ __set_errno (ENOTDIR); ++ return -1; ++ } ++ ++ strcat (kf->kf_path, "/"); ++ strcat (kf->kf_path, file); ++ file = kf->kf_path; ++ break; ++ } ++ kf_bufp += kf->kf_structsize; ++ } ++ ++ if (kf_bufp >= kf_buf + kf_len) ++ { ++ __set_errno (EBADF); ++ return -1; ++ } ++ } ++ ++ return __xmknod (vers, file, mode, dev); ++#endif ++} ++ ++libc_hidden_def (__xmknodat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/xstat.c +@@ -0,0 +1,49 @@ ++/* xstat using FreeBSD stat, nstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__xstat (int vers, const char *file, struct stat *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_stat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat (&buf16, buf); ++ return result; ++ } ++ else if (__builtin_expect (vers == _STAT_VER_stat, 1)) ++ return __syscall_stat (CHECK_STRING (file), ++ CHECK_1 ((struct stat16 *) buf)); ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__xstat) ++ ++weak_alias (__xstat, _xstat) +--- /dev/null ++++ b/ports/sysdeps/unix/bsd/bsd4.4/kfreebsd/xstat64.c +@@ -0,0 +1,44 @@ ++/* xstat using FreeBSD stat, nstat system calls. ++ Copyright (C) 1991,1995-1997,2000,2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include "stat16conv.c" ++ ++int ++__xstat64 (int vers, const char *file, struct stat64 *buf) ++{ ++ if (__builtin_expect (vers == _STAT_VER, 1)) ++ { ++ struct stat16 buf16; ++ int result = __syscall_stat (CHECK_STRING (file), __ptrvalue (&buf16)); ++ if (result == 0) ++ stat16_to_stat64 (&buf16, buf); ++ return result; ++ } ++ else ++ { ++ __set_errno (EINVAL); ++ return -1; ++ } ++} ++hidden_def (__xstat64) --- eglibc-2.13.orig/debian/patches/kfreebsd/local-sys_queue_h.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-sys_queue_h.diff @@ -0,0 +1,90 @@ +--- + misc/sys/queue.h | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +--- a/misc/sys/queue.h ++++ b/misc/sys/queue.h +@@ -32,6 +32,8 @@ + #ifndef _SYS_QUEUE_H_ + #define _SYS_QUEUE_H_ + ++#include ++ + /* + * This file defines five types of data structures: singly-linked lists, + * lists, simple queues, tail queues, and circular queues. +@@ -136,6 +138,11 @@ + (var); \ + (var) = ((var)->field.le_next)) + ++#define LIST_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = ((head)->lh_first); \ ++ (var) && ((tvar) = ((var)->field.le_next), 1); \ ++ (var) = (tvar)) ++ + /* + * List access methods. + */ +@@ -197,6 +204,16 @@ + #define SLIST_FOREACH(var, head, field) \ + for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next) + ++#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = SLIST_FIRST((head)); \ ++ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ ++ (var) = (tvar)) ++ ++#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ ++ for ((varp) = &SLIST_FIRST((head)); \ ++ ((var) = *(varp)) != NULL; \ ++ (varp) = &SLIST_NEXT((var), field)) ++ + /* + * Singly-linked List access methods. + */ +@@ -253,6 +270,11 @@ + (head)->stqh_last = &(head)->stqh_first; \ + } while (/*CONSTCOND*/0) + ++#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \ ++ if (((head)->stqh_first = ((elm)->field.stqe_next)) == NULL) \ ++ (head)->stqh_last = &((head)->stqh_first); \ ++} while (/*CONSTCOND*/0) ++ + #define STAILQ_REMOVE(head, elm, type, field) do { \ + if ((head)->stqh_first == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ +@@ -271,6 +293,11 @@ + (var); \ + (var) = ((var)->field.stqe_next)) + ++#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = ((elm)->field.stqe_next); \ ++ (var) && ((tvar) = ((var)->field.stqe_next), 1); \ ++ (var) = (tvar)) ++ + #define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ +@@ -437,11 +464,21 @@ + (var); \ + (var) = ((var)->field.tqe_next)) + ++#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ ++ for ((var) = ((head)->tqh_first); \ ++ (var) && ((tvar) = ((var)->field.tqe_next), 1); \ ++ (var) = (tvar)) ++ + #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \ + (var); \ + (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last))) + ++#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ ++ for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \ ++ (var) && ((tvar) = (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)), 1); \ ++ (var) = (tvar)) ++ + #define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ --- eglibc-2.13.orig/debian/patches/kfreebsd/local-pthread_at_fork.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-pthread_at_fork.diff @@ -0,0 +1,15 @@ +--- + linuxthreads/old_pthread_atfork.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/linuxthreads/old_pthread_atfork.c ++++ b/linuxthreads/old_pthread_atfork.c +@@ -19,7 +19,7 @@ + + #include + +-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_3) ++#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_3_2) + # define __pthread_atfork __dyn_pthread_atfork + # include "pthread_atfork.c" + # undef __pthread_atfork --- eglibc-2.13.orig/debian/patches/kfreebsd/local-undef-glibc.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-undef-glibc.diff @@ -0,0 +1,18 @@ +Description: #undef __GLIBC__ before defining it +Author: rmh +Upstream status: REJECTED. DO NOT SUBMIT. (send to debian instead) + +--- + include/features.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/features.h ++++ b/include/features.h +@@ -336,6 +336,7 @@ + + /* Major and minor version number of the GNU C library package. Use + these macros to test for features in specific releases. */ ++#undef __GLIBC__ + #define __GLIBC__ 2 + #define __GLIBC_MINOR__ 13 + --- eglibc-2.13.orig/debian/patches/kfreebsd/local-grantpt.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-grantpt.diff @@ -0,0 +1,21 @@ +--- + sysdeps/unix/grantpt.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/sysdeps/unix/grantpt.c ++++ b/sysdeps/unix/grantpt.c +@@ -201,9 +201,13 @@ + else + { + int w; +- ++retry: + if (__waitpid (pid, &w, 0) == -1) ++ { ++ if (errno == EINTR) ++ goto retry; + goto cleanup; ++ }; + if (!WIFEXITED (w)) + __set_errno (ENOEXEC); + else --- eglibc-2.13.orig/debian/patches/kfreebsd/local-dosavesse.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-dosavesse.diff @@ -0,0 +1,116 @@ + unfortunately, it does not work + in mean time use local-nosavesse.diff + +--- a/linuxthreads/descr.h ++++ b/linuxthreads/descr.h +@@ -114,6 +114,7 @@ + /* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */ + union + { ++ tcbhead_t tcbheader; + struct + { + void *tcb; /* Pointer to the TCB. This is not always +--- a/linuxthreads/sysdeps/x86_64/tcb-offsets.sym ++++ b/linuxthreads/sysdeps/x86_64/tcb-offsets.sym +@@ -3,3 +3,4 @@ + + MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) + POINTER_GUARD offsetof (tcbhead_t, pointer_guard) ++RTLD_SAVESPACE_SSE offsetof (tcbhead_t, rtld_savespace_sse) +--- a/linuxthreads/sysdeps/x86_64/tls.h ++++ b/linuxthreads/sysdeps/x86_64/tls.h +@@ -26,6 +26,7 @@ + # include + # include + # include ++# include + + /* Type for the dtv. */ + typedef union dtv +@@ -46,6 +47,7 @@ + dtv_t *dtv; + void *self; /* Pointer to the thread descriptor. */ + int multiple_threads; ++ int __unused1; + uintptr_t sysinfo; + uintptr_t stack_guard; + uintptr_t pointer_guard; +@@ -53,7 +55,13 @@ + long gscope_flag; + # else + int gscope_flag; ++ int __unused2; + # endif ++ void *__padding1[7]; ++ int rtld_must_xmm_save; ++ int __unused3; ++ /* Have space for the post-AVX register size. */ ++ __m128 rtld_savespace_sse[8][4]; + } tcbhead_t; + + #else /* __ASSEMBLER__ */ +@@ -77,13 +85,19 @@ + # define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) + + /* Alignment requirements for the initial TCB. */ +-# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) ++//# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t) ++// Normally the above would be correct But we have to store post-AVX ++// vector registers in the TCB and we want the storage to be aligned. ++// unfortunately there isn't yet a type for these values and hence no ++// 32-byte alignment requirement. Make this explicit, for now. ++# define TLS_INIT_TCB_ALIGN 32 + + /* This is the size of the TCB. */ + # define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct) + + /* Alignment requirements for the TCB. */ + # define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct) ++// It is already 32B aligned + + /* The TCB can have any size and the memory following the address the + thread pointer points to is unspecified. Allocate the TCB there. */ +@@ -189,7 +203,42 @@ + #define THREAD_GSCOPE_WAIT() \ + do { /* GL(dl_wait_lookup_done) () */ } while (0) + ++ ++# ifdef SHARED ++/* Defined in dl-trampoline.S. */ ++extern void _dl_x86_64_save_sse (void); ++extern void _dl_x86_64_restore_sse (void); ++ ++# define RTLD_CHECK_FOREIGN_CALL \ ++ (THREAD_GETMEM (THREAD_SELF, p_header.tcbheader.rtld_must_xmm_save) != 0) ++ ++/* NB: Don't use the xchg operation because that would imply a lock ++ prefix which is expensive and unnecessary. The cache line is also ++ not contested at all. */ ++# define RTLD_ENABLE_FOREIGN_CALL \ ++ int old_rtld_must_xmm_save = THREAD_GETMEM (THREAD_SELF, \ ++ p_header.tcbheader.rtld_must_xmm_save); \ ++ THREAD_SETMEM (THREAD_SELF, p_header.tcbheader.rtld_must_xmm_save, 1) ++ ++# define RTLD_PREPARE_FOREIGN_CALL \ ++ do if (THREAD_GETMEM (THREAD_SELF, p_header.tcbheader.rtld_must_xmm_save)) \ ++ { \ ++ _dl_x86_64_save_sse (); \ ++ THREAD_SETMEM (THREAD_SELF, p_header.tcbheader.rtld_must_xmm_save, 0); \ ++ } \ ++ while (0) ++ ++# define RTLD_FINALIZE_FOREIGN_CALL \ ++ do { \ ++ if (THREAD_GETMEM (THREAD_SELF, p_header.tcbheader.rtld_must_xmm_save) == 0) \ ++ _dl_x86_64_restore_sse (); \ ++ THREAD_SETMEM (THREAD_SELF, p_header.tcbheader.rtld_must_xmm_save, \ ++ old_rtld_must_xmm_save); \ ++ } while (0) ++# endif ++ + # endif /* HAVE_TLS_SUPPORT */ ++ + #endif /* __ASSEMBLER__ */ + + #endif /* tls.h */ --- eglibc-2.13.orig/debian/patches/kfreebsd/local-linuxthreads29.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-linuxthreads29.diff @@ -0,0 +1,101 @@ + +some of these hacks should be solved properly by upstream ... + +--- + linuxthreads/sysdeps/pthread/bits/libc-tsd.h | 12 ++++++------ + linuxthreads/sysdeps/pthread/malloc-machine.h | 6 +++--- + nscd/connections.c | 4 ++++ + sysdeps/i386/tlsdesc.sym | 4 ++++ + sysdeps/x86_64/tlsdesc.sym | 5 ++++- + 5 files changed, 21 insertions(+), 10 deletions(-) + +--- a/nscd/connections.c ++++ b/nscd/connections.c +@@ -876,6 +876,7 @@ + #endif + } + ++#if defined(SOCK_CLOEXEC) && defined(SOCK_NONBLOCK) + /* Create the socket. */ + #ifndef __ASSUME_SOCK_CLOEXEC + sock = -1; +@@ -888,6 +889,9 @@ + have_sock_cloexec = sock != -1 || errno != EINVAL ? 1 : -1; + #endif + } ++#else ++have_sock_cloexec = -1; ++#endif + #ifndef __ASSUME_SOCK_CLOEXEC + if (have_sock_cloexec < 0) + sock = socket (AF_UNIX, SOCK_STREAM, 0); +--- a/sysdeps/i386/tlsdesc.sym ++++ b/sysdeps/i386/tlsdesc.sym +@@ -8,7 +8,11 @@ + + -- Abuse tls.h macros to derive offsets relative to the thread register. + ++#if 0 + DTV_OFFSET offsetof(struct pthread, header.dtv) ++#else ++DTV_OFFSET offsetof(struct _pthread_descr_struct, p_header.data.dtvp) ++#endif + + TLSDESC_ARG offsetof(struct tlsdesc, arg) + +--- a/sysdeps/x86_64/tlsdesc.sym ++++ b/sysdeps/x86_64/tlsdesc.sym +@@ -5,10 +5,13 @@ + #include + + -- ++#if 0 ++ DTV_OFFSET offsetof(struct pthread, header.dtv) */ ++#endif + + -- Abuse tls.h macros to derive offsets relative to the thread register. + +-DTV_OFFSET offsetof(struct pthread, header.dtv) ++DTV_OFFSET offsetof(struct _pthread_descr_struct, p_header.data.dtvp) + + TLSDESC_ARG offsetof(struct tlsdesc, arg) + +--- a/linuxthreads/sysdeps/pthread/malloc-machine.h ++++ b/linuxthreads/sysdeps/pthread/malloc-machine.h +@@ -57,10 +57,10 @@ + #include + + typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */ +-__libc_tsd_define (static, MALLOC) /* declaration/common definition */ ++__libc_tsd_define (static, void *, MALLOC) /* declaration/common definition */ + #define tsd_key_create(key, destr) ((void) (key)) +-#define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data)) +-#define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (MALLOC)) ++#define tsd_setspecific(key, data) __libc_tsd_set (void *, MALLOC, (data)) ++#define tsd_getspecific(key, vptr) ((vptr) = __libc_tsd_get (void *, MALLOC)) + + #include + +--- a/linuxthreads/sysdeps/pthread/bits/libc-tsd.h ++++ b/linuxthreads/sysdeps/pthread/bits/libc-tsd.h +@@ -42,14 +42,14 @@ + weak_extern (__pthread_internal_tsd_set) + # endif + +-#define __libc_tsd_define(CLASS, KEY) CLASS void *__libc_tsd_##KEY##_data; +-#define __libc_tsd_address(KEY) \ +- __libc_maybe_call2 (pthread_internal_tsd_address, \ ++#define __libc_tsd_define(CLASS, TYPE, KEY) CLASS TYPE __libc_tsd_##KEY##_data; ++#define __libc_tsd_address(TYPE, KEY) \ ++ (TYPE *) __libc_maybe_call2 (pthread_internal_tsd_address, \ + (_LIBC_TSD_KEY_##KEY), &__libc_tsd_##KEY##_data) +-#define __libc_tsd_get(KEY) \ +- __libc_maybe_call2 (pthread_internal_tsd_get, \ ++#define __libc_tsd_get(TYPE, KEY) \ ++ (TYPE) __libc_maybe_call2 (pthread_internal_tsd_get, \ + (_LIBC_TSD_KEY_##KEY), __libc_tsd_##KEY##_data) +-#define __libc_tsd_set(KEY, VALUE) \ ++#define __libc_tsd_set(TYPE, KEY, VALUE) \ + __libc_maybe_call2 (pthread_internal_tsd_set, \ + (_LIBC_TSD_KEY_##KEY, (VALUE)), \ + (__libc_tsd_##KEY##_data = (VALUE), 0)) --- eglibc-2.13.orig/debian/patches/kfreebsd/local-readdir_r.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-readdir_r.diff @@ -0,0 +1,47 @@ +--- + sysdeps/unix/readdir_r.c | 33 +++++++++++++++++++++++++-------- + 1 file changed, 25 insertions(+), 8 deletions(-) + +--- a/sysdeps/unix/readdir_r.c ++++ b/sysdeps/unix/readdir_r.c +@@ -114,15 +114,32 @@ + + if (dp != NULL) + { +-#ifdef GETDENTS_64BIT_ALIGNED +- /* The d_reclen value might include padding which is not part of +- the DIRENT_TYPE data structure. */ +- reclen = MIN (reclen, +- offsetof (DIRENT_TYPE, d_name) + sizeof (dp->d_name)); +-#endif ++ /* The required size of *entry, according to POSIX, is ++ offsetof (DIRENT_TYPE, d_name[0]) + NAME_MAX + 1. ++ We must not write beyond the end of *entry. On some operating ++ systems, dp->d_reclen may be larger; in this case, copy only as ++ many bytes as needed. Also give an error if d_name is too long. */ ++#ifdef _DIRENT_HAVE_D_RECLEN ++ /* DIRENT_TYPE is of variable size, with d_name as its last entry. */ ++ size_t namelen; ++# ifdef _DIRENT_HAVE_D_NAMLEN ++ namelen = dp->d_namlen; ++# else ++ namelen = strlen (dp->d_name); ++# endif ++ ++ if (namelen <= NAME_MAX) ++ *result = memcpy (entry, dp, ++ offsetof (DIRENT_TYPE, d_name[0]) + namelen + 1); ++ else ++ { ++ errno = EOVERFLOW; ++ dp = NULL; ++ *result = NULL; ++ } ++#else ++ /* DIRENT_TYPE is of fixed size. */ + *result = memcpy (entry, dp, reclen); +-#ifdef GETDENTS_64BIT_ALIGNED +- entry->d_reclen = reclen; + #endif + } + else --- eglibc-2.13.orig/debian/patches/kfreebsd/local-nosavesse.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-nosavesse.diff @@ -0,0 +1,18 @@ + + similar to 2.10 code + +--- + sysdeps/x86_64/dl-trampoline.S | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/x86_64/dl-trampoline.S ++++ b/sysdeps/x86_64/dl-trampoline.S +@@ -163,7 +163,7 @@ + #endif + + +-#ifdef SHARED ++#if defined(SHARED) && defined(__linux__) + .globl _dl_x86_64_save_sse + .type _dl_x86_64_save_sse, @function + .align 16 --- eglibc-2.13.orig/debian/patches/kfreebsd/local-memusage_no_mremap.diff +++ eglibc-2.13/debian/patches/kfreebsd/local-memusage_no_mremap.diff @@ -0,0 +1,23 @@ +--- + malloc/memusage.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/malloc/memusage.c ++++ b/malloc/memusage.c +@@ -674,6 +674,8 @@ + return result; + } + ++#include <_G_config.h> ++#ifdef _G_HAVE_MREMAP + + /* `mmap' replacement. We do not have to keep track of the sizesince + `munmap' will get it as a parameter. */ +@@ -739,6 +741,7 @@ + /* Return the pointer to the user buffer. */ + return result; + } ++#endif + + + /* `munmap' replacement. */ --- eglibc-2.13.orig/debian/patches/m32r/local-ports-m32r.diff +++ eglibc-2.13/debian/patches/m32r/local-ports-m32r.diff @@ -0,0 +1,5424 @@ +diff --exclude=CVS -upNr ports/ChangeLog.m32r ports/ChangeLog.m32r +--- ports/ChangeLog.m32r 1970-01-01 09:00:00.000000000 +0900 ++++ ports/ChangeLog.m32r 2006-05-09 10:23:08.000000000 +0900 +@@ -0,0 +1,297 @@ ++2006-06-07 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/configure: Removed ++ libc_cv_gcc_unwind_find=yes, because we provide _Unwind_Find_FDE ++ from libgcc. ++ * sysdeps/unix/sysv/linux/m32r/configure: Ditto. ++ ++2006-04-24 Kazuhiro Inaoka ++ * sysdeps/m32r/setjmp.h : Avoid stdlib/isomac.out Error. ++ ++2006-04-06 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h : ++ Changed for IS_IN_librt case. Gather a common SYSCALL_ERROR_HANDLER ++ code. ++ ++2006-03-24 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h : ++ Recoverd the code before 2006-03-02. ++ ++2006-03-22 Kazuhiro Inaoka ++ * Rebuild by gcc-3.4.3-13.0.3. ++ * sysdeps/m32r/strlen.S (strlen): Disable pre-read codes. ++ * sysdeps/unix/sysv/linux/m32r/mmap.S (strlen): Set an Error Code ++ when using an illegal offset value. ++ ++2006-03-02 Kazuhiro Inaoka ++ * sysdeps/unix/sysv/linux/m32r/clone.S (__clone): Changes for ++ the new system call calling convention of the kernel. ++ Marged calling SYSCALL_ERROR_HANDLER. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h : Use @GOT, @PLT, @GOTOFF. ++ Add "|| nop" after trap. Marged calling SYSCALL_ERROR_HANDLER. ++ * sysdeps/unix/sysv/linux/m32r/brk.c (__brk): Ditto. ++ * sysdeps/unix/sysv/linux/m32r/flushcache.S (__brk): Ditto. ++ * sysdeps/unix/sysv/linux/m32r/sigaction.c : Ditto. ++ * sysdeps/unix/m32r/sysdep.S : Ditto. ++ * sysdeps/m32r/bsd-_setjmp.S (_setjmp): Ditto. ++ * sysdeps/m32r/bsd-setjmp.S (setjmp): Ditto. ++ * sysdeps/m32r/setjmp.S (__sigsetjmp): Ditto. ++ * sysdeps/m32r/dl-machine.h : Ditto. ++ * sysdeps/m32r/m32r-mcount.S (_mcount): Ditto. ++ * sysdeps/m32r/sysdep.h : Ditto. ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h : ++ Use @GOT, @PLT, @GOTOFF. Fixed typo. Changed for IS_IN_librt case. ++ Removed UNDOCARGS2_*. Removed UNDOCARGS_5 DOCARGS_5 verbose saving. ++ sigaction.cv ++ ++2006-03-01 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/bits/fcntl.h ++ [__USE_GNU] (F_SETLEASE. F_GETLEASE, F_NOTIFY): New macros. ++ [__USE_GNU] (LOCK_MAND, LOCK_READ, LOCK_WRITE, LOCK_RW): New macros. ++ [__USE_GNU] (DN_ACCESS, DN_MODIFY, DN_CREATE, DN_DELETE, DN_RENAME, ++ DN_ATTRIB, DN_MULTISHOT): New macros. ++ ++2006-01-26 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/brk.c (__brk): Fixed conflist r0 on ++ asm(). ++ ++2006-01-18 Kazuhiro Inaoka ++ ++ * sysdeps/unix/m32r/sysdep.S: Changed to avoid redefined ++ error of symbol `__syscall_error_1'. ++ ++2005-11-22 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/dl-machine.h (elf_machine_rela): Support ++ R_M32R_10_PCREL_RELA. ++ Remove a code to use relocation field at R_M32R_26_PCREL_RELA ++ and R_M32R_18_PCREL_RELA. The field must be 0 with RELA. ++ ++2005-11-18 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/bits/setjmp.h (_JMPBUF_UNWINDS): Remove unnecessary &. ++ Make sure only setjmp.h or pthread.h are allow to include ++ bits/setjmp.h. ++ ++2005-10-21 Hirokazu Takata ++ ++ * sysdeps/m32r/memset.S: Update for m32r2. ++ ++2005-10-20 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/elf/start.S: Support Update PIE. ++ ++2005-10-19 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Remove weak_alias ++ to create listen if NO_WEAK_ALIAS is defined. ++ ++2005-10-14 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/gccframe.h: New file for dwarf2-unwind. ++ * sysdeps/unix/sysv/linux/m32r/configure: Support dwarf2-unwind. ++ ++2005-07-15 ++ ++ * sysdeps/m32r/dl-machine.h: Support R_M32R_REL32. ++ It's important to change with elf/elf.h. ++ ++2005-03-03 Hirokazu Takata ++ ++ * sysdeps/unix/sysv/linux/m32r/kernel-features.h: Removed ++ __ASSUME_VFORK_SYSCALL. ++ ++2005-02-22 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S: Changed for ++ __ASSUME_VFORK_SYSCALL. ++ * sysdeps/unix/sysv/linux/m32r/vfork.S: Ditto. ++ ++2005-02-15 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Added .fillinsn. ++ ++2005-02-10 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S: Changed to ++ reference pthread_create. ++ ++2005-02-04 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h: ++ Support thread cancel. ++ * sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/clone.S: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Ditto. ++ ++2005-01-31 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/socket.S: Removed # in macro body. ++ * sysdeps/unix/sysv/linux/Makefile: Removed gnulib, gnulib-static. ++ * sysdeps/unix/sysv/linux/sigaction.c: Changed ++ to "kernel-features.h" ++ ++2004-12-20 NIIBE Yutaka ++ ++ * sysdeps/unix/sysv/linux/m32r/kernel-features.h: Port for ++ kernel-2.6.9. ++ * sysdeps/unix/sysv/linux/m32r/getgid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/sigaction.c: Ditto. ++ * glibc-20041101/sysdeps/unix/sysv/linux/i386/fcntl.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/chown.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getresgid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getresuid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getrlimit.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/getrlimit64.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/lchown.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/msgctl.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/semctl.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/setfsgid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/setfsuid.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/setrlimit.c: Ditto. ++ * sysdeps/unix/sysv/linux/m32r/shmctl.c: Ditto. ++ * ++ ++2004-10-26 Kazuhiro Inaoka ++ ++ * ChangeLog.m32r: Fix typo in comment. ++ * sysdeps/m32r/preconfigure: Removed. ++ * sysdeps/m32r/configure.in: New file. ++ * sysdeps/m32r/configure: New generated file. ++ * sysdeps/m32r/linuxthreads/pspinlock.c (__pthread_spin_lock): ++ Changed INLINE_SYSCALL to INTERNAL_SYSCALL. ++ (__pthread_spin_trylock): Ditto. ++ * sysdeps/unix/sysv/linux/m32r/Versions: Removed GLIBC_2.2 ++ versioning, Added GLIBC_2.3 versioning. ++ ++2004-10-25 Kazuhiro Inaoka ++ ++ Moved from separate m32r-linuxthreads into m32r/linuxthreads ++ subdirs: ++ 2004-09-09 Kazuhiro Inaoka ++ * sysdeps/m32r/pspinlock.c: New file. ++ * sysdeps/m32r/pt-machine.h: New file ++ * sysdeps/m32r/preconfigure: Renamed from configure. ++ * sysdeps/m32r/shlib-versions: Moved from top level.. ++ * sysdeps/unix/sysv/linux/m32r/Makefile: Add static-gnulilb ++ environment value difinition. ++ ++2004-10-19 Kazuhiro Inaoka ++ ++ * m32r/configure: Changed into the simple rule. ++ ++2004-10-08 Kazuhiro Inaoka ++ ++ * sysdeps/unix/sysv/linux/m32r/mmap.S (__mmap): Use sys_mmap2. ++ ++2004-10-05 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/dl-machine.h (elf_machine_rela_relative): Replace ++ static inline by auto inline, add always_inline attribute. ++ (elf_machine_rela): Likewise. ++ (elf_machine_lazy_rel): Likewise. ++ (elf_machine_runtime_setup): add always_inline attribute. ++ * sysdeps/unix/sysv/linux/m32r/bits/mman.h: Define PROT_GROWSDOWN ++ and PROT_GROWSUP. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h (SYSCALL_ERROR_HANDLER): ++ Define RTLD_PRIVATE_ERRNO variant. include . ++ ++2004-09-14 Kazuhiro Inaoka ++ ++ * configure: check for assembler line separator ++ ++2004-09-09 Kazuhiro Inaoka ++ ++ * configure, Makefile: Do nothing ++ * shlib-versions: New file. ++ * sysdeps/unix/m32r/sysdep.h: Use relative pathnames. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h: Use relative ++ pathnames. ++ * sysdeps/unix/sysv/linux/m32r/sysdep.S: Use relative ++ pathnames. ++ * sysdeps/m32r/init-first.c: Remove file ++ ++2004-09-09 Kazuhiro Inaoka ++ ++ * sysdeps/m32r/Implies: New file ++ * sysdeps/m32r/Makefile: New file ++ * sysdeps/m32r/__longjmp.S: New file ++ * sysdeps/m32r/bits/endian.h: New file ++ * sysdeps/m32r/bits/huge_val.h: New file ++ * sysdeps/m32r/bits/setjmp.h: New file ++ * sysdeps/m32r/bsd-_setjmp.S: New file ++ * sysdeps/m32r/bsd-setjmp.S: New file ++ * sysdeps/m32r/dl-machine.h: New file ++ * sysdeps/m32r/elf/start.S: New file ++ * sysdeps/m32r/gmp-mparam.h: New file ++ * sysdeps/m32r/init-first.c: New file ++ * sysdeps/m32r/m32r-mcount.S: New file ++ * sysdeps/m32r/machine-gmon.h: New file ++ * sysdeps/m32r/memcpy.S: New file ++ * sysdeps/m32r/memset.S: New file ++ * sysdeps/m32r/memusage.h: New file ++ * sysdeps/m32r/setjmp.S: New file ++ * sysdeps/m32r/stackinfo.h: New file ++ * sysdeps/m32r/strlen.S: New file ++ * sysdeps/m32r/sys/ucontext.h: New file ++ * sysdeps/m32r/sysdep.h: New file ++ * sysdeps/unix/m32r/Makefile: New file ++ * sysdeps/unix/m32r/sysdep.S: New file ++ * sysdeps/unix/m32r/sysdep.h: New file ++ * sysdeps/unix/sysv/linux/m32r/Dist: New file ++ * sysdeps/unix/sysv/linux/m32r/Makefile: New file ++ * sysdeps/unix/sysv/linux/m32r/Versions: New file ++ * sysdeps/unix/sysv/linux/m32r/bits/fcntl.h: New file ++ * sysdeps/unix/sysv/linux/m32r/bits/mman.h: New file ++ * sysdeps/unix/sysv/linux/m32r/bits/resource.h: New file ++ * sysdeps/unix/sysv/linux/m32r/brk.c: New file ++ * sysdeps/unix/sysv/linux/m32r/chown.c: New file ++ * sysdeps/unix/sysv/linux/m32r/clone.S: New file ++ * sysdeps/unix/sysv/linux/m32r/fchown.c: New file ++ * sysdeps/unix/sysv/linux/m32r/fcntl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/flushcache.S: New file ++ * sysdeps/unix/sysv/linux/m32r/fxstat.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getegid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/geteuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getgroups.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getresgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getresuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getrlimit.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getrlimit64.c: New file ++ * sysdeps/unix/sysv/linux/m32r/getuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/lchown.c: New file ++ * sysdeps/unix/sysv/linux/m32r/lockf64.c: New file ++ * sysdeps/unix/sysv/linux/m32r/lxstat.c: New file ++ * sysdeps/unix/sysv/linux/m32r/m32r-stub.c: New file ++ * sysdeps/unix/sysv/linux/m32r/mmap.S: New file ++ * sysdeps/unix/sysv/linux/m32r/msgctl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/pipe.S: New file ++ * sysdeps/unix/sysv/linux/m32r/profil-counter.h: New file ++ * sysdeps/unix/sysv/linux/m32r/semctl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setegid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/seteuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setfsgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setfsuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setgroups.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setregid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setresgid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setresuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setreuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setrlimit.c: New file ++ * sysdeps/unix/sysv/linux/m32r/setuid.c: New file ++ * sysdeps/unix/sysv/linux/m32r/shmctl.c: New file ++ * sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h: New file ++ * sysdeps/unix/sysv/linux/m32r/socket.S: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/cachectl.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/io.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/tas.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/ucontext.h: New file ++ * sysdeps/unix/sysv/linux/m32r/sys/user.h: New file ++ * sysdeps/unix/sysv/linux/m32r/syscall.S: New file ++ * sysdeps/unix/sysv/linux/m32r/syscalls.list: New file ++ * sysdeps/unix/sysv/linux/m32r/sysdep.S: New file ++ * sysdeps/unix/sysv/linux/m32r/sysdep.h: New file ++ * sysdeps/unix/sysv/linux/m32r/vfork.S: New file ++ * sysdeps/unix/sysv/linux/m32r/xstat.c: New file +diff --exclude=CVS -upNr ports/sysdeps/m32r/Implies ports/sysdeps/m32r/Implies +--- ports/sysdeps/m32r/Implies 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/Implies 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,3 @@ ++wordsize-32 ++ieee754/flt-32 ++ieee754/dbl-64 +diff --exclude=CVS -upNr ports/sysdeps/m32r/Makefile ports/sysdeps/m32r/Makefile +--- ports/sysdeps/m32r/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/Makefile 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,7 @@ ++# m32r/ELF specific definitions. ++ ++# The assembler on m32r needs the -fPIC flag even when it's assembler code. ++#ASFLAGS-.os = -fPIC ++ifeq ($(subdir),gmon) ++sysdep_routines += m32r-mcount ++endif +diff --exclude=CVS -upNr ports/sysdeps/m32r/__longjmp.S ports/sysdeps/m32r/__longjmp.S +--- ports/sysdeps/m32r/__longjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/__longjmp.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,43 @@ ++/* longjmp for M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#define _SETJMP_H ++#define _ASM ++#include ++ ++/* __longjmp(jmpbuf, val) */ ++ ++ENTRY (__longjmp) ++ ld r8, @r0+ ++ ld r9, @r0+ ++ ld r10, @r0+ ++ ld r11, @r0+ ++ ld r12, @r0+ ++ ld r13, @r0+ ++ ld r2, @r0+ /* lr */ ++ ld r15, @r0 /* sp */ ++ ++ mv r0,r1 ++ bnez r0, 1f /* get the return value in place */ ++ ldi r0, #1 /* can't let setjmp() return zero! */ ++ .fillinsn ++1: ++ jmp r2 ++END (__longjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/bits/endian.h ports/sysdeps/m32r/bits/endian.h +--- ports/sysdeps/m32r/bits/endian.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bits/endian.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,13 @@ ++/* M32R is bi-endian. */ ++ ++#ifndef _ENDIAN_H ++# error "Never use directly; include instead." ++#endif ++ ++#ifdef __LITTLE_ENDIAN__ ++#define __BYTE_ORDER __LITTLE_ENDIAN ++#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN ++#else ++#define __BYTE_ORDER __BIG_ENDIAN ++#define __FLOAT_WORD_ORDER __BIG_ENDIAN ++#endif +diff --exclude=CVS -upNr ports/sysdeps/m32r/bits/huge_val.h ports/sysdeps/m32r/bits/huge_val.h +--- ports/sysdeps/m32r/bits/huge_val.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bits/huge_val.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,56 @@ ++/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity). ++ Used by and functions for overflow. ++ M32R version. ++ Copyright (C) 1992, 95, 96, 97, 98, 99, 2000, 2004 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _MATH_H ++# error "Never use directly; include instead." ++#endif ++ ++/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ ++ ++#if __GNUC_PREREQ(3,3) ++# define HUGE_VAL (__builtin_huge_val()) ++#elif __GNUC_PREREQ(2,96) ++# define HUGE_VAL (__extension__ 0x1.0p2047) ++#elif defined __GNUC__ ++ ++# define HUGE_VAL \ ++ (__extension__ \ ++ ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ ++ { __l: 0x000000007ff00000ULL }).__d) ++ ++#else /* not GCC */ ++ ++# include ++ ++typedef union { unsigned char __c[8]; double __d; } __huge_val_t; ++ ++# if __BYTE_ORDER == __BIG_ENDIAN ++# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 } ++# endif ++# if __BYTE_ORDER == __LITTLE_ENDIAN ++# define __HUGE_VAL_bytes { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 } ++# endif ++ ++static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; ++# define HUGE_VAL (__huge_val.__d) ++ ++#endif /* GCC. */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/bits/setjmp.h ports/sysdeps/m32r/bits/setjmp.h +--- ports/sysdeps/m32r/bits/setjmp.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bits/setjmp.h 2006-05-09 10:22:45.000000000 +0900 +@@ -0,0 +1,57 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* Define the machine-dependent type `jmp_buf'. M32R version. */ ++#ifndef _BITS_SETJMP_H ++#define _BITS_SETJMP_H 1 ++ ++#if !defined _SETJMP_H && !defined _PTHREAD_H ++# error "Never include directly; use instead." ++#endif ++ ++#ifndef _ASM ++typedef struct ++ { ++ /* Callee-saved registers r8 through r15. */ ++ int __regs[8]; ++ ++ /* Program counter. */ ++ void * __pc; ++ } __jmp_buf[1]; ++#endif ++ ++#if defined __USE_MISC || defined _ASM ++#define JB_R8 0 ++#define JB_R9 1 ++#define JB_R10 2 ++#define JB_R11 3 ++#define JB_R12 4 ++#define JB_FP 5 ++#define JB_LR 6 ++#define JB_SP 7 ++#define JB_PC 8 ++ ++#define JB_SIZE (4 * 9) ++#endif ++ ++/* Test if longjmp to JMPBUF would unwind the frame ++ containing a local variable at ADDRESS. */ ++#define _JMPBUF_UNWINDS(jmpbuf, address) \ ++ ((void *) (address) < (jmpbuf)[0].__regs[JB_SP]) ++ ++#endif /* bits/setjmp.h */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/bsd-_setjmp.S ports/sysdeps/m32r/bsd-_setjmp.S +--- ports/sysdeps/m32r/bsd-_setjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bsd-_setjmp.S 2006-03-02 11:15:18.000000000 +0900 +@@ -0,0 +1,43 @@ ++/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* This just does a tail-call to `__sigsetjmp (ARG, 0)'. ++ We cannot do it in C because it must be a tail-call, so frame-unwinding ++ in setjmp doesn't clobber the state restored by longjmp. */ ++ ++#include ++ ++ENTRY (_setjmp) ++#ifdef SHARED ++ mv r2,lr ++ bl.s .+4 ++ ld24 r1,#_GLOBAL_OFFSET_TABLE_ ++ add r1,lr ++ mv lr,r2 ++ ++ ld24 r2,C_SYMBOL_NAME(__sigsetjmp@GOT) ++ add r2,r1 ++ ld r2,@r2 ++#else ++ LDIMM (r2, C_SYMBOL_NAME(__sigsetjmp)) ++#endif ++ ldi r1, #0 /* Pass a second argument of zero. */ ++ jmp r2 ++END (_setjmp) ++libc_hidden_def(_setjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/bsd-setjmp.S ports/sysdeps/m32r/bsd-setjmp.S +--- ports/sysdeps/m32r/bsd-setjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/bsd-setjmp.S 2006-03-02 11:15:35.000000000 +0900 +@@ -0,0 +1,42 @@ ++/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* This just does a tail-call to `__sigsetjmp (ARG, 1)'. ++ We cannot do it in C because it must be a tail-call, so frame-unwinding ++ in setjmp doesn't clobber the state restored by longjmp. */ ++ ++#include ++ ++ENTRY (setjmp) ++#ifdef SHARED ++ mv r2,lr ++ bl.s .+4 ++ ld24 r1,#_GLOBAL_OFFSET_TABLE_ ++ add r1,lr ++ mv lr,r2 ++ ++ ld24 r2,C_SYMBOL_NAME(__sigsetjmp@GOT) ++ add r2,r1 ++ ld r2,@r2 ++#else ++ LDIMM (r2, C_SYMBOL_NAME(__sigsetjmp)) ++#endif ++ ldi r1, #1 /* Pass a second argument of one. */ ++ jmp r2 ++END (setjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/configure ports/sysdeps/m32r/configure +--- ports/sysdeps/m32r/configure 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/configure 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,7 @@ ++# This file is generated from configure.in by Autoconf. DO NOT EDIT! ++ ++libc_cv_asm_line_sep='!' ++cat >>confdefs.h <<_ACEOF ++#define ASM_LINE_SEP $libc_cv_asm_line_sep ++_ACEOF ++ +diff --exclude=CVS -upNr ports/sysdeps/m32r/configure.in ports/sysdeps/m32r/configure.in +--- ports/sysdeps/m32r/configure.in 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/configure.in 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,5 @@ ++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. ++ ++dnl M32R uses `;' to start comments and `!' for line separator. ++libc_cv_asm_line_sep='!' ++AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep) +diff --exclude=CVS -upNr ports/sysdeps/m32r/dl-machine.h ports/sysdeps/m32r/dl-machine.h +--- ports/sysdeps/m32r/dl-machine.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/dl-machine.h 2006-03-02 11:28:06.000000000 +0900 +@@ -0,0 +1,814 @@ ++/* Machine-dependent ELF dynamic relocation inline functions. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef dl_machine_h ++#define dl_machine_h ++ ++/* Only dummy. This doesn't work. */ ++ ++#define ELF_MACHINE_NAME "M32R" ++ ++#include ++ ++#include ++ ++/* Define the M32R_OLD_ABI, if you want to keep compatibility with ++ an old Renesas relocs */ ++#ifdef M32R_OLD_ABI ++#define R_M32R_16_SAMPLE 1 ++#define R_M32R_32_SAMPLE 2 ++#define R_M32R_24_SAMPLE 3 ++#define R_M32R_10_PCREL_SAMPLE 4 ++#define R_M32R_18_PCREL_SAMPLE 5 ++#define R_M32R_26_PCREL_SAMPLE 6 ++#define R_M32R_HI16_ULO_SAMPLE 7 ++#define R_M32R_HI16_SLO_SAMPLE 8 ++#define R_M32R_LO16_SAMPLE 9 ++#define R_M32R_SDA16_SAMPLE 10 ++ ++#define R_M32R_GOT24_SAMPLE 11 /* conflict */ ++#define R_M32R_26_PLTREL_SAMPLE 12 /* conflict */ ++#define R_M32R_GOT16_HI_ULO_SAMPLE 13 ++#define R_M32R_GOT16_HI_SLO_SAMPLE 14 ++#define R_M32R_GOT16_LO_SAMPLE 15 ++#define R_M32R_GOTPC24_SAMPLE 16 ++#define R_M32R_COPY_SAMPLE 17 ++#define R_M32R_GLOB_DAT_SAMPLE 18 ++#define R_M32R_JMP_SLOT_SAMPLE 19 ++#define R_M32R_RELATIVE_SAMPLE 20 ++#define R_M32R_GNU_VTINHERIT_SAMPLE 21 ++#define R_M32R_GNU_VTENTRY_SAMPLE 22 ++#endif /* M32R_OLD_ABI */ ++ ++/* Return nonzero iff ELF header is compatible with the running host. */ ++static inline int __attribute__ ((unused)) ++elf_machine_matches_host (const Elf32_Ehdr *ehdr) ++{ ++ return (ehdr->e_machine == EM_M32R); ++} ++ ++ ++/* Return the link-time address of _DYNAMIC. Conveniently, this is the ++ first element of the GOT. This must be inlined in a function which ++ uses global data. */ ++static inline Elf32_Addr __attribute__ ((unused)) ++elf_machine_dynamic (void) ++{ ++ register Elf32_Addr *got; ++ asm (" bl.s .+4\n" ++ " ld24 %0,#_GLOBAL_OFFSET_TABLE_\n" ++ " add %0,lr" :"=r" (got) : : "lr" ); ++ return *got; ++} ++ ++ ++/* Return the run-time load address of the shared object. */ ++static inline Elf32_Addr __attribute__ ((unused)) ++elf_machine_load_address (void) ++{ ++ Elf32_Addr addr; ++ asm (" ld24 r0,#here\n\t" ++ " add r0,r12\n\t" ++ " ld r0,@r0\n\t" ++ "here: \n\t" ++ " ld24 r1,#_GLOBAL_OFFSET_TABLE_\n\t" ++ " mv r2,r12\n\t" ++ " sub r2,r1\n\t" ++ " sub r2,r0\n\t" ++ " mv %0,r2" ++ : "=r" (addr) : : "r0", "r1", "r2" ); ++ return addr; ++} ++ ++ ++/* Set up the loaded object described by L so its unrelocated PLT ++ entries will jump to the on-demand fixup code in dl-runtime.c. */ ++ ++static inline int __attribute__ ((unused, always_inline)) ++elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) ++{ ++ Elf32_Addr *got; ++ extern void _dl_runtime_resolve (Elf32_Word); ++ extern void _dl_runtime_profile (Elf32_Word); ++ ++ if (l->l_info[DT_JMPREL] && lazy) ++ { ++ /* The GOT entries for functions in the PLT have not yet been filled ++ in. Their initial contents will arrange when called to load an ++ offset into the .rela.plt section and _GLOBAL_OFFSET_TABLE_[1], ++ and then jump to _GLOBAL_OFFSET_TABLE[2]. */ ++ got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]); ++ got[1] = (Elf32_Addr) l; /* Identify this shared object. */ ++ ++ /* The got[2] entry contains the address of a function which gets ++ called to get the address of a so far unresolved function and ++ jump to it. The profiling extension of the dynamic linker allows ++ to intercept the calls to collect information. In this case we ++ don't store the address in the GOT so that all future calls also ++ end in this function. */ ++ if (profile) ++ { ++ got[2] = (Elf32_Addr) &_dl_runtime_profile; ++ /* Say that we really want profiling and the timers are started. */ ++ GL(dl_profile_map) = l; ++ } ++ else ++ /* This function will get called to fix up the GOT entry indicated by ++ the offset on the stack, and then jump to the resolved address. */ ++ got[2] = (Elf32_Addr) &_dl_runtime_resolve; ++ } ++ return lazy; ++} ++ ++/* This code is used in dl-runtime.c to call the `fixup' function ++ and then redirect to the address it returns. */ ++ ++#define ELF_MACHINE_RUNTIME_FIXUP_ARGS int plt_type ++ ++#ifdef SHARED ++#define FUN_ADDR( func ) "\n\ ++ bl.s .+4 \n\ ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ \n\ ++ add r12,lr \n\ ++ ld24 r4,#" #func "@GOT \n\ ++ add r4,r12 \n\ ++ ld r4,@r4" ++#else ++#define FUN_ADDR( func ) "\ ++ seth r4,#high( " #func " ) \n\ ++ or3 r4,r4,#low( " #func " )" ++#endif ++ ++#define FGR_SAVE "" ++#define FGR_LOAD "" ++ ++#ifdef M32R_OLD_NEWABI ++#define LOAD_ARGS_FROM_STACK( name ) "\n\ ++ mv r7,lr \n\ ++ ; OLD_PLT to keep compatible mode only \n\ ++ bl.s .+4 \n\ ++ .fillinsn \n\ ++ addi lr,# " #name " -. \n\ ++ beq r6,lr,1f \n\ ++ ; OLT_PLT ABI \n\ ++ pop r4 ; link map address \n\ ++ pop r5 ; reloc offset \n\ ++ .fillinsn \n\ ++1: \n\ ++ mv lr,r7" ++#else ++#define LOAD_ARGS_FROM_STACK( name ) "\n\ ++ ; DELETE FOR NEW ABI pop r4 ; link map address \n\ ++ ; DELETE FOR NEW ABI pop r5 ; reloc offset\n" ++#endif ++ ++#ifndef PROF ++# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ ++ .text \n\ ++ .globl _dl_runtime_resolve \n\ ++ .type _dl_runtime_resolve, @function \n\ ++ \n\ ++ .balign 4 \n\ ++_dl_runtime_resolve: \n\ ++ " LOAD_ARGS_FROM_STACK( _dl_runtime_resolve ) " \n\ ++ push r0 \n\ ++ push r1 \n\ ++ push r2 \n\ ++ push r3 \n\ ++ push r12 \n\ ++ " FGR_SAVE " \n\ ++ push lr \n\ ++ \n\ ++ ; fixup( ELF_MACHINE_RUNTIME_TRAMPOLINE, link_map, reloc_offset ) \n\ ++ ;mv r0,*** ; plt_type (dummy) \n\ ++ \n\ ++ mv r1,r4 ; link map address \n\ ++ mv r2,r5 ; reloc offset \n\ ++ \n\ ++ " FUN_ADDR( fixup ) " \n\ ++ \n\ ++ jl r4 ; Call resolver. \n\ ++ mv r4,r0 ; value \n\ ++ \n\ ++ pop lr ; Get register content back. \n\ ++ " FGR_LOAD " \n\ ++ pop r12 \n\ ++ pop r3 \n\ ++ pop r2 \n\ ++ pop r1 \n\ ++ pop r0 \n\ ++ \n\ ++ jmp r4 ; Jump to function address. \n\ ++ \n\ ++ .balign 4 \n\ ++ .size _dl_runtime_resolve, .-_dl_runtime_resolve \n\ ++ \n\ ++ .globl _dl_runtime_profile \n\ ++ .type _dl_runtime_profile, @function \n\ ++ \n\ ++ .balign 4 \n\ ++_dl_runtime_profile: \n\ ++ " LOAD_ARGS_FROM_STACK( _dl_runtime_profile ) " \n\ ++ push r0 \n\ ++ push r1 \n\ ++ push r2 \n\ ++ push r3 \n\ ++ push r12 \n\ ++ " FGR_SAVE " \n\ ++ push lr \n\ ++ \n\ ++ ; profile_fixup( ELF_MACHINE_RUNTIME_TRAMPOLINE, link_map, reloc_offset ) \n\ ++ ;mv r0,*** ; plt_type (dummy) \n\ ++ mv r1,r4 ; link map address \n\ ++ mv r2,r5 ; reloc offset \n\ ++ \n\ ++ " FUN_ADDR( profile_fixup ) " \n\ ++ \n\ ++ jl r4 ; Call resolver. \n\ ++ mv r4,r0 ; value \n\ ++ \n\ ++ pop lr ; Get register content back. \n\ ++ " FGR_LOAD " \n\ ++ pop r12 \n\ ++ pop r3 \n\ ++ pop r2 \n\ ++ pop r1 \n\ ++ pop r0 \n\ ++ \n\ ++ jmp r4 ; Jump to function address. \n\ ++ \n\ ++ .balign 4 \n\ ++ .size _dl_runtime_profile, .-_dl_runtime_profile \n\ ++ .previous \n\ ++"); ++#else ++# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ ++ .text \n\ ++ .globl _dl_runtime_resolve \n\ ++ .globl _dl_runtime_profile \n\ ++ .type _dl_runtime_resolve, @function \n\ ++ .type _dl_runtime_profile, @function \n\ ++ \n\ ++ .balign 4 \n\ ++_dl_runtime_resolve: \n\ ++_dl_runtime_profile: \n\ ++ " LOAD_ARGS_FROM_STACK( _dl_runtime_resolve ) " \n\ ++ push r0 \n\ ++ push r1 \n\ ++ push r2 \n\ ++ push r3 \n\ ++ push r12 \n\ ++ " FGR_SAVE " \n\ ++ push lr \n\ ++ \n\ ++ ; fixup( ELF_MACHINE_RUNTIME_TRAMPOLINE, link_map, reloc_offset ) \n\ ++ ;mv r0,*** ; plt_type (dummy) \n\ ++ mv r1,r4 ; link map address \n\ ++ mv r2,r5 ; reloc offset \n\ ++ \n\ ++ " FUN_ADDR( fixup ) " \n\ ++ \n\ ++ jl r4 ; Call resolver. \n\ ++ mv r4,r0 ; value \n\ ++ \n\ ++ pop lr ; Get register content back. \n\ ++ " FGR_LOAD " \n\ ++ pop r12 \n\ ++ pop r3 \n\ ++ pop r2 \n\ ++ pop r1 \n\ ++ pop r0 \n\ ++ \n\ ++ jmp r4 ; Jump to function address. \n\ ++ \n\ ++ .balign 4 \n\ ++ .size _dl_runtime_resolve, .-_dl_runtime_resolve \n\ ++ .size _dl_runtime_profile, .-_dl_runtime_profile \n\ ++ .previous \n\ ++"); ++#endif ++ ++/* Mask identifying addresses reserved for the user program, ++ where the dynamic linker should not map anything. */ ++#define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL ++ ++/* Initial entry point code for the dynamic linker. ++ The C function `_dl_start' is the real entry point; ++ its return value is the user program's entry point. */ ++ ++#define RTLD_START asm ("\ ++.text\n\ ++.globl _start\n\ ++.globl _dl_start_user\n\ ++_start:\n\ ++ mv r0,r15\n\ ++ bl _dl_start\n\ ++_dl_start_user:\n\ ++ ; Save the user entry point address in r8.\n\ ++ mv r8,r0\n\ ++ ; Point r12 at the GOT.\n\ ++ bl.s .+4\n\ ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_\n\ ++ add r12,lr\n\ ++ ; Store the highest stack address\n\ ++ ld24 r0,#__libc_stack_end@GOT ; __libc_stack_end@GOT \n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ st r15,@r0\n\ ++ ; See if we were run as a command with the executable file\n\ ++ ; name as an extra leading argument.\n\ ++ ld24 r0,#_dl_skip_args@GOT ; _dl_skip_args@GOT \n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ ld r0,@r0\n\ ++ ; Get the original argument count.\n\ ++ ld r1,@r15\n\ ++ ; Subtract _dl_skip_args from it.\n\ ++ sub r1,r0\n\ ++ ; Adjust the stack pointer to skip _dl_skip_args words.\n\ ++ slli r0,#2\n\ ++ add r15,r0\n\ ++ ; Store back the modified argument count.\n\ ++ st r1,@r15\n\ ++ ; Compute argv address and envp.\n\ ++ mv r2,r15\n\ ++ addi r2,#4\n\ ++ mv r3,r1\n\ ++ addi r3,#1\n\ ++ slli r3,#2\n\ ++ add r3,r2\n\ ++ ld24 r0,#_rtld_local@GOT\n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ ld r0,@r0\n\ ++ ; Call _dl_init.\n\ ++ bl _dl_init@PLT ; _dl_init@PLT \n\ ++ .fillinsn\n\ ++1: ; Pass our finalizer function to the user in r4, as per ELF ABI.\n\ ++ ld24 r0,#_dl_fini@GOT ; _dl_fini@GOT \n\ ++ add r0,r12\n\ ++ ld r0,@r0\n\ ++ ; Jump to the user's entry point.\n\ ++ jmp r8\n\ ++.previous\n\ ++"); ++ ++/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so ++ PLT entries should not be allowed to define the value. ++ ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one ++ of the main executable's symbols, as for a COPY reloc. */ ++#ifdef M32R_OLD_ABI ++/* for oldtype relocation compatibility */ ++#define elf_machine_type_class(type) \ ++ ((((type) == R_M32R_JMP_SLOT || (type) == R_M32R_JMP_SLOT_SAMPLE) * ELF_RTYPE_CLASS_PLT) \ ++ | (((type) == R_M32R_COPY || (type) == R_M32R_COPY_SAMPLE) * ELF_RTYPE_CLASS_COPY)) ++#else ++#define elf_machine_type_class(type) \ ++ ((((type) == R_M32R_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) \ ++ | (((type) == R_M32R_COPY) * ELF_RTYPE_CLASS_COPY)) ++#endif ++ ++/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ ++#ifdef M32R_OLD_ABI ++/* for oldtype relocation compatibility */ ++#define ELF_MACHINE_JMP_SLOT \ ++ R_M32R_JMP_SLOT || ELFW(R_TYPE)(reloc->r_info) == R_M32R_JMP_SLOT_SAMPLE ++#else ++#define ELF_MACHINE_JMP_SLOT R_M32R_JMP_SLOT ++#endif ++ ++/* M32R never uses Elf32_Rel relocations. */ ++#define ELF_MACHINE_NO_REL 1 ++ ++/* We define an initialization functions. This is called very early in ++ _dl_sysdep_start. */ ++#define DL_PLATFORM_INIT dl_platform_init () ++ ++static inline void __attribute__ ((unused)) ++dl_platform_init (void) ++{ ++ if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0') ++ /* Avoid an empty string which would disturb us. */ ++ GLRO(dl_platform) = NULL; ++} ++ ++static inline Elf32_Addr ++elf_machine_fixup_plt (struct link_map *map, lookup_t t, ++ const Elf32_Rela *reloc, ++ Elf32_Addr *reloc_addr, Elf32_Addr value) ++{ ++ return *reloc_addr = value; ++} ++ ++/* Return the final value of a plt relocation. */ ++static inline Elf32_Addr ++elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc, ++ Elf32_Addr value) ++{ ++ return value + reloc->r_addend; ++} ++ ++#endif /* !dl_machine_h */ ++ ++#ifdef RESOLVE ++ ++extern char **_dl_argv; ++ ++/* Perform the relocation specified by RELOC and SYM (which is fully resolved). ++ MAP is the object containing the reloc. */ ++ ++auto inline void ++__attribute ((always_inline)) ++elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, ++ const Elf32_Sym *sym, const struct r_found_version *version, ++ void *const reloc_addr_arg) ++{ ++ Elf32_Addr *const reloc_addr = reloc_addr_arg; ++ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); ++ Elf32_Addr value; ++ ++#define COPY_UNALIGNED_WORD(swp, twp, align) \ ++ { \ ++ void *__s = (swp), *__t = (twp); \ ++ unsigned char *__s1 = __s, *__t1 = __t; \ ++ unsigned short *__s2 = __s, *__t2 = __t; \ ++ unsigned long *__s4 = __s, *__t4 = __t; \ ++ switch ((align)) \ ++ { \ ++ case 0: \ ++ *__t4 = *__s4; \ ++ break; \ ++ case 2: \ ++ *__t2++ = *__s2++; \ ++ *__t2 = *__s2; \ ++ break; \ ++ default: \ ++ *__t1++ = *__s1++; \ ++ *__t1++ = *__s1++; \ ++ *__t1++ = *__s1++; \ ++ *__t1 = *__s1; \ ++ break; \ ++ } \ ++ } ++#define COPY_UNALIGNED_HWORD(swp, twp, align) \ ++ { \ ++ void *__s = (swp), *__t = (twp); \ ++ unsigned char *__s1 = __s, *__t1 = __t; \ ++ unsigned short *__s2 = __s, *__t2 = __t; \ ++ switch ((align)) \ ++ { \ ++ case 0: \ ++ *__t2 = *__s2; \ ++ break; \ ++ default: \ ++ *__t1++ = *__s1++; \ ++ *__t1 = *__s1; \ ++ break; \ ++ } \ ++ } ++ ++#ifdef M32R_OLD_ABI ++/* for oldtype relocation compatibility */ ++ if (__builtin_expect (r_type == R_M32R_RELATIVE || r_type == R_M32R_RELATIVE_SAMPLE, 0)) ++#else ++ if (__builtin_expect (r_type == R_M32R_RELATIVE, 0)) ++#endif ++ { ++#ifndef RTLD_BOOTSTRAP ++ if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */ ++#endif ++ { ++ if (reloc->r_addend) ++ value = map->l_addr + reloc->r_addend; ++ else ++ { ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &value, ++ (int) reloc_addr_arg & 3); ++ value += map->l_addr; ++ } ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++ } ++#ifndef RTLD_BOOTSTRAP ++ else if (__builtin_expect (r_type == R_M32R_NONE, 0)) ++ return; ++#endif ++ else ++ { ++ const Elf32_Sym *const refsym = sym; ++#ifndef RTLD_BOOTSTRAP ++ Elf32_Addr tmp_value; ++#endif ++ value = RESOLVE (&sym, version, r_type); ++ if (sym) ++ value += sym->st_value; ++ value += reloc->r_addend; ++ ++ switch (r_type) ++ { ++#ifdef M32R_OLD_ABI ++ case R_M32R_COPY_SAMPLE: ++#endif ++ case R_M32R_COPY: ++ if (sym == NULL) ++ /* This can happen in trace mode if an object could not be ++ found. */ ++ break; ++ if (sym->st_size > refsym->st_size ++ || (sym->st_size < refsym->st_size && GLRO(dl_verbose))) ++ { ++ const char *strtab; ++ ++ strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]); ++ _dl_error_printf ("\ ++%s: Symbol `%s' has different size in shared object, consider re-linking\n", ++ _dl_argv[0] ?: "", ++ strtab + refsym->st_name); ++ } ++ memcpy (reloc_addr, (void *) value, MIN (sym->st_size, ++ refsym->st_size)); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_GLOB_DAT_SAMPLE: ++#endif ++ case R_M32R_GLOB_DAT: ++#if 0 /* 20021129 1 -> 0 */ ++ case R_M32R_32: ++ *reloc_addr = value; ++ break; ++#endif /* 20021129 1 -> 0 */ ++#ifdef M32R_OLD_ABI ++ case R_M32R_JMP_SLOT_SAMPLE: ++#endif ++ case R_M32R_JMP_SLOT: ++ elf_machine_fixup_plt(map, 0, reloc, reloc_addr, value); ++ break; ++#if 1 /* 20021129 0 -> 1 */ ++#ifdef M32R_OLD_ABI ++ case R_M32R_32_SAMPLE: ++#endif ++ case R_M32R_32_RELA: ++#ifndef RTLD_BOOTSTRAP ++#ifdef M32R_OLD_ABI ++ case R_M32R_24_SAMPLE: ++ case R_M32R_16_SAMPLE: ++ case R_M32R_HI16_ULO_SAMPLE: ++ case R_M32R_HI16_SLO_SAMPLE: ++ case R_M32R_LO16_SAMPLE: ++ case R_M32R_SDA16_SAMPLE: ++#endif ++ case R_M32R_24_RELA: ++ case R_M32R_16_RELA: ++ case R_M32R_HI16_ULO_RELA: ++ case R_M32R_HI16_SLO_RELA: ++ case R_M32R_LO16_RELA: ++ case R_M32R_SDA16_RELA: ++#endif ++ case R_M32R_REL32: ++ { ++#ifndef RTLD_BOOTSTRAP ++ /* This is defined in rtld.c, but nowhere in the static ++ libc.a; make the reference weak so static programs can ++ still link. This declaration cannot be done when ++ compiling rtld.c (i.e. #ifdef RTLD_BOOTSTRAP) because ++ rtld.c contains the common defn for _dl_rtld_map, which ++ is incompatible with a weak decl in the same file. */ ++# ifndef SHARED ++ weak_extern (GL(dl_rtld_map)); ++# endif ++ if (map == &GL(dl_rtld_map)) ++ /* Undo the relocation done here during bootstrapping. ++ Now we will relocate it anew, possibly using a ++ binding found in the user program or a loaded library ++ rather than the dynamic linker's built-in definitions ++ used while loading those libraries. */ ++ value -= map->l_addr + refsym->st_value + reloc->r_addend; ++#endif ++#ifdef M32R_OLD_ABI ++ if (r_type == R_M32R_32_SAMPLE ++ || r_type == R_M32R_32_RELA) ++#else ++ if (r_type == R_M32R_32_RELA) ++#endif ++ { ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++#ifndef RTLD_BOOTSTRAP ++#ifdef M32R_OLD_ABI ++ else if (r_type == R_M32R_16_SAMPLE ++ || r_type == R_M32R_16_RELA) ++#else ++ else if (r_type == R_M32R_16_RELA) ++#endif ++ { ++ COPY_UNALIGNED_HWORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++ else if (r_type == R_M32R_REL32) ++ { ++ value = (value - (Elf32_Addr) reloc_addr); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++ else ++ { ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ switch (r_type) ++ { ++#ifdef M32R_OLD_ABI ++ case R_M32R_24_SAMPLE: ++ if (value & 0xff000000) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_24 relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | (value & 0xffffff); ++ break; ++#endif ++ case R_M32R_24_RELA: ++ if (value & 0xff000000) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_24_RELA relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | (value & 0xffffff); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_HI16_ULO_SAMPLE: ++#endif ++ case R_M32R_HI16_ULO_RELA: ++ value = (tmp_value & ~0xffff) | ((value >>16) & 0xffff); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_HI16_SLO_SAMPLE: ++#endif ++ case R_M32R_HI16_SLO_RELA: ++ if (value & 0x8000) ++ value += 0x10000; ++ value = (tmp_value & ~0xffff) | ((value >>16) & 0xffff); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_LO16_SAMPLE: ++ case R_M32R_SDA16_SAMPLE: ++#endif ++ case R_M32R_LO16_RELA: ++ case R_M32R_SDA16_RELA: ++ value = (tmp_value & ~0xffff) | (value & 0xffff); ++ break; ++ } ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ } ++#endif ++ break; ++ } ++#ifndef RTLD_BOOTSTRAP ++#ifdef M32R_OLD_ABI ++ case R_M32R_26_PCREL_SAMPLE: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value += (signed long)(((tmp_value & 0xffffff) ^ 0x800000) - 0x800000) << 2; ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x2000000 || 0x1fffffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_26_PCREL relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | ((value >> 2) & 0xffffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3); ++ break; ++#endif ++ case R_M32R_26_PCREL_RELA: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x2000000 || 0x1fffffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_26_PCREL_RELA relocation overflow"); ++ } ++ value = (tmp_value & ~0xffffff) | ((value >> 2) & 0xffffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++#ifdef M32R_OLD_ABI ++ case R_M32R_18_PCREL_SAMPLE: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value += (signed long)((tmp_value & 0xffff) ^ 0x8000) - 0x8000) << 2; ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x20000 || 0x1fffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_18_PCREL relocation overflow"); ++ } ++ value = (tmp_value & ~0xffff) | ((value >> 2) & 0xffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++#endif ++ case R_M32R_18_PCREL_RELA: ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &tmp_value, ++ (int) reloc_addr_arg & 3); ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x20000 || 0x1fffc < (signed long)value) ++ { ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_18_PCREL_RELA relocation overflow"); ++ } ++ value = (tmp_value & ~0xffff) | ((value >> 2) & 0xffff); ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++#endif ++#ifdef M32R_OLD_ABI ++ case R_M32R_10_PCREL_SAMPLE: ++#else ++ case R_M32R_10_PCREL_RELA: ++#endif ++ { ++ unsigned short tmp_hvalue; ++ COPY_UNALIGNED_HWORD (reloc_addr_arg, &tmp_hvalue, ++ (int) reloc_addr_arg & 3); ++ value = value - (Elf32_Addr) reloc_addr; ++ if ((signed long)value < -0x200 || 0x1fc < (signed long)value) ++ { ++#ifdef M32R_OLD_ABI ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_10_PCREL relocation overflow"); ++#else ++ _dl_signal_error (0, map->l_name, NULL, ++ "R_M32R_10_PCREL_RELA relocation overflow"); ++#endif ++ } ++ tmp_hvalue = (tmp_hvalue & ~0xff) | ((value >> 2) & 0xff); ++ COPY_UNALIGNED_HWORD (&tmp_hvalue, reloc_addr_arg, ++ (int) reloc_addr_arg & 3); ++ break; ++ } ++#endif /* 20021129 0 -> 1 */ ++ default: ++ _dl_reloc_bad_type (map, r_type, 0); ++ break; ++ } ++ } ++} ++ ++auto inline void ++__attribute ((always_inline)) ++elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, ++ void *const reloc_addr_arg) ++{ ++ Elf32_Addr value; ++ ++ if (reloc->r_addend) ++ value = l_addr + reloc->r_addend; ++ else ++ { ++ COPY_UNALIGNED_WORD (reloc_addr_arg, &value, (int) reloc_addr_arg & 3); ++ value += l_addr; ++ } ++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3); ++ ++#undef COPY_UNALIGNED_WORD ++#undef COPY_UNALIGNED_HWORD ++} ++ ++auto inline void ++__attribute ((always_inline)) ++elf_machine_lazy_rel (struct link_map *map, ++ Elf32_Addr l_addr, const Elf32_Rela *reloc) ++{ ++ Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); ++ /* Check for unexpected PLT reloc type. */ ++#ifdef M32R_OLD_ABI ++ if (ELF32_R_TYPE (reloc->r_info) == R_M32R_JMP_SLOT ++ || ELF32_R_TYPE (reloc->r_info) == R_M32R_JMP_SLOT_SAMPLE) ++#else ++ if (ELF32_R_TYPE (reloc->r_info) == R_M32R_JMP_SLOT) ++#endif ++ *reloc_addr += l_addr; ++ else ++ _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); ++} ++ ++#endif /* RESOLVE */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/elf/start.S ports/sysdeps/m32r/elf/start.S +--- ports/sysdeps/m32r/elf/start.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/elf/start.S 2006-03-02 11:31:52.000000000 +0900 +@@ -0,0 +1,109 @@ ++/* Startup code for M32R & ELF. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* This is the canonical entry point, usually the first thing in the text ++ segment. ++ ++ Note that the code in the .init section has already been run. ++ This includes _init and _libc_init ++ ++ ++ At this entry point, most registers' values are unspecified, except: ++ ++ r0 Contains a function pointer to be registered with `atexit'. ++ This is how the dynamic linker arranges to have DT_FINI ++ functions called for shared libraries that have been loaded ++ before this code runs. ++ ++ sp The stack contains the arguments and environment: ++ @(0,sp) argc ++ @(4,sp) argv[0] ++ ... ++ @((4*argc),sp) NULL ++ @((4*(argc+1)),sp) envp[0] ++ ... ++ NULL ++*/ ++ ++#include "sysdep.h" ++#include "bp-sym.h" ++ ++ .text ++ .globl _start ++_start: ++ /* Clear the frame pointer since this is the outermost frame. */ ++ ldi r13, #0 ++#ifdef SHARED ++ bl.s .+4 ++ ld24 r12, #_GLOBAL_OFFSET_TABLE_ ++ add r12, lr ++#endif ++ ++ /* Pop argc off the stack and save a pointer to argv */ ++ pop r1 ++ mv r2, sp ++ ++ /* Push the last arguments to main() onto the stack */ ++ push r0 ++#ifdef SHARED ++ ld24 r0, #__libc_csu_fini@GOT ++ add r0,r12 ++ ld r0,@r0 ++#else ++ LDIMM (r0, __libc_csu_fini) ++#endif ++ push r0 ++ ++ /* Set up the other arguments for main() that go in registers */ ++#ifdef SHARED ++ ld24 r0,#BP_SYM (main@GOT) ++ add r0,r12 ++ ld r0,@r0 ++ ld24 r3, #__libc_csu_init@GOT ++ add r3,r12 ++ ld r3,@r3 ++#else ++ LDIMM (r0, BP_SYM (main)) ++ LDIMM (r3, __libc_csu_init) ++#endif ++ ++ /* __libc_start_main (main, argc, argv, init, fini, rtld_fini) */ ++ ++ /* Let the libc call main and exit with its return code. */ ++#ifdef SHARED ++ bl BP_SYM (__libc_start_main@PLT) ++#else ++ LDIMM (r4, BP_SYM (__libc_start_main)) ++ jl r4 ++#endif ++ /* should never get here....*/ ++#ifdef SHARED ++ bl abort@PLT ++#else ++ LDIMM (r4, abort) ++ jl r4 ++#endif ++ ++/* Define a symbol for the first piece of initialized data. */ ++ .data ++ .globl __data_start ++__data_start: ++ .long 0 ++ .weak data_start ++ data_start = __data_start +diff --exclude=CVS -upNr ports/sysdeps/m32r/gccframe.h ports/sysdeps/m32r/gccframe.h +--- ports/sysdeps/m32r/gccframe.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/gccframe.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,22 @@ ++/* Definition of object in frame unwind info. m32r version. ++ Copyright (C) 2001 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define DWARF_FRAME_REGISTERS 20 ++ ++#include +diff --exclude=CVS -upNr ports/sysdeps/m32r/gmp-mparam.h ports/sysdeps/m32r/gmp-mparam.h +--- ports/sysdeps/m32r/gmp-mparam.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/gmp-mparam.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,30 @@ ++/* gmp-mparam.h -- Compiler/machine parameter header file. ++ ++Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ ++This file is part of the GNU MP Library. ++ ++The GNU MP Library is free software; you can redistribute it and/or modify ++it under the terms of the GNU Library General Public License as published by ++the Free Software Foundation; either version 2 of the License, or (at your ++option) any later version. ++ ++The GNU MP Library is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public ++License for more details. ++ ++You should have received a copy of the GNU Library General Public License ++along with the GNU MP Library; see the file COPYING.LIB. If not, write to ++the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ++MA 02111-1307, USA. */ ++ ++#define BITS_PER_MP_LIMB 32 ++#define BYTES_PER_MP_LIMB 4 ++#define BITS_PER_LONGINT 32 ++#define BITS_PER_INT 32 ++#define BITS_PER_SHORTINT 16 ++#define BITS_PER_CHAR 8 ++ ++#define IEEE_DOUBLE_BIG_ENDIAN 0 ++#define IEEE_DOUBLE_MIXED_ENDIAN 1 +diff --exclude=CVS -upNr ports/sysdeps/m32r/linuxthreads/pspinlock.c ports/sysdeps/m32r/linuxthreads/pspinlock.c +--- ports/sysdeps/m32r/linuxthreads/pspinlock.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/linuxthreads/pspinlock.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,70 @@ ++/* POSIX spinlock implementation. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++#include "internals.h" ++ ++int ++__pthread_spin_lock (pthread_spinlock_t *lock) ++{ ++ while (INTERNAL_SYSCALL (tas, , 1, lock)); ++ return 0; ++} ++weak_alias (__pthread_spin_lock, pthread_spin_lock) ++ ++ ++int ++__pthread_spin_trylock (pthread_spinlock_t *lock) ++{ ++ unsigned int val; ++ ++ if ((val = *lock) == 0) ++ val = INTERNAL_SYSCALL (tas, , 1, lock); ++ return (val > 0 ? EBUSY : 0); ++} ++weak_alias (__pthread_spin_trylock, pthread_spin_trylock) ++ ++ ++int ++__pthread_spin_unlock (pthread_spinlock_t *lock) ++{ ++ return *lock = 0; ++} ++weak_alias (__pthread_spin_unlock, pthread_spin_unlock) ++ ++ ++int ++__pthread_spin_init (pthread_spinlock_t *lock, int pshared) ++{ ++ /* We can ignore the `pshared' parameter. Since we are busy-waiting ++ all processes which can access the memory location `lock' points ++ to can use the spinlock. */ ++ return *lock = 0; ++} ++weak_alias (__pthread_spin_init, pthread_spin_init) ++ ++ ++int ++__pthread_spin_destroy (pthread_spinlock_t *lock) ++{ ++ /* Nothing to do. */ ++ return 0; ++} ++weak_alias (__pthread_spin_destroy, pthread_spin_destroy) +diff --exclude=CVS -upNr ports/sysdeps/m32r/linuxthreads/pt-machine.h ports/sysdeps/m32r/linuxthreads/pt-machine.h +--- ports/sysdeps/m32r/linuxthreads/pt-machine.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/linuxthreads/pt-machine.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,55 @@ ++/* Machine-dependent pthreads configuration and inline functions. ++ M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _PT_MACHINE_H ++#define _PT_MACHINE_H 1 ++ ++#include ++#include ++ ++#ifndef __ASSEMBLER__ ++#ifndef PT_EI ++# define PT_EI extern inline ++#endif ++ ++extern long int testandset (int *spinlock); ++extern int __compare_and_swap (long int *p, long int oldval, long int newval); ++ ++/* Spinlock implementation; required. */ ++PT_EI long int ++testandset (int *spinlock) ++{ ++ int ret; ++ ++ ret = INLINE_SYSCALL (tas, 1, spinlock); ++ return ret; ++} ++ ++#define lock_held(p) *(p) ++ ++/* Get some notion of the current stack. Need not be exactly the top ++ of the stack, just something somewhere in the current frame. */ ++#define CURRENT_STACK_FRAME stack_pointer ++register char * stack_pointer __asm__ ("r15"); ++ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* pt-machine.h */ ++ +diff --exclude=CVS -upNr ports/sysdeps/m32r/m32r-mcount.S ports/sysdeps/m32r/m32r-mcount.S +--- ports/sysdeps/m32r/m32r-mcount.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/m32r-mcount.S 2006-03-02 11:17:40.000000000 +0900 +@@ -0,0 +1,67 @@ ++/* m32r-specific implemetation of profiling support. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount) ++ ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), function) ++ .balign 4 ++C_LABEL(_mcount) ++ /* Save the caller-clobbered registers. */ ++ push r0 ++ push r1 ++ push r2 ++ push r3 ++ push r4 ++ push r5 ++ push r6 ++ push r7 ++ push lr ++ ld r0,@(36,sp) ++ mv r1,lr ++ ++#ifdef __PIC__ ++ push r12 ++ bl.s .+4 ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ ++ add r12,lr ++ ld24 lr,#__mcount_internal@GOT ++ add lr,r12 ++ ld lr,@(lr) ++ jl lr ++ pop r12 ++#else ++ bl __mcount_internal ++#endif ++ /* Pop the saved registers. Please note that `mcount' has no ++ return value. */ ++ pop lr ++ pop r7 ++ pop r6 ++ pop r5 ++ pop r4 ++ pop r3 ++ pop r2 ++ pop r1 ++ pop r0 ++ ret ++ ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) ++ ++#undef mcount ++weak_alias(_mcount, mcount) +diff --exclude=CVS -upNr ports/sysdeps/m32r/machine-gmon.h ports/sysdeps/m32r/machine-gmon.h +--- ports/sysdeps/m32r/machine-gmon.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/machine-gmon.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,34 @@ ++/* Machine-dependent definitions for profiling support. M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* NOTYET */ ++ ++/* We must not pollute the global namespace. */ ++#define mcount_internal __mcount_internal ++ ++void mcount_internal (u_long frompc, u_long selfpc); ++ ++#define _MCOUNT_DECL(frompc, selfpc) \ ++void mcount_internal (u_long frompc, u_long selfpc) ++ ++ ++/* Define MCOUNT as empty since we have the implementation in another ++ file. */ ++#define MCOUNT ++ +diff --exclude=CVS -upNr ports/sysdeps/m32r/memcpy.S ports/sysdeps/m32r/memcpy.S +--- ports/sysdeps/m32r/memcpy.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/memcpy.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++ ++/* ++ * void *memcpy(void *dst, const void *src, size_t n); ++ * No overlap between the memory of DST and of SRC are assumed. ++ * ++ * dst: r0 ++ * src: r1 ++ * n : r2 ++ */ ++ ++ENTRY(memcpy) ++ mv r4, r0 ++ mv r7, r0 ++ or r7, r1 ++ beq r0, r1, end_memcopy ++ beqz r2, end_memcopy ++ ++ and3 r7, r7, #3 ++ bnez r7, byte_copy ++ srl3 r3, r2, #2 ++ and3 r2, r2, #3 ++ beqz r3, byte_copy ++ addi r4, #-4 ++word_copy: ++ ld r7, @r1+ ++ addi r3, #-1 ++ st r7, @+r4 ++ bnez r3, word_copy ++ beqz r2, end_memcopy ++ addi r4, #4 ++byte_copy: ++ ldb r7, @r1 ++ addi r1, #1 ++ addi r2, #-1 ++ stb r7, @r4 ++ addi r4, #1 ++ bnez r2, byte_copy ++end_memcopy: ++ jmp r14 ++ nop ++END(memcpy) ++libc_hidden_builtin_def (memcpy) +diff --exclude=CVS -upNr ports/sysdeps/m32r/memset.S ports/sysdeps/m32r/memset.S +--- ports/sysdeps/m32r/memset.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/memset.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,184 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++/* void *memset(void *dst, int val, int len); ++ * ++ * dst: r0 ++ * val: r1 ++ * len: r2 ++ * ret: r0 ++ */ ++ ++ .text ++ ++#if defined(__m32r2__) ++ ++ENTRY(memset) ++ mv r4, r0 || cmpz r2 ++ jc r14 ; return if r2=0 ++ cmpui r2, #16 ++ bnc qword_align_check ++ cmpui r2, #4 ++ bc byte_set ++; case len >= 4 ++word_align_check: ++ and3 r3, r4, #3 ++ beqz r3, word_set ++; case no word-align ++ addi r3, #-4 ++ neg r3, r3 ; r3 = -(r3 - 4) ++align_word: ++ stb r1, @r4 || addi r4, #1 ++ addi r2, #-1 || addi r3, #-1 ++ bnez r3, align_word ++ cmpui r2, #4 ++ bc byte_set ++word_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 || addi r4, #-4 ++ sll3 r3, r1, #16 ++ or r1, r3 || addi r2, #-4 ++word_set_loop: ++ st r1, @+r4 || addi r2, #-4 ++ bgtz r2, word_set_loop ++ bnez r2, byte_set_wrap ++ st r1, @+r4 ++ jmp r14 ++ ++qword_align_check: ++ and3 r3, r4, #15 ++ bnez r3, word_align_check ++qword_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 || addi r4, #-4 ++ sll3 r3, r1, #16 ++ or r1, r3 || ldi r5, #16 ++qword_set_loop: ++ ld r3, @(4,r4) ; cache line allocate ++ st r1, @+r4 || addi r2, #-16 ++ st r1, @+r4 || cmpu r2, r5 ++ st r1, @+r4 ++ st r1, @+r4 ++ bnc qword_set_loop || cmpz r2 ++ jc r14 ++set_remainder: ++ cmpui r2, #4 ++ bc byte_set_wrap1 ++ addi r2, #-4 ++ bra word_set_loop ++ ++byte_set_wrap: ++ addi r2, #4 ++ cmpz r2 ++ jc r14 ; return if r2=0 ++byte_set_wrap1: ++ addi r4, #4 ++byte_set: ++ addi r2, #-1 || stb r1, @r4+ ++ bnez r2, byte_set ++end_memset: ++ jmp r14 ++END(memset) ++ ++#else ++ ++ENTRY(memset) ++ mv r4, r0 ++ beqz r2, end_memset ++ cmpui r2, #16 ++ bnc qword_align_check ++ cmpui r2, #4 ++ bc byte_set ++; case len >= 4 ++word_align_check: ++ and3 r3, r4, #3 ++ beqz r3, word_set ++; case no word-align ++ addi r3, #-4 ++ neg r3, r3 ; r3 = -(r3 - 4) ++align_word: ++ stb r1, @r4 ++ addi r4, #1 ++ addi r2, #-1 ++ addi r3, #-1 ++ bnez r3, align_word ++ cmpui r2, #4 ++ bc byte_set ++word_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 ++ sll3 r3, r1, #16 ++ or r1, r3 ++ addi r2, #-4 ++ addi r4, #-4 ++word_set_loop: ++ st r1, @+r4 ++ addi r2, #-4 ++ bgtz r2, word_set_loop ++ bnez r2, byte_set_wrap ++ st r1, @+r4 ++ jmp r14 ++ ++qword_align_check: ++ and3 r3, r4, #15 ++ bnez r3, word_align_check ++qword_set: ++ and3 r1, r1, #0x00ff ; r1: abababab <-- ??????ab ++ sll3 r3, r1, #8 ++ or r1, r3 ++ sll3 r3, r1, #16 ++ or r1, r3 ++ addi r4, #-4 ++qword_set_loop: ++ ld r3, @(4,r4) ; cache line allocate ++ addi r2, #-16 ++ st r1, @+r4 ++ st r1, @+r4 ++ cmpui r2, #16 ++ st r1, @+r4 ++ st r1, @+r4 ++ bnc qword_set_loop ++ bnez r2, set_remainder ++ jmp r14 ++set_remainder: ++ cmpui r2, #4 ++ bc byte_set_wrap1 ++ addi r2, #-4 ++ bra word_set_loop ++ ++byte_set_wrap: ++ addi r2, #4 ++ beqz r2, end_memset ++byte_set_wrap1: ++ addi r4, #4 ++byte_set: ++ addi r2, #-1 ++ stb r1, @r4 ++ addi r4, #1 ++ bnez r2, byte_set ++end_memset: ++ jmp r14 ++END(memset) ++ ++#endif ++libc_hidden_builtin_def (memset) +diff --exclude=CVS -upNr ports/sysdeps/m32r/memusage.h ports/sysdeps/m32r/memusage.h +--- ports/sysdeps/m32r/memusage.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/memusage.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,21 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#define GETSP() ({ register uintptr_t stack_ptr asm ("r15"); stack_ptr; }) ++ ++#include +diff --exclude=CVS -upNr ports/sysdeps/m32r/setjmp.S ports/sysdeps/m32r/setjmp.S +--- ports/sysdeps/m32r/setjmp.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/setjmp.S 2006-03-02 11:18:51.000000000 +0900 +@@ -0,0 +1,53 @@ ++/* setjmp for M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#define _SETJMP_H ++#define _ASM ++#include ++ ++ENTRY (__sigsetjmp) ++ mv r2, r0 ++ /* Save registers */ ++ st r8, @r0 ++ st r9, @+r0 ++ st r10, @+r0 ++ st r11, @+r0 ++ st r12, @+r0 ++ st r13, @+r0 ++ st r14, @+r0 /* lr */ ++ st r15, @+r0 /* sp */ ++ mv r0, r2 ++ ++ /* Make a tail call to __sigjmp_save; it takes the same args. */ ++#ifdef SHARED ++ mv r2,lr ++ bl.s .+4 ++ ld24 r3,#_GLOBAL_OFFSET_TABLE_ ++ add r3,lr ++ mv lr,r2 ++ ++ ld24 r2,C_SYMBOL_NAME(__sigjmp_save@GOT) ++ add r2,r3 ++ ld r2,@r2 ++#else ++ LDIMM (r2, C_SYMBOL_NAME(__sigjmp_save)) ++#endif ++ jmp r2 ++END (__sigsetjmp) +diff --exclude=CVS -upNr ports/sysdeps/m32r/shlib-versions ports/sysdeps/m32r/shlib-versions +--- ports/sysdeps/m32r/shlib-versions 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/shlib-versions 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++m32r.*-.*-linux.* DEFAULT GLIBC_2.3 ++m32r.*-.*-linux.* ld=ld-linux.so.2 +diff --exclude=CVS -upNr ports/sysdeps/m32r/stackinfo.h ports/sysdeps/m32r/stackinfo.h +--- ports/sysdeps/m32r/stackinfo.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/stackinfo.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,28 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* This file contains a bit of information about the stack allocation ++ of the processor. */ ++ ++#ifndef _STACKINFO_H ++#define _STACKINFO_H 1 ++ ++/* On SH the stack grows down. */ ++#define _STACK_GROWS_DOWN 1 ++ ++#endif /* stackinfo.h */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/strlen.S ports/sysdeps/m32r/strlen.S +--- ports/sysdeps/m32r/strlen.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/strlen.S 2006-04-20 09:44:29.000000000 +0900 +@@ -0,0 +1,77 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++ ++/* size_t strlen (const char *s) */ ++ ++ENTRY(strlen) ++ mv r6, r0 ++ ldi r2, #0 ++ and3 r0, r0, #3 ++ bnez r0, strlen_byte ++; ++strlen_word: ++ ld r0, @r6+ ++; ++ seth r5, #high(0x01010101) ++ or3 r5, r5, #low(0x01010101) ++ sll3 r7, r5, #7 ++strlen_word_loop: ++ not r4, r0 ; NOTE: If a null char. exists, return 0. ++ sub r0, r5 ; if ((x - 0x01010101) & ~x & 0x80808080) ++ and r4, r7 ; return 0; ++ and r4, r0 ++ bnez r4, strlen_last_bytes ++ ld r1, @r6+ ++ addi r2, #4 ++; ++ not r4, r1 ; NOTE: If a null char. exists, return 0. ++ sub r1, r5 ; if ((x - 0x01010101) & ~x & 0x80808080) ++ and r4, r7 ; return 0; ++ and r4, r1 ++ bnez r4, strlen_last_bytes ++ ld r0, @r6+ ++ addi r2, #4 ++ bra strlen_word_loop ++; ++strlen_byte: ++ ldb r1, @r6 ++ addi r6, #1 ++ beqz r1, strlen_exit ++ addi r2, #1 ++ bra strlen_byte ++; ++strlen_last_bytes: ++ ldi r0, #4 ++ addi r6, #-4 ++; ++strlen_byte_loop: ++ ldb r1, @r6 ++ addi r6, #1 ++ addi r0, #-1 ++ beqz r1, strlen_exit ++ addi r2, #1 ++ bnez r0, strlen_byte_loop ++; ++strlen_exit: ++ mv r0, r2 ++ jmp r14 ++END(strlen) ++libc_hidden_builtin_def (strlen) +diff --exclude=CVS -upNr ports/sysdeps/m32r/sys/ucontext.h ports/sysdeps/m32r/sys/ucontext.h +--- ports/sysdeps/m32r/sys/ucontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/sys/ucontext.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,102 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_UCONTEXT_H ++#define _SYS_UCONTEXT_H 1 ++ ++#include ++#include ++ ++typedef int greg_t; ++ ++/* Number of general registers. */ ++#define NGREG 16 ++ ++/* Container for all general registers. */ ++typedef greg_t gregset_t[NGREG]; ++ ++/* Number of each register is the `gregset_t' array. */ ++enum ++{ ++ R0 = 0, ++#define R0 R0 ++ R1 = 1, ++#define R1 R1 ++ R2 = 2, ++#define R2 R2 ++ R3 = 3, ++#define R3 R3 ++ R4 = 4, ++#define R4 R4 ++ R5 = 5, ++#define R5 R5 ++ R6 = 6, ++#define R6 R6 ++ R7 = 7, ++#define R7 R7 ++ R8 = 8, ++#define R8 R8 ++ R9 = 9, ++#define R9 R9 ++ R10 = 10, ++#define R10 R10 ++ R11 = 11, ++#define R11 R11 ++ R12 = 12, ++#define R12 R12 ++ R13 = 13, ++#define R13 R13 ++ R14 = 14, ++#define R14 R14 ++ R15 = 15, ++#define R15 R15 ++}; ++ ++#if 0 ++/* FIXME */ ++typedef int freg_t; ++ ++/* Number of FPU registers. */ ++#define NFREG 16 ++ ++/* Structure to describe FPU registers. */ ++typedef freg_t fpregset_t[NFREG]; ++#endif ++ ++/* Context to describe whole processor state. */ ++typedef struct ++ { ++ gregset_t gregs; ++#if 0 ++ fpregset_t fpregs; ++ fpregset_t xfpregs; ++#endif ++ } mcontext_t; ++ ++/* Userlevel context. */ ++typedef struct ucontext ++ { ++ unsigned long int uc_flags; ++ struct ucontext *uc_link; ++ __sigset_t uc_sigmask; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ long int uc_filler[5]; ++ } ucontext_t; ++ ++#endif /* sys/ucontext.h */ +diff --exclude=CVS -upNr ports/sysdeps/m32r/sysdep.h ports/sysdeps/m32r/sysdep.h +--- ports/sysdeps/m32r/sysdep.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/m32r/sysdep.h 2006-03-06 15:12:42.000000000 +0900 +@@ -0,0 +1,92 @@ ++/* Assembler macros for M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++#ifdef __ASSEMBLER__ ++ ++/* Syntactic details of assembler. */ ++ ++#ifdef HAVE_ELF ++ ++#define ALIGNARG(log2) log2 ++/* For ELF we need the `.type' directive to make shared libs work right. */ ++#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,@##typearg ++#define ASM_SIZE_DIRECTIVE(name) .size name,.-name ++ ++#define PLTJMP(_x) _x ++#define GOT(_x) _x ++ ++#else ++ ++#define ALIGNARG(log2) log2 ++#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified. */ ++#define ASM_SIZE_DIRECTIVE(name) /* Nothing is specified. */ ++ ++#define PLTJMP(_x) _x ++#define GOT(_x) _x ++ ++#endif ++ ++/* If compiled for profiling, call `mcount' at the start of each function. */ ++#ifdef PROF ++#ifdef __PIC__ ++#define CALL_MCOUNT \ ++ push r14 ! \ ++ ld24 r14,#mcount@GOT ! \ ++ add r14,r12 ! \ ++ ld r14,@r14 ! \ ++ jl r14 ! \ ++ pop r14 ++#else ++#define CALL_MCOUNT \ ++ push r14 ! \ ++ seth r14,#high(mcount) ! \ ++ or3 r14,r14,#low(mcount) ! \ ++ jl r14 ! \ ++ pop r14 ++#endif ++#else ++#define CALL_MCOUNT /* Do nothing. */ ++#endif ++ ++#undef CALL_MCOUNT /* Do nothing. */ ++#define CALL_MCOUNT /* Do nothing. */ ++ ++/* Define an entry point visible from C. */ ++#define ENTRY(name) \ ++ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name) ! \ ++ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function) ! \ ++ .balign 4 ! \ ++ C_LABEL(name) ! \ ++ CALL_MCOUNT ++ ++#undef END ++#define END(name) \ ++ ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(name)) ++ ++#ifdef NO_UNDERSCORES ++/* Since C identifiers are not normally prefixed with an underscore ++ on this system, the asm identifier `syscall_error' intrudes on the ++ C name space. Make sure we use an innocuous name. */ ++#define syscall_error __syscall_error ++#define mcount _mcount ++#endif ++ ++#endif /* __ASSEMBLER__ */ +diff --exclude=CVS -upNr ports/sysdeps/unix/m32r/Makefile ports/sysdeps/unix/m32r/Makefile +--- ports/sysdeps/unix/m32r/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/m32r/Makefile 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,4 @@ ++# m32r/ELF specific definitions. ++ ++# The assembler on m32r needs the -fPIC flag even when it's assembler code. ++ASFLAGS-.os = -fPIC +diff --exclude=CVS -upNr ports/sysdeps/unix/m32r/sysdep.S ports/sysdeps/unix/m32r/sysdep.S +--- ports/sysdeps/unix/m32r/sysdep.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/m32r/sysdep.S 2006-03-02 11:39:48.000000000 +0900 +@@ -0,0 +1,84 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#define _ERRNO_H ++#include ++ ++.globl C_SYMBOL_NAME(errno) ++.globl syscall_error ++ ++#undef syscall_error ++#ifdef NO_UNDERSCORES ++__syscall_error: ++#else ++syscall_error: ++#endif ++#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN ++ /* We translate the system's EWOULDBLOCK error into EAGAIN. ++ The GNU C library always defines EWOULDBLOCK==EAGAIN. ++ EWOULDBLOCK_sys is the original number. */ ++ ldi r1, #EWOULDBLOCK_sys ++ bne r1, r0, skip ++ ldi r0, #EAGAIN ++skip: ++#endif ++ /* Store it in errno... */ ++#ifndef SHARED ++#ifndef _LIBC_REENTRANT ++ LDIMM (r1, C_SYMBOL_NAME(errno)) ++ st r0, @r1 ++#else ++ push r0 ++ push lr ++ LDIMM (r1, C_SYMBOL_NAME(__errno_location)) ++ jl r1 ++ pop lr ++ pop r1 ++ st r1, @r0 ++#endif ++#else ++ push r12 ++ push lr ++ bl.s .+4 ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ ++ add r12, lr ++#ifndef _LIBC_REENTRANT ++ mv r2, r0 ++ LDIMM (r1, C_SYMBOL_NAME(errno@GOT)) ++ add r1, r12 ++ ld r1, @r1 ++ st r2, @r1 ++#else ++ push r0 ++ LDIMM (r1, C_SYMBOL_NAME(__errno_location@GOT)) ++ add r1, r12 ++ ld r1, @r1 ++ jl r1 ++ pop r1 ++ st r1, @r0 ++#endif ++ pop lr ++ pop r12 ++#endif ++ /* And just kick back a -1. */ ++ ldi r0, #-1 ++ ret ++ ++#undef __syscall_error ++END(__syscall_error) +diff --exclude=CVS -upNr ports/sysdeps/unix/m32r/sysdep.h ports/sysdeps/unix/m32r/sysdep.h +--- ports/sysdeps/unix/m32r/sysdep.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/m32r/sysdep.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,33 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include "../../m32r/sysdep.h" ++ ++#ifdef __ASSEMBLER__ ++ ++#define ret jmp r14 ++ ++/* The m32r move insn is d, s. */ ++#define MOVE(x,y) mv y,x ++ ++#define LDIMM(reg,x) \ ++ seth reg, #high(x) ! \ ++ or3 reg, reg, #low(x) ++ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/Dist ports/sysdeps/unix/sysv/linux/m32r/Dist +--- ports/sysdeps/unix/sysv/linux/m32r/Dist 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/Dist 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,9 @@ ++clone.S ++pipe.S ++flushcache.S ++setresuid.c ++setresgid.c ++setfsuid.c ++setfsgid.c ++sys/io.h ++sys/user.h +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/Makefile ports/sysdeps/unix/sysv/linux/m32r/Makefile +--- ports/sysdeps/unix/sysv/linux/m32r/Makefile 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/Makefile 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,16 @@ ++# m32r/ELF specific definitions. ++#gnulib := -lgcc ++#static-gnulib := -lgcc ++ ++# The assembler on m32r needs the -fPIC flag even when it's assembler code. ++ASFLAGS-.os = -fPIC ++ ++ifeq ($(subdir),io) ++sysdep_routines += pipe ++endif ++ ++ifeq ($(subdir),misc) ++sysdep_routines += m32r-stub tas \ ++ cachectl flushcache ++sysdep_headers += sys/io.h sys/tas.h sys/cachectl.h ++endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/Versions ports/sysdeps/unix/sysv/linux/m32r/Versions +--- ports/sysdeps/unix/sysv/linux/m32r/Versions 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/Versions 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,12 @@ ++libc { ++ GLIBC_2.3 { ++ # Needed by gcc ++ _flush_cache; ++ ++ # c* ++ cachectl; cacheflush; ++ ++ # t* ++ tas; ++ } ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h +--- ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/bits/fcntl.h 2006-03-01 17:17:36.000000000 +0900 +@@ -0,0 +1,179 @@ ++/* O_*, F_*, FD_* bit values for Linux. ++ Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _FCNTL_H ++# error "Never use directly; include instead." ++#endif ++ ++ ++#include ++ ++/* open/fcntl - O_SYNC is only implemented on blocks devices and on files ++ located on an ext2 file system */ ++#define O_ACCMODE 0003 ++#define O_RDONLY 00 ++#define O_WRONLY 01 ++#define O_RDWR 02 ++#define O_CREAT 0100 /* not fcntl */ ++#define O_EXCL 0200 /* not fcntl */ ++#define O_NOCTTY 0400 /* not fcntl */ ++#define O_TRUNC 01000 /* not fcntl */ ++#define O_APPEND 02000 ++#define O_NONBLOCK 04000 ++#define O_NDELAY O_NONBLOCK ++#define O_SYNC 010000 ++#define O_FSYNC O_SYNC ++#define O_ASYNC 020000 ++ ++#ifdef __USE_GNU ++# define O_DIRECT 040000 /* Direct disk access. */ ++# define O_DIRECTORY 0200000 /* Must be a directory. */ ++# define O_NOFOLLOW 0400000 /* Do not follow links. */ ++#endif ++ ++/* For now Linux has synchronisity options for data and read operations. ++ We define the symbols here but let them do the same as O_SYNC since ++ this is a superset. */ ++#if defined __USE_POSIX199309 || defined __USE_UNIX98 ++# define O_DSYNC O_SYNC /* Synchronize data. */ ++# define O_RSYNC O_SYNC /* Synchronize read operations. */ ++#endif ++ ++#ifdef __USE_LARGEFILE64 ++# define O_LARGEFILE 0100000 ++#endif ++ ++/* Values for the second argument to `fcntl'. */ ++#define F_DUPFD 0 /* Duplicate file descriptor. */ ++#define F_GETFD 1 /* Get file descriptor flags. */ ++#define F_SETFD 2 /* Set file descriptor flags. */ ++#define F_GETFL 3 /* Get file status flags. */ ++#define F_SETFL 4 /* Set file status flags. */ ++#ifndef __USE_FILE_OFFSET64 ++# define F_GETLK 5 /* Get record locking info. */ ++# define F_SETLK 6 /* Set record locking info (non-blocking). */ ++# define F_SETLKW 7 /* Set record locking info (blocking). */ ++#else ++# define F_GETLK F_GETLK64 /* Get record locking info. */ ++# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ ++# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ ++#endif ++#define F_GETLK64 12 /* Get record locking info. */ ++#define F_SETLK64 13 /* Set record locking info (non-blocking). */ ++#define F_SETLKW64 14 /* Set record locking info (blocking). */ ++ ++#if defined __USE_BSD || defined __USE_XOPEN2K ++# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ ++# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */ ++#endif ++ ++#ifdef __USE_GNU ++# define F_SETSIG 10 /* Set number of signal to be sent. */ ++# define F_GETSIG 11 /* Get number of signal to be sent. */ ++#endif ++ ++#ifdef __USE_GNU ++# define F_SETLEASE 1024 /* Set a lease. */ ++# define F_GETLEASE 1025 /* Enquire what lease is active. */ ++# define F_NOTIFY 1026 /* Request notfications on a directory. */ ++#endif ++ ++/* For F_[GET|SET]FL. */ ++#define FD_CLOEXEC 1 /* actually anything with low bit set goes */ ++ ++/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ ++#define F_RDLCK 0 /* Read lock. */ ++#define F_WRLCK 1 /* Write lock. */ ++#define F_UNLCK 2 /* Remove lock. */ ++ ++/* For old implementation of bsd flock(). */ ++#define F_EXLCK 4 /* or 3 */ ++#define F_SHLCK 8 /* or 4 */ ++ ++#ifdef __USE_BSD ++/* Operations for bsd flock(), also used by the kernel implementation. */ ++# define LOCK_SH 1 /* shared lock */ ++# define LOCK_EX 2 /* exclusive lock */ ++# define LOCK_NB 4 /* or'd with one of the above to prevent ++ blocking */ ++# define LOCK_UN 8 /* remove lock */ ++#endif ++ ++#ifdef __USE_GNU ++# define LOCK_MAND 32 /* This is a mandatory flock: */ ++# define LOCK_READ 64 /* ... which allows concurrent read operations. */ ++# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */ ++# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */ ++#endif ++ ++#ifdef __USE_GNU ++/* Types of directory notifications that may be requested with F_NOTIFY. */ ++# define DN_ACCESS 0x00000001 /* File accessed. */ ++# define DN_MODIFY 0x00000002 /* File modified. */ ++# define DN_CREATE 0x00000004 /* File created. */ ++# define DN_DELETE 0x00000008 /* File removed. */ ++# define DN_RENAME 0x00000010 /* File renamed. */ ++# define DN_ATTRIB 0x00000020 /* File changed attibutes. */ ++# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */ ++#endif ++ ++struct flock ++ { ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++#ifndef __USE_FILE_OFFSET64 ++ __off_t l_start; /* Offset where the lock begins. */ ++ __off_t l_len; /* Size of the locked area; zero means until EOF. */ ++#else ++ __off64_t l_start; /* Offset where the lock begins. */ ++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ ++#endif ++ __pid_t l_pid; /* Process holding the lock. */ ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct flock64 ++ { ++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ ++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ ++ __off64_t l_start; /* Offset where the lock begins. */ ++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ ++ __pid_t l_pid; /* Process holding the lock. */ ++ }; ++#endif ++ ++/* Define some more compatibility macros to be backward compatible with ++ BSD systems which did not managed to hide these kernel macros. */ ++#ifdef __USE_BSD ++# define FAPPEND O_APPEND ++# define FFSYNC O_FSYNC ++# define FASYNC O_ASYNC ++# define FNONBLOCK O_NONBLOCK ++# define FNDELAY O_NDELAY ++#endif /* Use BSD. */ ++ ++/* Advise to `posix_fadvise'. */ ++#ifdef __USE_XOPEN2K ++# define POSIX_FADV_NORMAL 0 /* No further special treatment. */ ++# define POSIX_FADV_RANDOM 1 /* Expect random page references. */ ++# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */ ++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ ++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h +--- ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/bits/mman.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,98 @@ ++/* Definitions for POSIX memory map interface. Linux/M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_MMAN_H ++# error "Never include this file directly. Use instead" ++#endif ++ ++/* The following definitions basically come from the kernel headers. ++ But the kernel header is not namespace clean. */ ++ ++ ++/* Protections are chosen from these bits, OR'd together. The ++ implementation does not necessarily support PROT_EXEC or PROT_WRITE ++ without PROT_READ. The only guarantees are that no writing will be ++ allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ ++ ++#define PROT_READ 0x1 /* Page can be read. */ ++#define PROT_WRITE 0x2 /* Page can be written. */ ++#define PROT_EXEC 0x4 /* Page can be executed. */ ++#define PROT_NONE 0x0 /* Page can not be accessed. */ ++#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of ++ growsdown vma (mprotect only). */ ++#define PROT_GROWSUP 0x02000000 /* Extend change to start of ++ growsup vma (mprotect only). */ ++ ++ ++/* Sharing types (must choose one and only one of these). */ ++#define MAP_SHARED 0x01 /* Share changes. */ ++#define MAP_PRIVATE 0x02 /* Changes are private. */ ++#ifdef __USE_MISC ++# define MAP_TYPE 0x0f /* Mask for type of mapping. */ ++#endif ++ ++/* Other flags. */ ++#define MAP_FIXED 0x10 /* Interpret addr exactly. */ ++#ifdef __USE_MISC ++# define MAP_FILE 0 ++# define MAP_ANONYMOUS 0x20 /* Don't use a file. */ ++# define MAP_ANON MAP_ANONYMOUS ++#endif ++ ++/* These are Linux-specific. */ ++#ifdef __USE_MISC ++# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */ ++# define MAP_DENYWRITE 0x0800 /* ETXTBSY */ ++# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */ ++# define MAP_LOCKED 0x2000 /* Lock the mapping. */ ++# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ ++#endif ++ ++/* Flags to `msync'. */ ++#define MS_ASYNC 1 /* Sync memory asynchronously. */ ++#define MS_SYNC 4 /* Synchronous memory sync. */ ++#define MS_INVALIDATE 2 /* Invalidate the caches. */ ++ ++/* Flags for `mlockall'. */ ++#define MCL_CURRENT 1 /* Lock all currently mapped pages. */ ++#define MCL_FUTURE 2 /* Lock all additions to address ++ space. */ ++ ++/* Flags for `mremap'. */ ++#ifdef __USE_GNU ++# define MREMAP_MAYMOVE 1 ++#endif ++ ++/* Advice to `madvise'. */ ++#ifdef __USE_BSD ++# define MADV_NORMAL 0 /* No further special treatment. */ ++# define MADV_RANDOM 1 /* Expect random page references. */ ++# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define MADV_WILLNEED 3 /* Will need these pages. */ ++# define MADV_DONTNEED 4 /* Don't need these pages. */ ++#endif ++ ++/* The POSIX people had to invent similar names for the same things. */ ++#ifdef __USE_XOPEN2K ++# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ ++# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ ++# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ ++# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ ++# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h +--- ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/bits/resource.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,209 @@ ++/* Bit values & structures for resource limits. Linux/M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_RESOURCE_H ++# error "Never use directly; include instead." ++#endif ++ ++#include ++ ++/* Transmute defines to enumerations. The macro re-definitions are ++ necessary because some programs want to test for operating system ++ features with #ifdef RUSAGE_SELF. In ISO C the reflexive ++ definition is a no-op. */ ++ ++/* Kinds of resource limit. */ ++enum __rlimit_resource ++{ ++ /* Per-process CPU limit, in seconds. */ ++ RLIMIT_CPU = 0, ++#define RLIMIT_CPU RLIMIT_CPU ++ ++ /* Largest file that can be created, in bytes. */ ++ RLIMIT_FSIZE = 1, ++#define RLIMIT_FSIZE RLIMIT_FSIZE ++ ++ /* Maximum size of data segment, in bytes. */ ++ RLIMIT_DATA = 2, ++#define RLIMIT_DATA RLIMIT_DATA ++ ++ /* Maximum size of stack segment, in bytes. */ ++ RLIMIT_STACK = 3, ++#define RLIMIT_STACK RLIMIT_STACK ++ ++ /* Largest core file that can be created, in bytes. */ ++ RLIMIT_CORE = 4, ++#define RLIMIT_CORE RLIMIT_CORE ++ ++ /* Largest resident set size, in bytes. ++ This affects swapping; processes that are exceeding their ++ resident set size will be more likely to have physical memory ++ taken from them. */ ++ RLIMIT_RSS = 5, ++#define RLIMIT_RSS RLIMIT_RSS ++ ++ /* Number of open files. */ ++ RLIMIT_NOFILE = 7, ++ RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */ ++#define RLIMIT_NOFILE RLIMIT_NOFILE ++#define RLIMIT_OFILE RLIMIT_OFILE ++ ++ /* Address space limit. */ ++ RLIMIT_AS = 9, ++#define RLIMIT_AS RLIMIT_AS ++ ++ /* Number of processes. */ ++ RLIMIT_NPROC = 6, ++#define RLIMIT_NPROC RLIMIT_NPROC ++ ++ /* Locked-in-memory address space. */ ++ RLIMIT_MEMLOCK = 8, ++#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK ++ ++ /* Maximum number of file locks. */ ++ RLIMIT_LOCKS = 10, ++#define RLIMIT_LOCKS RLIMIT_LOCKS ++ ++ RLIMIT_NLIMITS = 11, ++ RLIM_NLIMITS = RLIMIT_NLIMITS ++#define RLIMIT_NLIMITS RLIMIT_NLIMITS ++#define RLIM_NLIMITS RLIM_NLIMITS ++}; ++ ++/* Value to indicate that there is no limit. */ ++#ifndef __USE_FILE_OFFSET64 ++# define RLIM_INFINITY ((unsigned long int)(~0UL)) ++#else ++# define RLIM_INFINITY 0xffffffffffffffffuLL ++#endif ++ ++#ifdef __USE_LARGEFILE64 ++# define RLIM64_INFINITY 0xffffffffffffffffuLL ++#endif ++ ++/* We can represent all limits. */ ++#define RLIM_SAVED_MAX RLIM_INFINITY ++#define RLIM_SAVED_CUR RLIM_INFINITY ++ ++ ++/* Type for resource quantity measurement. */ ++#ifndef __USE_FILE_OFFSET64 ++typedef __rlim_t rlim_t; ++#else ++typedef __rlim64_t rlim_t; ++#endif ++#ifdef __USE_LARGEFILE64 ++typedef __rlim64_t rlim64_t; ++#endif ++ ++struct rlimit ++ { ++ /* The current (soft) limit. */ ++ rlim_t rlim_cur; ++ /* The hard limit. */ ++ rlim_t rlim_max; ++ }; ++ ++#ifdef __USE_LARGEFILE64 ++struct rlimit64 ++ { ++ /* The current (soft) limit. */ ++ rlim64_t rlim_cur; ++ /* The hard limit. */ ++ rlim64_t rlim_max; ++ }; ++#endif ++ ++/* Whose usage statistics do you want? */ ++enum __rusage_who ++{ ++ /* The calling process. */ ++ RUSAGE_SELF = 0, ++#define RUSAGE_SELF RUSAGE_SELF ++ ++ /* All of its terminated child processes. */ ++ RUSAGE_CHILDREN = -1, ++#define RUSAGE_CHILDREN RUSAGE_CHILDREN ++ ++ /* Both. */ ++ RUSAGE_BOTH = -2 ++#define RUSAGE_BOTH RUSAGE_BOTH ++}; ++ ++#define __need_timeval ++#include /* For `struct timeval'. */ ++ ++/* Structure which says how much of each resource has been used. */ ++struct rusage ++ { ++ /* Total amount of user time used. */ ++ struct timeval ru_utime; ++ /* Total amount of system time used. */ ++ struct timeval ru_stime; ++ /* Maximum resident set size (in kilobytes). */ ++ long int ru_maxrss; ++ /* Amount of sharing of text segment memory ++ with other processes (kilobyte-seconds). */ ++ long int ru_ixrss; ++ /* Amount of data segment memory used (kilobyte-seconds). */ ++ long int ru_idrss; ++ /* Amount of stack memory used (kilobyte-seconds). */ ++ long int ru_isrss; ++ /* Number of soft page faults (i.e. those serviced by reclaiming ++ a page from the list of pages awaiting reallocation. */ ++ long int ru_minflt; ++ /* Number of hard page faults (i.e. those that required I/O). */ ++ long int ru_majflt; ++ /* Number of times a process was swapped out of physical memory. */ ++ long int ru_nswap; ++ /* Number of input operations via the file system. Note: This ++ and `ru_oublock' do not include operations with the cache. */ ++ long int ru_inblock; ++ /* Number of output operations via the file system. */ ++ long int ru_oublock; ++ /* Number of IPC messages sent. */ ++ long int ru_msgsnd; ++ /* Number of IPC messages received. */ ++ long int ru_msgrcv; ++ /* Number of signals delivered. */ ++ long int ru_nsignals; ++ /* Number of voluntary context switches, i.e. because the process ++ gave up the process before it had to (usually to wait for some ++ resource to be available). */ ++ long int ru_nvcsw; ++ /* Number of involuntary context switches, i.e. a higher priority process ++ became runnable or the current process used up its time slice. */ ++ long int ru_nivcsw; ++ }; ++ ++/* Priority limits. */ ++#define PRIO_MIN -20 /* Minimum priority a process can have. */ ++#define PRIO_MAX 20 /* Maximum priority a process can have. */ ++ ++/* The type of the WHICH argument to `getpriority' and `setpriority', ++ indicating what flavor of entity the WHO argument specifies. */ ++enum __priority_which ++{ ++ PRIO_PROCESS = 0, /* WHO is a process ID. */ ++#define PRIO_PROCESS PRIO_PROCESS ++ PRIO_PGRP = 1, /* WHO is a process group ID. */ ++#define PRIO_PGRP PRIO_PGRP ++ PRIO_USER = 2 /* WHO is a user ID. */ ++#define PRIO_USER PRIO_USER ++}; +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/brk.c ports/sysdeps/unix/sysv/linux/m32r/brk.c +--- ports/sysdeps/unix/sysv/linux/m32r/brk.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/brk.c 2006-03-02 12:30:59.000000000 +0900 +@@ -0,0 +1,50 @@ ++/* brk system call for Linux/M32R. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++#include ++ ++/* This must be initialized data because commons can't have aliases. */ ++void *__curbrk = 0; ++ ++int ++__brk (void *addr) ++{ ++ void *newbrk; ++ register long r7 asm ("r7") = SYS_ify (brk); ++ register long r0 asm ("r0") = (long)addr; ++ ++ asm volatile ("trap #0x2 || nop\n\t" ++ "mv %0,r0\n" ++ : "=r"(newbrk), "+r" (r0) ++ : "r" (r7), "r" (r0) ++ ); ++ ++ __curbrk = newbrk; ++ ++ if (newbrk < addr) ++ { ++ __set_errno (ENOMEM); ++ return -1; ++ } ++ ++ return 0; ++} ++weak_alias (__brk, brk) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/chown.c ports/sysdeps/unix/sysv/linux/m32r/chown.c +--- ports/sysdeps/unix/sysv/linux/m32r/chown.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/chown.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++#include "kernel-features.h" ++ ++int ++__chown (const char *file, uid_t owner, gid_t group) ++{ ++ return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group); ++} ++libc_hidden_def (__chown) ++weak_alias (__chown, chown) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/clone.S ports/sysdeps/unix/sysv/linux/m32r/clone.S +--- ports/sysdeps/unix/sysv/linux/m32r/clone.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/clone.S 2006-03-02 17:39:21.000000000 +0900 +@@ -0,0 +1,89 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* clone() is even more special than fork() as it mucks with stacks ++ and invokes a function in the right context after its all over. */ ++ ++#include ++#define _ERRNO_H 1 ++#include ++ ++/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, ++ pid_t *ptid, void *tls, pid_t *ctid); */ ++ ++ .text ++ENTRY(__clone) ++ /* sanity check arguments. */ ++ beqz r0, 1f ++ bnez r1, 2f ++ ++ .fillinsn ++1: ++ ldi r0, #-EINVAL ++ bra .Lsyscall_error ++ .fillinsn ++2: ++ /* insert the args onto the new stack */ ++ st r3, @-r1 ++ /* save the function pointer as the 0th element */ ++ st r0, @-r1 ++ ++ /* do the system call */ ++ mv r0, r2 ++ ld r2, @r15 ++ ld r3, @(8,r15) ++ ;ld RX, @(4,r15) /* FIXME: *tls */ ++ ldi r7, #SYS_ify(clone) ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 3f // i.e. error in linux ++ ++ .fillinsn ++.Lsyscall_error: ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++3: ++ beqz r0, 4f ++ ret ++ .fillinsn ++4: ++ /* thread starts */ ++ ld r1, @r15 ++ ld r0, @(4,r15) ++ jl r1 ++ ++ /* we are done, passing the return value through r0 */ ++#ifdef SHARED ++ push r12 ++ push lr ++ bl.s .+4 ++ ld24 r12, #_GLOBAL_OFFSET_TABLE_ ++ add r12, lr ++ bl C_SYMBOL_NAME(_exit@PLT) ++ pop lr ++ pop r12 ++ ret ++#else ++ LDIMM (r1, C_SYMBOL_NAME(_exit)) ++ jmp r1 ++#endif ++ ++PSEUDO_END (__clone) ++ ++weak_alias (__clone, clone) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/configure ports/sysdeps/unix/sysv/linux/m32r/configure +--- ports/sysdeps/unix/sysv/linux/m32r/configure 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/configure 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,5 @@ ++# This file is generated from configure.in by Autoconf. DO NOT EDIT! ++ # Local configure fragment for m32r/sysdeps/unix/sysv/linux/m32r ++ ++arch_minimum_kernel=2.4.19 ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/configure.in ports/sysdeps/unix/sysv/linux/m32r/configure.in +--- ports/sysdeps/unix/sysv/linux/m32r/configure.in 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/configure.in 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,4 @@ ++# Local configure fragment for m32r/sysdeps/unix/sysv/linux/m32r ++ ++arch_minimum_kernel=2.4.19 ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/fchown.c ports/sysdeps/unix/sysv/linux/m32r/fchown.c +--- ports/sysdeps/unix/sysv/linux/m32r/fchown.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/fchown.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/fcntl.c ports/sysdeps/unix/sysv/linux/m32r/fcntl.c +--- ports/sysdeps/unix/sysv/linux/m32r/fcntl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/fcntl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/flushcache.S ports/sysdeps/unix/sysv/linux/m32r/flushcache.S +--- ports/sysdeps/unix/sysv/linux/m32r/flushcache.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/flushcache.S 2006-03-02 11:42:26.000000000 +0900 +@@ -0,0 +1,29 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++ ++/* int _flush_cache(char *addr, int nbytes, int cache); */ ++ ++ .text ++ENTRY(__flush_cache) ++ trap #12 || nop ++ ret ++PSEUDO_END (__flush_cache) ++ ++weak_alias (__flush_cache, _flush_cache) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/fxstat.c ports/sysdeps/unix/sysv/linux/m32r/fxstat.c +--- ports/sysdeps/unix/sysv/linux/m32r/fxstat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/fxstat.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getegid.c ports/sysdeps/unix/sysv/linux/m32r/getegid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getegid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getegid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/geteuid.c ports/sysdeps/unix/sysv/linux/m32r/geteuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/geteuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/geteuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getgid.c ports/sysdeps/unix/sysv/linux/m32r/getgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getgroups.c ports/sysdeps/unix/sysv/linux/m32r/getgroups.c +--- ports/sysdeps/unix/sysv/linux/m32r/getgroups.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getgroups.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++/* We also have to rewrite the kernel gid_t to the user land type. */ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getresgid.c ports/sysdeps/unix/sysv/linux/m32r/getresgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getresgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getresgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++ ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++ ++int ++__getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) ++{ ++ return INLINE_SYSCALL (getresgid32, 3, CHECK_1 (rgid), ++ CHECK_1 (egid), CHECK_1 (sgid)); ++} ++libc_hidden_def (__getresgid) ++weak_alias (__getresgid, getresgid) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getresuid.c ports/sysdeps/unix/sysv/linux/m32r/getresuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getresuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getresuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++ ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++ ++int ++__getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) ++{ ++ return INLINE_SYSCALL (getresuid32, 3, CHECK_1 (ruid), ++ CHECK_1 (euid), CHECK_1 (suid)); ++} ++libc_hidden_def (__getresuid) ++weak_alias (__getresuid, getresuid) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c +--- ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getrlimit.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,36 @@ ++/* Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++ ++int ++__new_getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) ++{ ++ return INLINE_SYSCALL (ugetrlimit, 2, resource, CHECK_1 (rlimits)); ++} ++ ++weak_alias (__new_getrlimit, __getrlimit); ++versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c +--- ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getrlimit64.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,25 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#define getrlimit64 __new_getrlimit64 ++ ++#include ++ ++#undef getrlimit64 ++#include ++versioned_symbol (libc, __new_getrlimit64, getrlimit64, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/getuid.c ports/sysdeps/unix/sysv/linux/m32r/getuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/getuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/getuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h +--- ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/kernel-features.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,17 @@ ++#define __ASSUME_32BITUIDS 1 ++#define __ASSUME_CLONE_THREAD_FLAGS 1 ++#define __ASSUME_FADVISE64_64_SYSCALL 1 ++#define __ASSUME_FCNTL64 1 ++#define __ASSUME_GETDENTS64_SYSCALL 1 ++#define __ASSUME_IPC64 1 ++#define __ASSUME_MMAP2_SYSCALL 1 ++#define __ASSUME_NEW_GETRLIMIT_SYSCALL 1 ++#define __ASSUME_SETRESGID_SYSCALL 1 ++#define __ASSUME_SETRESUID_SYSCALL 1 ++#define __ASSUME_STAT64_SYSCALL 1 ++#define __ASSUME_ST_INO_64_BIT 1 ++#define __ASSUME_TGKILL 1 ++#define __ASSUME_TRUNCATE64_SYSCALL 1 ++#define __ASSUME_UTIMES 1 ++ ++#include_next "kernel-features.h" +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/lchown.c ports/sysdeps/unix/sysv/linux/m32r/lchown.c +--- ports/sysdeps/unix/sysv/linux/m32r/lchown.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/lchown.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++#include "kernel-features.h" ++ ++int ++__lchown (const char *file, uid_t owner, gid_t group) ++{ ++ return INLINE_SYSCALL (lchown32, 3, CHECK_STRING (file), owner, group); ++} ++ ++weak_alias (__lchown, lchown) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h +--- ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/sysdep-cancel.h 2006-04-20 09:44:47.000000000 +0900 +@@ -0,0 +1,186 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#ifndef __ASSEMBLER__ ++# include ++#endif ++ ++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN_librt ++ ++# undef PSEUDO ++# define PSEUDO(name, syscall_name, args) \ ++ .text! \ ++ ENTRY(name)! \ ++ SINGLE_THREAD_P_INT ! \ ++ bnez r6, .Lpseudo_cancel ! \ ++ DO_CALL (syscall_name, args) ! \ ++ not r5,r0 ! \ ++ srai r5,12 ! \ ++ bnez r5,.Lpseudo_end ! \ ++ bra .Lsyscall_error ! \ ++ .fillinsn ! \ ++ .Lpseudo_cancel: ! \ ++ SAVE_REGS ! \ ++ /* save syscall args around CENABLE. */ \ ++ DOCARGS_##args ! \ ++ CENABLE ! \ ++ mv r8,r0 ! /* put mask back */ \ ++ /* restore syscall args */ \ ++ UNDOCARGS_##args ! \ ++ ldi r7, SYS_ify(syscall_name) ! /* do the call */ \ ++ SYSCALL_INST_##args ! \ ++ /* save syscall return value */ \ ++ push r0 ! \ ++ mv r0,r8 ! /* get mask back */ \ ++ CDISABLE ! \ ++ pop r0 ! /* retrive return value. */ \ ++ UNDOC2ARGS_##args ! \ ++ RESTORE_REGS ! \ ++ /* fix register damege. */ \ ++ not r5,r0 ! \ ++ srai r5,12 ! \ ++ bnez r5, .Lpseudo_end ! \ ++ .fillinsn ! \ ++ .Lsyscall_error: ! \ ++ SYSCALL_ERROR_HANDLER ! \ ++ .fillinsn ! \ ++ .Lpseudo_end: ! \ ++ ++# define DOCARGS_0 ++# define UNDOCARGS_0 ++# define UNDOC2ARGS_0 ++ ++# define DOCARGS_1 push r0 ++# define UNDOCARGS_1 pop r0 ++# define UNDOC2ARGS_1 ++ ++# define DOCARGS_2 push r1 ! push r0 ++# define UNDOCARGS_2 pop r0 ! pop r1 ++# define UNDOC2ARGS_2 ++ ++# define DOCARGS_3 push r2 ! push r1 ! push r0 ++# define UNDOCARGS_3 pop r0 ! pop r1 ! pop r2 ++# define UNDOC2ARGS_3 ++ ++# define DOCARGS_4 push r3 ! push r2 ! push r1 ! push r0 ++# define UNDOCARGS_4 pop r0 ! pop r1 ! pop r2 ! pop r3 ++# define UNDOC2ARGS_4 ++ ++# define DOCARGS_5 push r3 ! push r2 ! push r1 ! push r0 ++# if !defined PIC ++# define UNDOCARGS_5 pop r0 ! pop r1 ! pop r2 ! pop r3 ! ld r4, @(8,sp) ! push r4 ++# define UNDOC2ARGS_5 addi sp,#4 ++# else ++# define UNDOCARGS_5 pop r0 ! pop r1 ! pop r2 ! pop r3 ! ld r4, @(12,sp) ! push r4 ++# define UNDOC2ARGS_5 addi sp,#4 ++# endif ++ ++ ++# ifdef IS_IN_libpthread ++# ifdef PIC ++# define CENABLE bl __pthread_enable_asynccancel@PLT ++# define CDISABLE bl __pthread_disable_asynccancel@PLT ++# else ++# define CENABLE bl __pthread_enable_asynccancel ++# define CDISABLE bl __pthread_disable_asynccancel ++# endif ++# define __local_multiple_threads __pthread_multiple_threads ++# elif !defined NOT_IN_libc ++# ifdef PIC ++# define CENABLE bl __libc_enable_asynccancel@PLT ++# define CDISABLE bl __libc_disable_asynccancel@PLT ++# else ++# define CENABLE bl __libc_enable_asynccancel ++# define CDISABLE bl __libc_disable_asynccancel ++# endif ++# define __local_multiple_threads __libc_multiple_threads ++# else ++# ifdef PIC ++# define CENABLE bl __librt_enable_asynccancel@PLT ++# define CDISABLE bl __librt_disable_asynccancel@PLT ++# else ++# define CENABLE bl __librt_enable_asynccancel ++# define CDISABLE bl __librt_disable_asynccancel ++# endif ++# define __local_multiple_threads __librt_multiple_threads ++# endif ++ ++# ifndef __ASSEMBLER__ ++extern int __local_multiple_threads attribute_hidden; ++# define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1) ++# else ++# if !defined PIC ++# define SINGLE_THREAD_P_INT \ ++ seth r6,#shigh(__local_multiple_threads) ! \ ++ ld r6,@(low(__local_multiple_threads), r6) ++ ++# define SINGLE_THREAD_P SINGLE_THREAD_P_INT ++ ++# define SAVE_REGS \ ++ push lr ! push r8 ++ ++# define RESTORE_REGS \ ++ pop r8 ! pop lr ++ ++# else ++# if !defined NOT_IN_libc || defined IS_IN_libpthread ++# define SINGLE_THREAD_P_INT \ ++ mv r4,lr ! \ ++ bl.s .+4 ! \ ++ ld24 r5,#_GLOBAL_OFFSET_TABLE_ ! \ ++ seth r6,#high(__local_multiple_threads@GOTOFF) !\ ++ or3 r6,r6,#low(__local_multiple_threads@GOTOFF) !\ ++ add r5,lr ! \ ++ mv lr,r4 ! \ ++ add r6,r5 ! \ ++ ld r6,@r6 ++ ++# else ++# define SINGLE_THREAD_P_INT \ ++ mv r4,lr ! \ ++ bl.s .+4 ! \ ++ ld24 r5,#_GLOBAL_OFFSET_TABLE_ ! \ ++ ld24 r6,#__local_multiple_threads@GOT !\ ++ add r5,lr ! \ ++ mv lr,r4 ! \ ++ add r6,r5 ! \ ++ ld r6,@r6 ! \ ++ ld r6,@r6 ++ ++# endif ++ ++# define SINGLE_THREAD_P \ ++ SINGLE_THREAD_P_INT ++ ++# define SAVE_REGS \ ++ push lr ! push r8 ! push r12 ! mv r12, r5 ++ ++# define RESTORE_REGS \ ++ pop r12 ! pop r8 ! pop lr ++ ++# endif ++# endif ++ ++ ++#elif !defined __ASSEMBLER__ ++ ++/* This code should never be used but we define it anyhow. */ ++# define SINGLE_THREAD_P (1) ++ ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S +--- ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/linuxthreads/vfork.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,75 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#define _ERRNO_H 1 ++#include ++#include "kernel-features.h" ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++#ifdef __NR_vfork ++ ++#ifdef SHARED ++ mv r4, lr ++ bl.s .+4 ++ ld24 r5, #_GLOBAL_OFFSET_TABLE_ ++ add r5, lr ++ mv lr, r4 ++ ++ seth r6, #high(__libc_pthread_functions@GOTOFF) ++ or3 r6, r6, #low(__libc_pthread_functions@GOTOFF) ++ add r6, r5 ++ ld r0, @r6 ++ ++ seth r6, #high(HIDDEN_JUMPTARGET(__fork)@GOTOFF) ++ or3 r6, r6, #low(HIDDEN_JUMPTARGET(__fork)@GOTOFF) ++ add r6, r5 ++ beqz r0, 5f ++ jmp r6 ++ .fillinsn ++5: ++#else ++ .weak pthread_create ++ seth r0, #shigh(pthread_create) ++ or3 r0, r0, #low(pthread_create) ++ bnez r0, HIDDEN_JUMPTARGET(__fork) ++#endif ++ ++ ldi r7, #__NR_vfork ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++#endif ++ ++ SYSCALL_ERROR_HANDLER ++ ++ .fillinsn ++1: ++ ret ++ ++ ++PSEUDO_END (__vfork) ++libc_hidden_def(__vfork) ++ ++weak_alias (__vfork, vfork) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/lockf64.c ports/sysdeps/unix/sysv/linux/m32r/lockf64.c +--- ports/sysdeps/unix/sysv/linux/m32r/lockf64.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/lockf64.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/lxstat.c ports/sysdeps/unix/sysv/linux/m32r/lxstat.c +--- ports/sysdeps/unix/sysv/linux/m32r/lxstat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/lxstat.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++#include ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c +--- ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/m32r-stub.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,11 @@ ++#include ++ ++struct link_map _dl_rtld_map; ++ ++#ifndef __PIC__ ++void __pthread_initialize_minimal(void) ++{ ++} ++#endif ++ ++ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/mmap.S ports/sysdeps/unix/sysv/linux/m32r/mmap.S +--- ports/sysdeps/unix/sysv/linux/m32r/mmap.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/mmap.S 2006-04-20 09:44:30.000000000 +0900 +@@ -0,0 +1,59 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++#define EINVAL 22 ++ ++/* ++__ptr_t ++__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset); ++*/ ++ ++ENTRY (__mmap) ++ /* Push args and pass the address of 1st arg. ++ * The 5th and 6th args are already passed in the stack. ++ */ ++ ld r4, @sp // fd ++ ld r5, @(4,sp) // offset ++ and3 r6, r5, #0x00000fff ++ beqz r6, 2f ++ ldi r0, #-EINVAL ++ bra 0f ++ .fillinsn ++2: ++ srli r5, #12 ++ ++ ldi r7, #__NR_mmap2 ++ SYSCALL_INST ++ ++ .fillinsn ++0: ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ ++ .fillinsn ++1: ++ ret ++ ++PSEUDO_END (__mmap) ++ ++weak_alias (__mmap, mmap) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/msgctl.c ports/sysdeps/unix/sysv/linux/m32r/msgctl.c +--- ports/sysdeps/unix/sysv/linux/m32r/msgctl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/msgctl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,39 @@ ++/* Copyright (C) 1995, 1997, 1998, 2000, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++#include ++ ++int ++__new_msgctl (int msqid, int cmd, struct msqid_ds *buf) ++{ ++ return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, ++ msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); ++} ++ ++versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/pipe.S ports/sysdeps/unix/sysv/linux/m32r/pipe.S +--- ports/sysdeps/unix/sysv/linux/m32r/pipe.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/pipe.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++ENTRY (__libc_pipe) ++ ldi r7, #__NR_pipe ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++1: ++ ldi r0, #0 ++ ret ++PSEUDO_END (__libc_pipe) ++ ++weak_alias (__libc_pipe, __pipe) ++libc_hidden_def (__pipe) ++weak_alias (__libc_pipe, pipe) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h +--- ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/profil-counter.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,29 @@ ++/* Low-level statistical profiling support function. Linux/M32R version. ++ Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++ ++static void ++profil_counter (int signo, SIGCONTEXT sc) ++{ ++ void *pc; ++ pc = GET_PC(sc); ++ profil_count (pc); ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/semctl.c ports/sysdeps/unix/sysv/linux/m32r/semctl.c +--- ports/sysdeps/unix/sysv/linux/m32r/semctl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/semctl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,62 @@ ++/* Copyright (C) 1995,1997,1998,2000,2003,2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++#include ++ ++/* Define a `union semun' suitable for Linux here. */ ++union semun ++{ ++ int val; /* value for SETVAL */ ++ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ ++ unsigned short int *array; /* array for GETALL & SETALL */ ++ struct seminfo *__buf; /* buffer for IPC_INFO */ ++ struct __old_semid_ds *__old_buf; ++}; ++ ++#include ++#include /* definition of CHECK_SEMCTL needs union semum */ ++ ++int ++__new_semctl (int semid, int semnum, int cmd, ...) ++{ ++ union semun arg; ++ va_list ap; ++ ++ va_start (ap, cmd); ++ ++ /* Get the argument. */ ++ arg = va_arg (ap, union semun); ++ ++ va_end (ap); ++ ++ return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, ++ CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); ++} ++ ++versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setegid.c ports/sysdeps/unix/sysv/linux/m32r/setegid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setegid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setegid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/seteuid.c ports/sysdeps/unix/sysv/linux/m32r/seteuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/seteuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/seteuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setfsgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,34 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include "kernel-features.h" ++ ++int ++setfsgid (gid_t gid) ++{ ++ INTERNAL_SYSCALL_DECL (err); ++ /* No error checking. */ ++ return INTERNAL_SYSCALL (setfsgid32, err, 1, gid); ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setfsuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,35 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++#include "kernel-features.h" ++ ++int ++setfsuid (uid_t uid) ++{ ++ INTERNAL_SYSCALL_DECL (err); ++ /* No error checking. */ ++ return INTERNAL_SYSCALL (setfsuid32, err, 1, uid); ++} +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setgid.c ports/sysdeps/unix/sysv/linux/m32r/setgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setgroups.c ports/sysdeps/unix/sysv/linux/m32r/setgroups.c +--- ports/sysdeps/unix/sysv/linux/m32r/setgroups.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setgroups.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,2 @@ ++/* We also have to rewrite the kernel gid_t to the user land type. */ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setregid.c ports/sysdeps/unix/sysv/linux/m32r/setregid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setregid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setregid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setresgid.c ports/sysdeps/unix/sysv/linux/m32r/setresgid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setresgid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setresgid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setresuid.c ports/sysdeps/unix/sysv/linux/m32r/setresuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setresuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setresuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setreuid.c ports/sysdeps/unix/sysv/linux/m32r/setreuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setreuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setreuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c +--- ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setrlimit.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,37 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++ ++int ++__new_setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits) ++{ ++ return INLINE_SYSCALL (setrlimit, 2, resource, CHECK_1 (rlimits)); ++} ++ ++weak_alias (__new_setrlimit, __setrlimit); ++versioned_symbol (libc, __new_setrlimit, setrlimit, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/setuid.c ports/sysdeps/unix/sysv/linux/m32r/setuid.c +--- ports/sysdeps/unix/sysv/linux/m32r/setuid.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/setuid.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/shmctl.c ports/sysdeps/unix/sysv/linux/m32r/shmctl.c +--- ports/sysdeps/unix/sysv/linux/m32r/shmctl.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/shmctl.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,40 @@ ++/* Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "kernel-features.h" ++#include ++ ++int ++__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) ++{ ++ return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, ++ shmid, cmd | __IPC_64, 0, CHECK_1 (buf)); ++} ++ ++versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_3); +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sigaction.c ports/sysdeps/unix/sysv/linux/m32r/sigaction.c +--- ports/sysdeps/unix/sysv/linux/m32r/sigaction.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sigaction.c 2006-03-02 12:32:45.000000000 +0900 +@@ -0,0 +1,105 @@ ++/* POSIX.1 `sigaction' call for Linux/M32R. ++ Copyright (C) 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "kernel-features.h" ++ ++/* The difference here is that the sigaction structure used in the ++ kernel is not the same as we use in the libc. Therefore we must ++ translate it here. */ ++#include ++ ++/* We do not globally define the SA_RESTORER flag so do it here. */ ++#define SA_RESTORER 0x04000000 ++ ++/* Using the hidden attribute here does not change the code but it ++ helps to avoid warnings. */ ++#if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \ ++ && !defined HAVE_BROKEN_VISIBILITY_ATTRIBUTE ++extern void restore_rt (void) asm ("__restore_rt") attribute_hidden; ++#else ++static void restore_rt (void) asm ("__restore_rt"); ++#endif ++ ++ ++/* If ACT is not NULL, change the action for SIG to *ACT. ++ If OACT is not NULL, put the old action for SIG in *OACT. */ ++int ++__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) ++{ ++ int result; ++ struct kernel_sigaction kact, koact; ++ ++ if (act) ++ { ++ kact.k_sa_handler = act->sa_handler; ++ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t)); ++ kact.sa_flags = act->sa_flags | SA_RESTORER; ++ ++ kact.sa_restorer = &restore_rt; ++ } ++ ++ /* XXX The size argument hopefully will have to be changed to the ++ real size of the user-level sigset_t. */ ++ result = INLINE_SYSCALL (rt_sigaction, 4, ++ sig, act ? __ptrvalue (&kact) : NULL, ++ oact ? __ptrvalue (&koact) : NULL, _NSIG / 8); ++ if (oact && result >= 0) ++ { ++ oact->sa_handler = koact.k_sa_handler; ++ memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t)); ++ oact->sa_flags = koact.sa_flags; ++ oact->sa_restorer = koact.sa_restorer; ++ } ++ return result; ++} ++libc_hidden_def (__libc_sigaction) ++ ++#ifndef LIBC_SIGACTION ++weak_alias (__libc_sigaction, __sigaction) ++libc_hidden_weak (__sigaction) ++weak_alias (__libc_sigaction, sigaction) ++#endif ++ ++/* NOTE: Please think twice before making any changes to the bits of ++ code below. GDB needs some intimate knowledge about it to ++ recognize them as signal trampolines, and make backtraces through ++ signal handlers work right. Important are both the names ++ (__restore_rt) and the exact instruction sequence. ++ If you ever feel the need to make any changes, please notify the ++ appropriate GDB maintainer. */ ++ ++#define RESTORE(name, syscall) RESTORE2 (name, syscall) ++# define RESTORE2(name, syscall) \ ++asm \ ++ ( \ ++ "__" #name ":\n" \ ++ " ldi r7,#" #syscall "\n" \ ++ " trap #2 || nop\n" \ ++ ); ++/* The return code for realtime-signals. */ ++RESTORE (restore_rt, __NR_rt_sigreturn) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h +--- ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sigcontextinfo.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,26 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Philip Blundell , 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#define SIGCONTEXT struct sigcontext * ++#define SIGCONTEXT_EXTRA_ARGS ++#define GET_PC(ctx) ((void *)((ctx)->sc_bpc)) ++#define GET_FRAME(ctx) ((void *)((ctx)->sc_fp)) ++#define GET_STACK(ctx) ((void *)((ctx)->sc_spi)) ++#define CALL_SIGHANDLER(handler, signo, ctx) \ ++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/socket.S ports/sysdeps/unix/sysv/linux/m32r/socket.S +--- ports/sysdeps/unix/sysv/linux/m32r/socket.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/socket.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,155 @@ ++/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++ ++#define P(a, b) P2(a, b) ++#define P2(a, b) a##b ++ ++ .text ++/* The socket-oriented system calls are handled unusally in Linux. ++ They are all gated through the single `socketcall' system call number. ++ `socketcall' takes two arguments: the first is the subcode, specifying ++ which socket function is being called; and the second is a pointer to ++ the arguments to the specific function. ++ ++ The .S files for the other calls just #define socket and #include this. */ ++ ++#ifndef __socket ++#ifndef NO_WEAK_ALIAS ++#define __socket P(__,socket) ++#else ++#define __socket socket ++#endif ++#endif ++ ++#define PUSHARGS(x) PUSHARGS x ++ .macro PUSHARGS nargs ++ push r0 ++ .aif \nargs ge 2 ++ push r1 ++ .aif \nargs ge 3 ++ push r2 ++ .aif \nargs ge 4 ++ push r3 ++ /* If nargs is 5, caller has already pushed arg 5. */ ++ /* If nargs is 6, caller has already pushed arg 5, 6. */ ++ .aendi ++ .aendi ++ .aendi ++ .endm ++ ++#define PUSHARGS(x) PUSHARGS x ++ ++#define POPARGS_1 addi r15,#4 ++#define POPARGS_2 addi r15,#8 ++#define POPARGS_3 addi r15,#12 ++#define POPARGS_4 addi r15,#16 ++#define POPARGS_5 addi r15,#16 ++#define POPARGS_6 addi r15,#16 ++ ++#ifndef NARGS ++#define NARGS 3 /* If we were called with no wrapper, this is really socket() */ ++#endif ++ ++.globl __socket ++ENTRY (__socket) ++ /* This will not work in the case of a socket call being interrupted ++ by a signal. If the signal handler uses any stack the arguments ++ to socket will be trashed. The results of a restart of any ++ socket call are then unpredictable. */ ++ ++ /* Push args onto the stack. */ ++ /* PUSHARGS(NARGS) */ ++#if (NARGS >= 4) ++ push r3 ++ /* If nargs is 6, caller has already pushed arg 5, 6. */ ++ /* If nargs is 5, caller has already pushed arg 5. */ ++#endif ++#if (NARGS >= 3) ++ push r2 ++#endif ++#if (NARGS >= 2) ++ push r1 ++#endif ++ push r0 ++ ++#if defined NEED_CANCELLATION && defined CENABLE ++ SINGLE_THREAD_P ++ bnez r6, 2f ++#endif ++ ++ /* Do the system call trap. */ ++ ldi r0, #P(SOCKOP_,socket) ++ mv r1, r15 ++ ldi r7, #SYS_ify(socketcall) ++ SYSCALL_INST ++ ++ /* Pop args off the stack */ ++ P(POPARGS_,NARGS) ++ ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++1: ++ /* Successful; return the syscall's value. */ ++ ret ++ ++#if defined NEED_CANCELLATION && defined CENABLE ++ .fillinsn ++2: ++ SAVE_REGS ++ CENABLE ++ mv r8, r0 ++ ++ ldi r0, #P(SOCKOP_,socket) ++#if !defined PIC ++ add3 r1, r15, #8 ++#else ++ add3 r1, r15, #12 ++#endif ++ ldi r7, #SYS_ify(socketcall) ++ SYSCALL_INST ++ ++ push r0 ++ mv r0, r8 ++ CDISABLE ++ pop r0 ++ RESTORE_REGS ++ ++ P(POPARGS_,NARGS) ++ ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 3f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++3: ++ ret ++#endif ++ ++PSEUDO_END (__socket) ++ ++#ifndef NO_WEAK_ALIAS ++weak_alias (__socket, socket) ++#endif +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/cachectl.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,38 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SYS_CACHECTL_H ++#define _SYS_CACHECTL_H 1 ++ ++#include ++ ++/* ++ * Get the kernel definition for the op bits. ++ */ ++#include ++ ++__BEGIN_DECLS ++ ++#ifdef __USE_MISC ++extern int cacheflush (void *addr, __const int nbytes, __const int op) __THROW; ++#endif ++extern int _flush_cache (char *addr, __const int nbytes, __const int op) __THROW; ++ ++__END_DECLS ++ ++#endif /* sys/cachectl.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/io.h ports/sysdeps/unix/sysv/linux/m32r/sys/io.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/io.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/io.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,48 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_IO_H ++ ++#define _SYS_IO_H 1 ++#include ++ ++__BEGIN_DECLS ++ ++/* If TURN_ON is TRUE, request for permission to do direct i/o on the ++ port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O ++ permission off for that range. This call requires root privileges. */ ++extern int ioperm (unsigned long int __from, unsigned long int __num, ++ int __turn_on) __THROW; ++ ++/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero, ++ permission to access any I/O port is granted. This call requires ++ root privileges. */ ++extern int iopl (int __level) __THROW; ++ ++/* The functions that actually perform reads and writes. */ ++extern unsigned char inb (unsigned long int port) __THROW; ++extern unsigned short int inw (unsigned long int port) __THROW; ++extern unsigned long int inl (unsigned long int port) __THROW; ++ ++extern void outb (unsigned char value, unsigned long int port) __THROW; ++extern void outw (unsigned short value, unsigned long int port) __THROW; ++extern void outl (unsigned long value, unsigned long int port) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_IO_H */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/tas.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,13 @@ ++#ifndef _SYS_TAS_H ++ ++#define _SYS_TAS_H 1 ++ ++#include ++ ++__BEGIN_DECLS ++ ++extern int tas(int *) __THROW; ++ ++__END_DECLS ++ ++#endif /* _SYS_TAS_H */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/ucontext.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,111 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++/* Where is System V/SH ABI? */ ++ ++#ifndef _SYS_UCONTEXT_H ++#define _SYS_UCONTEXT_H 1 ++ ++#include ++#include ++ ++/* We need the signal context definitions even if they are not used ++ included in . */ ++#include ++ ++ ++typedef int greg_t; ++ ++/* Number of general registers. */ ++#define NFPREG 16 ++ ++/* Container for all general registers. */ ++typedef greg_t gregset_t[NFPREG]; ++ ++#if 0 ++#ifdef __USE_GNU ++/* Number of each register is the `gregset_t' array. */ ++enum ++{ ++ R0 = 0, ++#define R0 R0 ++ R1 = 1, ++#define R1 R1 ++ R2 = 2, ++#define R2 R2 ++ R3 = 3, ++#define R3 R3 ++ R4 = 4, ++#define R4 R4 ++ R5 = 5, ++#define R5 R5 ++ R6 = 6, ++#define R6 R6 ++ R7 = 7, ++#define R7 R7 ++ R8 = 8, ++#define R8 R8 ++ R9 = 9, ++#define R9 R9 ++ R10 = 10, ++#define R10 R10 ++ R11 = 11, ++#define R11 R11 ++ R12 = 12, ++#define R12 R12 ++ R13 = 13, ++#define R13 R13 ++ R14 = 14, ++#define R14 R14 ++ R15 = 15, ++#define R15 R15 ++}; ++#endif ++#endif /* 0 */ ++ ++typedef int freg_t; ++ ++/* Number of FPU registers. */ ++#define NFPREG 16 ++ ++/* Structure to describe FPU registers. */ ++typedef freg_t fpregset_t[NFPREG]; ++ ++/* Context to describe whole processor state. */ ++typedef struct ++ { ++ gregset_t gregs; ++ fpregset_t fpregs; ++ fpregset_t xfpregs; ++ unsigned int fpscr; ++ unsigned int fpul; ++ unsigned int macl; ++ unsigned int mach; ++ } mcontext_t; ++ ++/* Userlevel context. */ ++typedef struct ucontext ++ { ++ unsigned long int uc_flags; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ __sigset_t uc_sigmask; ++ } ucontext_t; ++ ++#endif /* sys/ucontext.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sys/user.h ports/sysdeps/unix/sysv/linux/m32r/sys/user.h +--- ports/sysdeps/unix/sysv/linux/m32r/sys/user.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sys/user.h 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,26 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _SYS_USER_H ++#define _SYS_USER_H 1 ++ ++#include ++ ++#include ++ ++#endif /* sys/user.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/syscall.S ports/sysdeps/unix/sysv/linux/m32r/syscall.S +--- ports/sysdeps/unix/sysv/linux/m32r/syscall.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/syscall.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++ENTRY (__syscall) ++ mv r7, r0 // syscall number ++ mv r0, r1 // p1 ++ mv r1, r2 // p2 ++ mv r2, r3 // p3 ++ ld r3, @(sp) // p4 ++ ld r4, @(4,sp) // p5 ++ ld r5, @(8,sp) // p6 ++ ld r6, @(12,sp) // p7 ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++ SYSCALL_ERROR_HANDLER ++ .fillinsn ++1: ++ ret ++PSEUDO_END (__syscall) ++ ++weak_alias (__syscall, syscall) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/syscalls.list ports/sysdeps/unix/sysv/linux/m32r/syscalls.list +--- ports/sysdeps/unix/sysv/linux/m32r/syscalls.list 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/syscalls.list 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,4 @@ ++# File name Caller Syscall name # args Strong name Weak names ++tas - tas i:p __tas tas ++cachectl - cachectl i:pii __cachectl cachectl ++cacheflush - cacheflush i:pii __cacheflush cacheflush +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sysdep.S ports/sysdeps/unix/sysv/linux/m32r/sysdep.S +--- ports/sysdeps/unix/sysv/linux/m32r/sysdep.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sysdep.S 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1,32 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++ ++/* The syscall stubs jump here when they detect an error. ++ The code for Linux is almost identical to the canonical Unix ++ code, except that the error number in R0 is negated. */ ++ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers R0. */ ++ ++ENTRY (__syscall_error) ++ neg r0, r0 ++ ++#define __syscall_error __syscall_error_1 ++#include "../../../m32r/sysdep.S" +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/sysdep.h ports/sysdeps/unix/sysv/linux/m32r/sysdep.h +--- ports/sysdeps/unix/sysv/linux/m32r/sysdep.h 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/sysdep.h 2006-03-02 12:29:40.000000000 +0900 +@@ -0,0 +1,294 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, ++ Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#ifndef _LINUX_M32R_SYSDEP_H ++#define _LINUX_M32R_SYSDEP_H 1 ++ ++/* There is some commonality. */ ++#include "../../../m32r/sysdep.h" ++ ++/* Defines RTLD_PRIVATE_ERRNO. */ ++#include ++ ++/* For Linux we can use the system call table in the header file ++ /usr/include/asm/unistd.h ++ of the kernel. But these symbols do not follow the SYS_* syntax ++ so we have to redefine the `SYS_ify' macro here. */ ++#undef SYS_ify ++#define SYS_ify(syscall_name) __NR_##syscall_name ++ ++#ifdef __ASSEMBLER__ ++ ++/* Linux uses a negative return value to indicate syscall errors, ++ unlike most Unices, which use the condition codes' carry flag. ++ ++ Since version 2.1 the return value of a system call might be ++ negative even if the call succeeded. E.g., the `lseek' system call ++ might return a large offset. Therefore we must not anymore test ++ for < 0, but test for a real error by making sure the value in R0 ++ is a real error number. Linus said he will make sure the no syscall ++ returns a value in -1 .. -4095 as a valid result so we can savely ++ test with -4095. */ ++ ++#define SYSCALL_INST trap #2 || nop ++#define SYSCALL_INST_0 trap #2 || nop ++#define SYSCALL_INST_1 trap #2 || nop ++#define SYSCALL_INST_2 trap #2 || nop ++#define SYSCALL_INST_3 trap #2 || nop ++#define SYSCALL_INST_4 trap #2 || nop ++#define SYSCALL_INST_5 \ ++ ld r4,@sp ! \ ++ trap #2 || nop ++#define SYSCALL_INST_STR_6 \ ++ ld r4,@sp ! \ ++ ld r5,@(4,sp) ! \ ++ trap #2 || nop ++#define SYSCALL_INST_STR_7 \ ++ ld r4,@sp ! \ ++ ld r5,@(4,sp) ! \ ++ ld r6,@(8,sp) ! \ ++ trap #2 || nop ++ ++#define DO_CALL( syscall_name, args ) \ ++ ldi r7,SYS_ify(syscall_name) ! \ ++ SYSCALL_INST_##args ++ ++#undef PSEUDO ++#define PSEUDO(name, syscall_name, args) \ ++ .text !\ ++ENTRY (name) !\ ++ DO_CALL (syscall_name, args) !\ ++ not r1,r0 !\ ++ srai r1,12 !\ ++ bnez r1,.Lpseudo_end !\ ++ SYSCALL_ERROR_HANDLER !\ ++ .fillinsn !\ ++ .Lpseudo_end: ++ ++#undef PSEUDO_END ++#define PSEUDO_END(name) \ ++ END (name) ++ ++#undef PSEUDO_NOERRNO ++#define PSEUDO_NOERRNO(name, syscall_name, args) \ ++ .text !\ ++ ENTRY (name) !\ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_NOERRNO ++#define PSEUDO_END_NOERRNO(name) \ ++ END (name) ++ ++#define ret_NOERRNO ret ++ ++#define PSEUDO_ERRVAL(name, syscall_name, args) \ ++ .text !\ ++ ENTRY (name) !\ ++ DO_CALL (syscall_name, args) ++ ++#undef PSEUDO_END_ERRVAL ++#define PSEUDO_END_ERRVAL(name) \ ++ END (name) ++ ++#define ret_ERRVAL ret ++ ++#ifndef __PIC__ ++# define SYSCALL_ERROR_HANDLER \ ++ LDIMM (r1, C_SYMBOL_NAME(__syscall_error)) !\ ++ jmp r1 !\ ++ ++#else ++# if RTLD_PRIVATE_ERRNO ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ mv r3,lr !\ ++ bl.s .+4 !\ ++ ld24 r2,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r2,lr !\ ++ mv lr,r3 !\ ++ ld24 r0,#C_SYMBOL_NAME(rtld_errno@GOT) !\ ++ add r2,r0 !\ ++ ld r2,@r2 !\ ++ st r1,@r2 !\ ++ ldi r0,#-1 !\ ++ ret ++ ++# elif defined _LIBC_REENTRANT ++ ++# if USE___THREAD ++# ifndef NOT_IN_libc ++# define SYSCALL_ERROR_ERRNO __libc_errno@GOT ++# else ++# define SYSCALL_ERROR_ERRNO errno@GOT ++# endif ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ mv r3,lr !\ ++ bl.s .+4 !\ ++ ld24 r2,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r2,lr !\ ++ mv lr,r3 !\ ++ ld24 r0,#C_SYMBOL_NAME(SYSCALL_ERROR_ERRNO) !\ ++ add r2,r0 !\ ++ ld r2,@r2 !\ ++ st r1,@r2 !\ ++ ldi r0,#-1 !\ ++ ret ++ ++# else ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ push r12 !\ ++ push lr !\ ++ push r1 !\ ++ bl.s .+4 !\ ++ ld24 r12,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r12,lr !\ ++ ld24 r1,#C_SYMBOL_NAME(__errno_location@GOT) !\ ++ add r1,r12 !\ ++ ld r1,@r1 !\ ++ jl r1 !\ ++ pop r1 !\ ++ st r1,@r0 !\ ++ pop lr !\ ++ pop r12 !\ ++ ldi r0,#-1 !\ ++ ret !\ ++ ++# endif ++ ++# else ++/* Store (-r0) into errno through the GOT. */ ++# define SYSCALL_ERROR_HANDLER \ ++ neg r1,r0 !\ ++ mv r3,lr !\ ++ bl.s .+4 !\ ++ ld24 r2,#_GLOBAL_OFFSET_TABLE_ !\ ++ add r2,lr !\ ++ mv lr,r3 !\ ++ ld24 r0,#C_SYMBOL_NAME(errno@GOT) !\ ++ add r2,r0 !\ ++ ld r2,@r2 !\ ++ st r1,@r2 !\ ++ ldi r0,#-1 !\ ++ ret ++ ++# endif /* _LIBC_REENTRANT */ ++#endif /* __PIC__ */ ++ ++#define ret_ERRVAL ret ++ ++#else /* not __ASSEMBLER__ */ ++ ++#undef DO_CALL ++ ++#define SYSCALL_INST_STR "trap #2 || nop\n\t" ++ ++#define ASMFMT_0 \ ++ , "0" (r0) ++#define ASMFMT_1 \ ++ , "0" (r0) ++#define ASMFMT_2 \ ++ , "0" (r0), "r" (r1) ++#define ASMFMT_3 \ ++ , "0" (r0), "r" (r1), "r" (r2) ++#define ASMFMT_4 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3) ++#define ASMFMT_5 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3), "r" (r4) ++#define ASMFMT_6 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3), "r" (r4), "r" (r5) ++#define ASMFMT_7 \ ++ , "0" (r0), "r" (r1), "r" (r2), "r" (r3), "r" (r4), "r" (r5), "r" (r6) ++ ++#define SUBSTITUTE_ARGS_0() \ ++ register long r0 asm ("r0") = 0 ++#define SUBSTITUTE_ARGS_1(arg1) \ ++ register long r0 asm ("r0") = (long)(arg1) ++#define SUBSTITUTE_ARGS_2(arg1, arg2) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2) ++#define SUBSTITUTE_ARGS_3(arg1, arg2, arg3) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3) ++#define SUBSTITUTE_ARGS_4(arg1, arg2, arg3, arg4) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4) ++#define SUBSTITUTE_ARGS_5(arg1, arg2, arg3, arg4, arg5) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4); \ ++ register long r4 asm ("r4") = (long)(arg5) ++#define SUBSTITUTE_ARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4); \ ++ register long r4 asm ("r4") = (long)(arg5); \ ++ register long r5 asm ("r5") = (long)(arg6) ++#define SUBSTITUTE_ARGS_7(arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ ++ register long r0 asm ("r0") = (long)(arg1); \ ++ register long r1 asm ("r1") = (long)(arg2); \ ++ register long r2 asm ("r2") = (long)(arg3); \ ++ register long r3 asm ("r3") = (long)(arg4); \ ++ register long r4 asm ("r4") = (long)(arg5); \ ++ register long r5 asm ("r5") = (long)(arg6); \ ++ register long r6 asm ("r6") = (long)(arg7) ++ ++#undef INLINE_SYSCALL ++#define INLINE_SYSCALL(name, nr, args...) \ ++ ({ \ ++ unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args); \ ++ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar, ), 0)) \ ++ { \ ++ __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, )); \ ++ resultvar = 0xffffffff; \ ++ } \ ++ (int) resultvar; }) ++ ++#undef INTERNAL_SYSCALL ++#define INTERNAL_SYSCALL(name, err, nr, args...) \ ++ ({ \ ++ register long r7 asm ("r7") = SYS_ify (name); \ ++ SUBSTITUTE_ARGS_##nr(args); \ ++ \ ++ asm volatile (SYSCALL_INST_STR "\n\t" \ ++ : "=r" (r0) \ ++ : "r" (r7) ASMFMT_##nr \ ++ : "memory"); \ ++ \ ++ (int) r0; }) ++ ++#undef INTERNAL_SYSCALL_DECL ++#define INTERNAL_SYSCALL_DECL(err) do { } while (0) ++ ++#undef INTERNAL_SYSCALL_ERROR_P ++#define INTERNAL_SYSCALL_ERROR_P(val, err) \ ++ ((unsigned int) (val) >= 0xfffff001u) ++ ++#undef INTERNAL_SYSCALL_ERRNO ++#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) ++ ++#endif /* __ASSEMBLER__ */ ++ ++#endif /* linux/m32r/sysdep.h */ +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/vfork.S ports/sysdeps/unix/sysv/linux/m32r/vfork.S +--- ports/sysdeps/unix/sysv/linux/m32r/vfork.S 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/vfork.S 2006-03-02 11:43:35.000000000 +0900 +@@ -0,0 +1,48 @@ ++/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++ You should have received a copy of the GNU Library General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#define _ERRNO_H 1 ++#include ++ ++/* Clone the calling process, but without copying the whole address space. ++ The calling process is suspended until the new process exits or is ++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, ++ and the process ID of the new process to the old process. */ ++ ++ENTRY (__vfork) ++ ++#ifdef __NR_vfork ++ ldi r7, #__NR_vfork ++ SYSCALL_INST ++ not r1, r0 ++ srai r1, #12 // r1=0 means r0 = -1 to -4095 ++ bnez r1, 1f // i.e. error in linux ++ ++#endif ++ ++ SYSCALL_ERROR_HANDLER ++ ++ .fillinsn ++1: ++ ret ++ ++PSEUDO_END (__vfork) ++libc_hidden_def(__vfork) ++ ++weak_alias (__vfork, vfork) +diff --exclude=CVS -upNr ports/sysdeps/unix/sysv/linux/m32r/xstat.c ports/sysdeps/unix/sysv/linux/m32r/xstat.c +--- ports/sysdeps/unix/sysv/linux/m32r/xstat.c 1970-01-01 09:00:00.000000000 +0900 ++++ ports/sysdeps/unix/sysv/linux/m32r/xstat.c 2005-10-31 17:17:34.000000000 +0900 +@@ -0,0 +1 @@ ++#include --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-hurdsig-fixes-2.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-hurdsig-fixes-2.diff @@ -0,0 +1,44 @@ +diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c +index 67037e8..44e067c 100644 +--- a/hurd/hurdsig.c ++++ b/hurd/hurdsig.c +@@ -859,9 +859,7 @@ post_signal (struct hurd_sigstate *ss, + } + + /* Handle receipt of a blocked signal, or any signal while stopped. */ +- if (act != ignore && /* Signals ignored now are forgotten now. */ +- __sigismember (&blocked, signo) || +- (signo != SIGKILL && _hurd_stopped)) ++ if (__sigismember (&blocked, signo) || (signo != SIGKILL && _hurd_stopped)) + { + mark_pending (); + act = ignore; +diff --git a/sysdeps/mach/hurd/fork.c b/sysdeps/mach/hurd/fork.c +index a4f3055..c74998d 100644 +--- a/sysdeps/mach/hurd/fork.c ++++ b/sysdeps/mach/hurd/fork.c +@@ -648,8 +648,10 @@ __fork (void) + err = __USEPORT (PROC, __proc_getpids (port, &_hurd_pid, &_hurd_ppid, + &_hurd_orphaned)); + +- /* Forking clears the trace flag. */ ++ /* Forking clears the trace flag and pending masks. */ + __sigemptyset (&_hurdsig_traced); ++ __sigemptyset (&_hurd_global_sigstate->pending); ++ __sigemptyset (&ss->pending); + + /* Run things that want to run in the child task to set up. */ + RUN_HOOK (_hurd_fork_child_hook, ()); +diff --git a/sysdeps/mach/hurd/spawni.c b/sysdeps/mach/hurd/spawni.c +index 373da8d..2442e6f 100644 +--- a/sysdeps/mach/hurd/spawni.c ++++ b/sysdeps/mach/hurd/spawni.c +@@ -241,7 +241,7 @@ __spawni (pid_t *pid, const char *file, + + _hurd_sigstate_lock (ss); + ints[INIT_SIGMASK] = ss->blocked; +- ints[INIT_SIGPENDING] = _hurd_sigstate_pending (ss); /* XXX really? */ ++ ints[INIT_SIGPENDING] = 0; + ints[INIT_SIGIGN] = 0; + /* Unless we were asked to reset all handlers to SIG_DFL, + pass down the set of signals that were set to SIG_IGN. */ --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-gscope.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-gscope.diff @@ -0,0 +1,61 @@ +Poor-man's global scope switch support: just busy-waits. +--- + elf/dl-support.c | 1 + + sysdeps/generic/ldsodefs.h | 1 + + sysdeps/mach/hurd/sysdep-cancel.h | 9 +++++++++ + sysdeps/mach/hurd/tls.h | 13 +++++++++++++ + 4 files changed, 24 insertions(+) + +--- a/elf/dl-support.c ++++ b/elf/dl-support.c +@@ -157,6 +157,7 @@ + /* Function in libpthread to wait for termination of lookups. */ + void (*_dl_wait_lookup_done) (void); + ++int volatile _dl_thread_gscope_count; + struct dl_scope_free_list *_dl_scope_free_list; + + #ifdef NEED_DL_SYSINFO +--- a/sysdeps/generic/ldsodefs.h ++++ b/sysdeps/generic/ldsodefs.h +@@ -515,6 +515,7 @@ + size_t count; + void *list[50]; + } *_dl_scope_free_list; ++ EXTERN volatile int _dl_thread_gscope_count; + #ifdef SHARED + }; + # define __rtld_global_attribute__ +--- a/sysdeps/mach/hurd/tls.h ++++ b/sysdeps/mach/hurd/tls.h +@@ -75,5 +75,18 @@ + + #endif /* HAVE_TLS_SUPPORT */ + ++#ifndef __ASSEMBLER__ ++#include ++#include ++/* Temporary poor-man's global scope switch support: just busy-waits */ ++#define THREAD_GSCOPE_SET_FLAG() \ ++ asm volatile ("lock incl %0":"=m"(GL(dl_thread_gscope_count))) ++#define THREAD_GSCOPE_RESET_FLAG() \ ++ asm volatile ("lock decl %0":"=m"(GL(dl_thread_gscope_count))) ++#define THREAD_GSCOPE_WAIT() \ ++ while (GL(dl_thread_gscope_count)) { \ ++ __swtch_pri (0); \ ++ } ++#endif + + #endif /* tls.h */ +--- /dev/null ++++ b/sysdeps/mach/hurd/sysdep-cancel.h +@@ -0,0 +1,9 @@ ++#include ++ ++/* Always multi-thread (since there's at least the sig handler), but no ++ handling enabled. */ ++#define SINGLE_THREAD_P (0) ++#define RTLD_SINGLE_THREAD_P (0) ++#define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */ ++#define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */ ++#define LIBC_CANCEL_HANDLED() /* Nothing. */ --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-libc_stack_end.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-libc_stack_end.diff @@ -0,0 +1,62 @@ +http://www.cygwin.com/ml/libc-alpha/2011-08/msg00124.html + +2011-08-24 Samuel Thibault + +* sysdeps/generic/ldsodefs.h [LIBC_STACK_END_NOT_RELRO] (__libc_stack_end): Do +not use attribute_relro. +* sysdeps/mach/hurd/dl-sysdep.h (LIBC_STACK_END_NOT_RELRO): Define. +* sysdeps/mach/hurd/i386/init-first.c (init): Update __libc_stack_end to +libthread-provided value. +* sysdeps/mach/hurd/dl-sysdep.c (__libc_stack_end): Do not use attribute_relro. + +--- + generic/ldsodefs.h | 6 +++++- + mach/hurd/dl-sysdep.c | 2 +- + mach/hurd/dl-sysdep.h | 3 ++- + mach/hurd/i386/init-first.c | 2 ++ + 4 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h +index d040590..cb24ca7 100644 +--- a/sysdeps/generic/ldsodefs.h ++++ b/sysdeps/generic/ldsodefs.h +@@ -723,7 +723,11 @@ rtld_hidden_proto (_dl_make_stack_executable) + might use the variable which results in copy relocations on some + platforms. But this does not matter, ld.so can always use the local + copy. */ +-extern void *__libc_stack_end attribute_relro; ++extern void *__libc_stack_end ++#ifndef LIBC_STACK_END_NOT_RELRO ++ attribute_relro ++#endif ++ ; + rtld_hidden_proto (__libc_stack_end) + + /* Parameters passed to the dynamic linker. */ +diff --git a/sysdeps/mach/hurd/dl-sysdep.h b/sysdeps/mach/hurd/dl-sysdep.h +index 4b21b77..8f1c728 100644 +--- a/sysdeps/mach/hurd/dl-sysdep.h ++++ b/sysdeps/mach/hurd/dl-sysdep.h +@@ -25,7 +25,8 @@ + #define RTLD_PRIVATE_ERRNO 0 + + #ifdef SHARED +-/* _dl_argv cannot be attribute_relro, because the stack-switching ++/* _dl_argv and __libc_stack_end cannot be attribute_relro, because the stack-switching + libc initializer for using cthreads might write into it. */ + # define DL_ARGV_NOT_RELRO 1 ++# define LIBC_STACK_END_NOT_RELRO 1 + #endif +diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c +index e79af1d..7b2ea12 100644 +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -227,6 +224,8 @@ init (int *_data) + + void switch_stacks (void); + ++ __libc_stack_end = newsp; ++ + /* Copy per-thread variables from that temporary + area onto the new cthread stack. */ + memcpy (__hurd_threadvar_location_from_sp (0, newsp), --- eglibc-2.13.orig/debian/patches/hurd-i386/local-msg-nosignal.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-msg-nosignal.diff @@ -0,0 +1,22 @@ +This is not a proper fix, but a workaround that is needed on HEAD. (Have +to check glibc-2_5-branch.) Reported on +. + +We need to keep this until a newer hurd package gets compiled with MSG_NOSIGNAL +support (>= 20080921). + +--- + resolv/res_send.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/resolv/res_send.c ++++ b/resolv/res_send.c +@@ -174,6 +174,8 @@ + TIMEVAL_TO_TIMESPEC (&now, res); + } + ++#undef MSG_NOSIGNAL ++#define MSG_NOSIGNAL 0 + + /* Options. Leave them on. */ + /* #undef DEBUG */ --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-pthread_posix-option.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-pthread_posix-option.diff @@ -0,0 +1,172 @@ +Even if glibc doesn't have an integrated pthread library, it depends on the hurd +packages which have a pthread library, so we should provide all the defines etc. + +Avoid letting glibc try to install its own headers for libpthread. + +--- + sysdeps/mach/hurd/Makeconfig | 14 ++++++++++++ + sysdeps/mach/hurd/bits/posix_opt.h | 40 +++++++++++++++++++++++----------- + sysdeps/mach/hurd/gai_misc.h | 43 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 84 insertions(+), 13 deletions(-) + +--- a/sysdeps/mach/hurd/bits/posix_opt.h ++++ b/sysdeps/mach/hurd/bits/posix_opt.h +@@ -72,24 +72,38 @@ + /* XPG4.2 shared memory is supported. */ + #define _XOPEN_SHM 1 + +-/* We do not have the POSIX threads interface. */ +-#define _POSIX_THREADS -1 ++/* Tell we have POSIX threads. */ ++#define _POSIX_THREADS 200112L + + /* We have the reentrant functions described in POSIX. */ + #define _POSIX_REENTRANT_FUNCTIONS 1 + #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L + +-/* These are all things that won't be supported when _POSIX_THREADS is not. */ ++/* We do not provide priority scheduling for threads. */ + #define _POSIX_THREAD_PRIORITY_SCHEDULING -1 +-#define _POSIX_THREAD_ATTR_STACKSIZE -1 +-#define _POSIX_THREAD_ATTR_STACKADDR -1 ++ ++/* We support user-defined stack sizes. */ ++#define _POSIX_THREAD_ATTR_STACKSIZE 200112L ++ ++/* We support user-defined stacks. */ ++#define _POSIX_THREAD_ATTR_STACKADDR 200112L ++ ++/* We do not support priority inheritence. */ + #define _POSIX_THREAD_PRIO_INHERIT -1 ++ ++/* We do not support priority protection. */ + #define _POSIX_THREAD_PRIO_PROTECT -1 ++ + #ifdef __USE_XOPEN2K8 ++/* We do not support priority inheritence for robust mutexes. */ + # define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1 ++ ++/* We do not support priority protection for robust mutexes. */ + # define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1 + #endif +-#define _POSIX_SEMAPHORES -1 ++ ++/* We support POSIX.1b semaphores. */ ++#define _POSIX_SEMAPHORES 200112L + + /* Real-time signals are not yet supported. */ + #define _POSIX_REALTIME_SIGNALS -1 +@@ -122,17 +136,17 @@ + /* GNU libc provides regular expression handling. */ + #define _POSIX_REGEXP 1 + +-/* Reader/Writer locks are not available. */ +-#define _POSIX_READER_WRITER_LOCKS -1 ++/* Reader/Writer locks are available. */ ++#define _POSIX_READER_WRITER_LOCKS 200112L + + /* We have a POSIX shell. */ + #define _POSIX_SHELL 1 + +-/* We cannot support the Timeouts option without _POSIX_THREADS. */ +-#define _POSIX_TIMEOUTS -1 ++/* We support the Timeouts option. */ ++#define _POSIX_TIMEOUTS 200112L + +-/* We do not support spinlocks. */ +-#define _POSIX_SPIN_LOCKS -1 ++/* We support spinlocks. */ ++#define _POSIX_SPIN_LOCKS 200112L + + /* The `spawn' function family is supported. */ + #define _POSIX_SPAWN 200809L +@@ -141,7 +155,7 @@ + #define _POSIX_TIMERS 0 + + /* The barrier functions are not available. */ +-#define _POSIX_BARRIERS -1 ++#define _POSIX_BARRIERS 200112L + + /* POSIX message queues could be available in future. */ + #define _POSIX_MESSAGE_PASSING 0 +--- a/sysdeps/mach/hurd/Makeconfig ++++ b/sysdeps/mach/hurd/Makeconfig +@@ -2,3 +2,17 @@ + # See Makefile in this directory for the rule that builds this. + # We must define this variable earlier than sysdeps Makefiles are included. + static-start-installed-name = crt0.o ++ ++have-thread-library = yes ++shared-thread-library = /lib/libpthread.so ++static-thread-library = /lib/libpthread.a ++bounded-thread-library = $(static-thread-library) ++ ++$(shared-thread-library): ++ true ++$(static-thread-library): ++ true ++$(inst_includedir)/pthread.h: ++ true ++ +++force = +diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile +index 482b6ba..0e5bc08 100644 +--- a/sysdeps/mach/hurd/Makefile ++++ b/sysdeps/mach/hurd/Makefile +@@ -212,6 +212,10 @@ shared-only-routines += unwind-resume + CFLAGS-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables + endif + ++ifeq ($(subdir),posix) ++CFLAGS-confstr.c += -DLIBPTHREAD_VERSION='"libpthread 0.3"' ++endif ++ + ifeq ($(subdir),rt) + librt-sysdep_routines += rt-unwind-resume + librt-shared-only-routines += rt-unwind-resume +--- /dev/null ++++ b/sysdeps/mach/hurd/gai_misc.h +@@ -0,0 +1,43 @@ ++#include ++ ++#define gai_start_notify_thread __gai_start_notify_thread ++#define gai_create_helper_thread __gai_create_helper_thread ++ ++extern inline void ++__gai_start_notify_thread (void) ++{ ++ sigset_t ss; ++ sigemptyset (&ss); ++ sigprocmask(SIG_SETMASK, &ss, NULL); ++} ++ ++extern inline int ++__gai_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), ++ void *arg) ++{ ++ pthread_attr_t attr; ++ ++ /* Make sure the thread is created detached. */ ++ pthread_attr_init (&attr); ++ pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); ++ ++ /* The helper thread needs only very little resources. */ ++ (void) pthread_attr_setstacksize (&attr, 0x10000); ++ ++ /* Block all signals in the helper thread. To do this thoroughly we ++ temporarily have to block all signals here. */ ++ sigset_t ss; ++ sigset_t oss; ++ sigfillset (&ss); ++ sigprocmask(SIG_SETMASK, &ss, &oss); ++ ++ int ret = pthread_create (threadp, &attr, tf, arg); ++ ++ /* Restore the signal mask. */ ++ sigprocmask(SIG_SETMASK, &oss, NULL); ++ ++ (void) pthread_attr_destroy (&attr); ++ return ret; ++} ++ ++#include_next --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-sendmsg-SCM_RIGHTS.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-sendmsg-SCM_RIGHTS.diff @@ -0,0 +1,272 @@ +From 1b911148009f696717da0b676d6d10af85d5aefb Mon Sep 17 00:00:00 2001 +From: Emilio Pozuelo Monfort +Date: Sat, 17 Jul 2010 22:09:13 +0200 +Subject: [PATCH] Add support to send file descriptors over Unix sockets + +--- + sysdeps/mach/hurd/recvmsg.c | 108 ++++++++++++++++++++++++++++++++++++++++++-- + sysdeps/mach/hurd/sendmsg.c | 73 ++++++++++++++++++++++++----- + 2 files changed, 166 insertions(+), 15 deletions(-) + +--- a/sysdeps/mach/hurd/recvmsg.c ++++ b/sysdeps/mach/hurd/recvmsg.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++/* Copyright (C) 2001, 2002, 2010 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -33,13 +33,33 @@ + addr_port_t aport; + char *data = NULL; + mach_msg_type_number_t len = 0; +- mach_port_t *ports; ++ mach_port_t *ports, *newports; + mach_msg_type_number_t nports = 0; ++ struct cmsghdr *cmsg; + char *cdata = NULL; + mach_msg_type_number_t clen = 0; + size_t amount; + char *buf; +- int i; ++ int nfds, *fds; ++ int i, j; ++ ++ error_t reauthenticate (mach_port_t port, mach_port_t *result) ++ { ++ error_t err; ++ mach_port_t ref; ++ ref = __mach_reply_port (); ++ do ++ err = __io_reauthenticate (port, ref, MACH_MSG_TYPE_MAKE_SEND); ++ while (err == EINTR); ++ if (!err) ++ do ++ err = __USEPORT (AUTH, __auth_user_authenticate (port, ++ ref, MACH_MSG_TYPE_MAKE_SEND, ++ result)); ++ while (err == EINTR); ++ __mach_port_destroy (__mach_task_self (), ref); ++ return err; ++ } + + /* Find the total number of bytes to be read. */ + amount = 0; +@@ -136,6 +156,85 @@ + message->msg_controllen = clen; + memcpy (message->msg_control, cdata, message->msg_controllen); + ++ /* SCM_RIGHTS ports. */ ++ if (nports > 0) ++ { ++ newports = __alloca (nports * sizeof (mach_port_t)); ++ ++ /* Reauthenticate all ports here. */ ++ for (i = 0; i < nports; i++) ++ { ++ err = reauthenticate (ports[i], &newports[i]); ++ __mach_port_deallocate (__mach_task_self (), ports[i]); ++ if (err) ++ { ++ for (j = 0; j < i; j++) ++ __mach_port_deallocate (__mach_task_self (), newports[j]); ++ for (j = i+1; j < nports; j++) ++ __mach_port_deallocate (__mach_task_self (), ports[j]); ++ ++ __vm_deallocate (__mach_task_self (), (vm_address_t) cdata, clen); ++ __hurd_fail (err); ++ } ++ } ++ ++ j = 0; ++ for (cmsg = CMSG_FIRSTHDR (message); ++ cmsg; ++ cmsg = CMSG_NXTHDR (message, cmsg)) ++ { ++ if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) ++ { ++ fds = (int *) CMSG_DATA (cmsg); ++ nfds = (cmsg->cmsg_len - CMSG_ALIGN (sizeof (struct cmsghdr))) ++ / sizeof (int); ++ ++ for (i = 0; i < nfds && j < nports; i++) ++ { ++ /* The fd's flags are passed in the control data. */ ++ fds[i] = _hurd_intern_fd (newports[j++], fds[i], 0); ++ if (fds[i] == -1) ++ { ++ err = errno; ++ goto cleanup; ++ } ++ } ++ } ++ } ++ ++ if (j != nports) ++ err = EGRATUITOUS; ++ ++ if (err) ++ cleanup: ++ { ++ /* Clean up all the file descriptors. */ ++ nports = j; ++ j = 0; ++ for (cmsg = CMSG_FIRSTHDR (message); ++ cmsg; ++ cmsg = CMSG_NXTHDR (message, cmsg)) ++ { ++ if (cmsg->cmsg_level == SOL_SOCKET ++ && cmsg->cmsg_type == SCM_RIGHTS) ++ { ++ fds = (int *) CMSG_DATA (cmsg); ++ nfds = (cmsg->cmsg_len ++ - CMSG_ALIGN (sizeof (struct cmsghdr))) ++ / sizeof (int); ++ for (i = 0; i < nfds && j < nports; i++, j++) ++ _hurd_fd_close (_hurd_fd_get (fds[i])); ++ } ++ } ++ ++ for (; j < nports; j++) ++ __mach_port_deallocate (__mach_task_self (), newports[j]); ++ ++ __vm_deallocate (__mach_task_self (), (vm_address_t) cdata, clen); ++ __hurd_fail (err); ++ } ++ } ++ + __vm_deallocate (__mach_task_self (), (vm_address_t) cdata, clen); + + return (buf - data); +--- a/sysdeps/mach/hurd/sendmsg.c ++++ b/sysdeps/mach/hurd/sendmsg.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2001,2002,2004 Free Software Foundation, Inc. ++/* Copyright (C) 2001,2002,2004,2010 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -32,6 +32,10 @@ + __libc_sendmsg (int fd, const struct msghdr *message, int flags) + { + error_t err = 0; ++ struct cmsghdr *cmsg; ++ mach_port_t *ports = NULL; ++ mach_msg_type_number_t nports = 0; ++ int *fds, nfds; + struct sockaddr_un *addr = message->msg_name; + socklen_t addr_len = message->msg_namelen; + addr_port_t aport = MACH_PORT_NULL; +@@ -44,6 +48,7 @@ + mach_msg_type_number_t len; + mach_msg_type_number_t amount; + int dealloc = 0; ++ int socketrpc = 0; + int i; + + /* Find the total number of bytes to be written. */ +@@ -101,6 +106,46 @@ + } + } + ++ /* SCM_RIGHTS support: get the number of fds to send. */ ++ cmsg = CMSG_FIRSTHDR (message); ++ for (; cmsg; cmsg = CMSG_NXTHDR (message, cmsg)) ++ if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) ++ nports += (cmsg->cmsg_len - CMSG_ALIGN (sizeof (struct cmsghdr))) ++ / sizeof (int); ++ ++ if (nports) ++ ports = __alloca (nports * sizeof (mach_port_t)); ++ ++ nports = 0; ++ for (cmsg = CMSG_FIRSTHDR (message); ++ cmsg; ++ cmsg = CMSG_NXTHDR (message, cmsg)) ++ { ++ if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) ++ { ++ fds = (int *) CMSG_DATA (cmsg); ++ nfds = (cmsg->cmsg_len - CMSG_ALIGN (sizeof (struct cmsghdr))) ++ / sizeof (int); ++ ++ for (i = 0; i < nfds; i++) ++ { ++ err = HURD_DPORT_USE ++ (fds[i], ++ ({ ++ err = __io_restrict_auth (port, &ports[nports], ++ 0, 0, 0, 0); ++ if (! err) ++ nports++; ++ /* We pass the flags in the control data. */ ++ fds[i] = descriptor->flags; ++ })); ++ ++ if (err) ++ goto out; ++ } ++ } ++ } ++ + if (addr) + { + if (addr->sun_family == AF_LOCAL) +@@ -110,9 +155,8 @@ + file_t file = __file_name_lookup (addr->sun_path, 0, 0); + if (file == MACH_PORT_NULL) + { +- if (dealloc) +- __vm_deallocate (__mach_task_self (), data.addr, len); +- return -1; ++ err = errno; ++ goto out; + } + err = __ifsock_getsockaddr (file, &aport); + __mach_port_deallocate (__mach_task_self (), file); +@@ -120,11 +164,7 @@ + /* The file did not grok the ifsock protocol. */ + err = ENOTSOCK; + if (err) +- { +- if (dealloc) +- __vm_deallocate (__mach_task_self (), data.addr, len); +- return __hurd_fail (err); +- } ++ goto out; + } + else + err = EIEIO; +@@ -143,8 +183,9 @@ + /* Send the data. */ + err = __socket_send (port, aport, + flags, data.ptr, len, +- NULL, +- MACH_MSG_TYPE_COPY_SEND, 0, ++ ports, ++ MACH_MSG_TYPE_COPY_SEND, ++ nports, + message->msg_control, + message->msg_controllen, + &amount); +@@ -153,11 +194,19 @@ + } + err; + })); ++ socketrpc = 1; ++ ++ out: ++ for (i = 0; i < nports; i++) ++ __mach_port_deallocate (__mach_task_self (), ports[i]); + + if (dealloc) + __vm_deallocate (__mach_task_self (), data.addr, len); + +- return err ? __hurd_sockfail (fd, flags, err) : amount; ++ if (socketrpc) ++ return err ? __hurd_sockfail (fd, flags, err) : amount; ++ else ++ return __hurd_fail (err); + } + + weak_alias (__libc_sendmsg, sendmsg) --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-libc_once.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-libc_once.diff @@ -0,0 +1,78 @@ +2007-10-28 Aurelien Jarno + + * bits/libc-lock.h (__libc_once_get): New definiton. + * linuxthreads/sysdeps/pthread/bits/libc-lock.h: Likewise + * nptl/sysdeps/pthread/bits/libc-lock.h: Likewise. + * sysdeps/mach/bits/libc-lock.h: Likewise. + * sysdeps/mach/hurd/bits/libc-lock.h: Likewise. + * sysdeps/posix/getaddrinfo.c (getaddrinfo): Use __libc_once_get + instead of using implementational details. + +--- + bits/libc-lock.h | 3 +++ + linuxthreads/sysdeps/pthread/bits/libc-lock.h | 3 +++ + nptl/sysdeps/pthread/bits/libc-lock.h | 3 +++ + sysdeps/mach/hurd/bits/libc-lock.h | 4 ++++ + sysdeps/posix/getaddrinfo.c | 2 +- + 5 files changed, 14 insertions(+), 1 deletion(-) + +--- a/bits/libc-lock.h ++++ b/bits/libc-lock.h +@@ -98,6 +98,9 @@ + } \ + } while (0) + ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ ((ONCE_CONTROL) == 1) + + /* Start a critical region with a cleanup function */ + #define __libc_cleanup_region_start(DOIT, FCT, ARG) \ +--- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h ++++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h +@@ -242,6 +242,9 @@ + } \ + } while (0) + ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ ((ONCE_CONTROL) != PTHREAD_ONCE_INIT) + + /* Start critical region with cleanup. */ + #define __libc_cleanup_region_start(DOIT, FCT, ARG) \ +--- a/nptl/sysdeps/pthread/bits/libc-lock.h ++++ b/nptl/sysdeps/pthread/bits/libc-lock.h +@@ -451,6 +451,9 @@ + } \ + } while (0) + ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ ((ONCE_CONTROL) != PTHREAD_ONCE_INIT) + + /* Note that for I/O cleanup handling we are using the old-style + cancel handling. It does not have to be integrated with C++ snce +--- a/sysdeps/mach/hurd/bits/libc-lock.h ++++ b/sysdeps/mach/hurd/bits/libc-lock.h +@@ -191,6 +191,10 @@ + __libc_lock_unlock (ONCE_CONTROL.lock); \ + } while (0) + ++/* Get once control variable. */ ++#define __libc_once_get(ONCE_CONTROL) \ ++ (!ONCE_CONTROL.done) ++ + #ifdef _LIBC + /* We need portable names for some functions. E.g., when they are + used as argument to __libc_cleanup_region_start. */ +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -2338,7 +2338,7 @@ + __libc_lock_define_initialized (static, lock); + + __libc_lock_lock (lock); +- if (old_once && gaiconf_reload_flag) ++ if (__libc_once_get(old_once) && gaiconf_reload_flag) + gaiconf_reload (); + qsort_r (order, nresults, sizeof (order[0]), rfc3484_sort, &src); + __libc_lock_unlock (lock); --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-mkdir_root.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-mkdir_root.diff @@ -0,0 +1,55 @@ +Fix mkdir / error value (needed for busybox's mkdir -p) + +In the / case, directory_name_split can't really split that into an +absolute ROOT file_t and ".", since name is supposed to be a pointer in +file_name... Changing the interface is being proposed. + +--- + sysdeps/mach/hurd/mkdir.c | 6 +++++- + sysdeps/mach/hurd/mkdirat.c | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +--- a/sysdeps/mach/hurd/mkdir.c ++++ b/sysdeps/mach/hurd/mkdir.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + /* Create a directory named FILE_NAME with protections MODE. */ + int +@@ -29,7 +30,10 @@ + { + error_t err; + const char *name; +- file_t parent = __directory_name_split (file_name, (char **) &name); ++ file_t parent; ++ if (!strcmp(file_name, "/")) ++ return EEXIST; ++ parent = __directory_name_split (file_name, (char **) &name); + if (parent == MACH_PORT_NULL) + return -1; + err = __dir_mkdir (parent, name, mode & ~_hurd_umask); +--- a/sysdeps/mach/hurd/mkdirat.c ++++ b/sysdeps/mach/hurd/mkdirat.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + int + mkdirat (fd, path, mode) +@@ -32,7 +33,10 @@ + { + error_t err; + const char *name; +- file_t parent = __directory_name_split_at (fd, path, (char **) &name); ++ file_t parent; ++ if (!strcmp(path, "/")) ++ return EEXIST; ++ parent = __directory_name_split_at (fd, path, (char **) &name); + if (parent == MACH_PORT_NULL) + return -1; + err = __dir_mkdir (parent, name, mode & ~_hurd_umask); --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-DEV_BSIZE.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-DEV_BSIZE.diff @@ -0,0 +1,21 @@ +http://www.cygwin.com/ml/libc-alpha/2011-09/msg00028.html + +2011-09-06 Samuel Thibault + +* sysdeps/mach/hurd/sys/param.h (DEV_BSIZE): Define macro. + +diff --git a/sysdeps/mach/hurd/sys/param.h b/sysdeps/mach/hurd/sys/param.h +index 699ba35..29cb1e3 100644 +--- a/sysdeps/mach/hurd/sys/param.h ++++ b/sysdeps/mach/hurd/sys/param.h +@@ -119,6 +119,10 @@ + #define MAX(a,b) (((a)>(b))?(a):(b)) + + ++/* Unit of `st_blocks'. */ ++#define DEV_BSIZE 512 ++ ++ + /* Scale factor for scaled integers used to count %cpu time and load avgs. + + The number of CPU `tick's that map to a unique `%age' can be expressed --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-hurdsig-SA_SIGINFO.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-hurdsig-SA_SIGINFO.diff @@ -0,0 +1,527 @@ +diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h +index 1c4733a..cc96f21 100644 +--- a/hurd/hurd/signal.h ++++ b/hurd/hurd/signal.h +@@ -264,6 +264,11 @@ extern void _hurd_raise_signal (struct hurd_sigstate *ss, int signo, + extern void _hurd_exception2signal (struct hurd_signal_detail *detail, + int *signo); + ++/* Translate a Mach exception into a signal with a legacy sigcode. */ ++ ++extern void _hurd_exception2signal_legacy (struct hurd_signal_detail *detail, ++ int *signo); ++ + + /* Make the thread described by SS take the signal described by SIGNO and + DETAIL. If the process is traced, this will in fact stop with a SIGNO +diff --git a/hurd/hurdinit.c b/hurd/hurdinit.c +index 259f8a3..97d3460 100644 +--- a/hurd/hurdinit.c ++++ b/hurd/hurdinit.c +@@ -176,7 +176,7 @@ _hurd_new_proc_init (char **argv, + /* This process is "traced", meaning it should stop on signals or exec. + We are all set up now to handle signals. Stop ourselves, to inform + our parent (presumably a debugger) that the exec has completed. */ +- __msg_sig_post (_hurd_msgport, SIGTRAP, 0, __mach_task_self ()); ++ __msg_sig_post (_hurd_msgport, SIGTRAP, TRAP_TRACE, __mach_task_self ()); + } + + #include +diff --git a/sysdeps/mach/hurd/bits/sigaction.h b/sysdeps/mach/hurd/bits/sigaction.h +new file mode 100644 +index 0000000..4528b38 +--- /dev/null ++++ b/sysdeps/mach/hurd/bits/sigaction.h +@@ -0,0 +1,79 @@ ++/* Copyright (C) 1991,92,96,97,98,2001 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SIGNAL_H ++# error "Never include directly; use instead." ++#endif ++ ++/* These definitions match those used by the 4.4 BSD kernel. ++ If the operating system has a `sigaction' system call that correctly ++ implements the POSIX.1 behavior, there should be a system-dependent ++ version of this file that defines `struct sigaction' and the `SA_*' ++ constants appropriately. */ ++ ++/* Structure describing the action to be taken when a signal arrives. */ ++struct sigaction ++ { ++ /* Signal handler. */ ++#ifdef __USE_POSIX199309 ++ union ++ { ++ /* Used if SA_SIGINFO is not set. */ ++ __sighandler_t sa_handler; ++ /* Used if SA_SIGINFO is set. */ ++ void (*sa_sigaction) (int, siginfo_t *, void *); ++ } ++ __sigaction_handler; ++# define sa_handler __sigaction_handler.sa_handler ++# define sa_sigaction __sigaction_handler.sa_sigaction ++#else ++ __sighandler_t sa_handler; ++#endif ++ ++ /* Additional set of signals to be blocked. */ ++ __sigset_t sa_mask; ++ ++ /* Special flags. */ ++ int sa_flags; ++ }; ++ ++/* Bits in `sa_flags'. */ ++#if defined __USE_UNIX98 || defined __USE_MISC ++# define SA_ONSTACK 0x0001 /* Take signal on signal stack. */ ++# define SA_RESTART 0x0002 /* Restart syscall on signal return. */ ++# define SA_NODEFER 0x0010 /* Don't automatically block the signal when ++ its handler is being executed. */ ++# define SA_RESETHAND 0x0004 /* Reset to SIG_DFL on entry to handler. */ ++# define SA_SIGINFO 0x0040 /* Signal handler with SA_SIGINFO args */ ++#endif ++#define SA_NOCLDSTOP 0x0008 /* Don't send SIGCHLD when children stop. */ ++ ++#ifdef __USE_MISC ++# define SA_INTERRUPT 0 /* Historical no-op ("not SA_RESTART"). */ ++ ++/* Some aliases for the SA_ constants. */ ++# define SA_NOMASK SA_NODEFER ++# define SA_ONESHOT SA_RESETHAND ++# define SA_STACK SA_ONSTACK ++#endif ++ ++ ++/* Values for the HOW argument to `sigprocmask'. */ ++#define SIG_BLOCK 1 /* Block signals. */ ++#define SIG_UNBLOCK 2 /* Unblock signals. */ ++#define SIG_SETMASK 3 /* Set the set of blocked signals. */ +diff --git a/sysdeps/mach/hurd/i386/bits/sigcontext.h b/sysdeps/mach/hurd/i386/bits/sigcontext.h +index a78dd2f..1956d41 100644 +--- a/sysdeps/mach/hurd/i386/bits/sigcontext.h ++++ b/sysdeps/mach/hurd/i386/bits/sigcontext.h +@@ -96,6 +96,10 @@ struct sigcontext + #define sc_ps sc_efl + + ++/* The deprecated sigcode values below are passed as an extra, non-portable ++ argument to regular signal handlers. You should use SA_SIGINFO handlers ++ instead, which use the standard POSIX signal codes. */ ++ + /* Codes for SIGFPE. */ + #define FPE_INTOVF_TRAP 0x1 /* integer overflow */ + #define FPE_INTDIV_FAULT 0x2 /* integer divide by zero */ +diff --git a/sysdeps/mach/hurd/i386/exc2signal.c b/sysdeps/mach/hurd/i386/exc2signal.c +index a6bf750..7ffeb5f 100644 +--- a/sysdeps/mach/hurd/i386/exc2signal.c ++++ b/sysdeps/mach/hurd/i386/exc2signal.c +@@ -24,8 +24,8 @@ + /* Translate the Mach exception codes, as received in an `exception_raise' RPC, + into a signal number and signal subcode. */ + +-void +-_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) ++static void ++exception2signal (struct hurd_signal_detail *detail, int *signo, int posix) + { + detail->error = 0; + +@@ -37,44 +37,62 @@ _hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) + break; + + case EXC_BAD_ACCESS: +- if (detail->exc_code == KERN_INVALID_ADDRESS +- || detail->exc_code == KERN_PROTECTION_FAILURE +- || detail->exc_code == KERN_WRITE_PROTECTION_FAILURE) +- *signo = SIGSEGV; +- else +- *signo = SIGBUS; +- detail->code = detail->exc_subcode; ++ switch (detail->exc_code) ++ { ++ case KERN_INVALID_ADDRESS: ++ case KERN_MEMORY_FAILURE: ++ *signo = SIGSEGV; ++ detail->code = posix ? SEGV_MAPERR : detail->exc_subcode; ++ break; ++ ++ case KERN_PROTECTION_FAILURE: ++ case KERN_WRITE_PROTECTION_FAILURE: ++ *signo = SIGSEGV; ++ detail->code = posix ? SEGV_ACCERR : detail->exc_subcode; ++ break; ++ ++ default: ++ *signo = SIGBUS; ++ detail->code = 0; ++ break; ++ } + detail->error = detail->exc_code; + break; + + case EXC_BAD_INSTRUCTION: + *signo = SIGILL; +- if (detail->exc_code == EXC_I386_INVOP) +- detail->code = ILL_INVOPR_FAULT; +- else if (detail->exc_code == EXC_I386_STKFLT) +- detail->code = ILL_STACK_FAULT; +- else +- detail->code = 0; ++ switch (detail->exc_code) ++ { ++ case EXC_I386_INVOP: ++ detail->code = posix ? ILL_ILLOPC : ILL_INVOPR_FAULT; ++ break; ++ ++ case EXC_I386_STKFLT: ++ detail->code = posix ? ILL_BADSTK : ILL_STACK_FAULT; ++ break; ++ ++ default: ++ detail->code = 0; ++ break; ++ } + break; + + case EXC_ARITHMETIC: ++ *signo = SIGFPE; + switch (detail->exc_code) + { + case EXC_I386_DIV: /* integer divide by zero */ +- *signo = SIGFPE; +- detail->code = FPE_INTDIV_FAULT; ++ detail->code = posix ? FPE_INTDIV : FPE_INTDIV_FAULT; + break; + + case EXC_I386_INTO: /* integer overflow */ +- *signo = SIGFPE; +- detail->code = FPE_INTOVF_TRAP; ++ detail->code = posix ? FPE_INTOVF : FPE_INTOVF_TRAP; + break; + + /* These aren't anywhere documented or used in Mach 3.0. */ + case EXC_I386_NOEXT: + case EXC_I386_EXTOVR: + default: +- *signo = SIGFPE; + detail->code = 0; + break; + +@@ -83,51 +101,43 @@ _hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) + Give an error code corresponding to the first bit set. */ + if (detail->exc_subcode & FPS_IE) + { +- *signo = SIGILL; +- detail->code = ILL_FPEOPR_FAULT; ++ /* NB: We used to send SIGILL here but we can't distinguish ++ POSIX vs. legacy with respect to what signal we send. */ ++ detail->code = posix ? FPE_FLTINV : 0 /*ILL_FPEOPR_FAULT*/; + } + else if (detail->exc_subcode & FPS_DE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTDNR_FAULT; ++ detail->code = posix ? FPE_FLTUND : FPE_FLTDNR_FAULT; + } + else if (detail->exc_subcode & FPS_ZE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTDIV_FAULT; ++ detail->code = posix ? FPE_FLTDIV : FPE_FLTDIV_FAULT; + } + else if (detail->exc_subcode & FPS_OE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTOVF_FAULT; ++ detail->code = posix ? FPE_FLTOVF : FPE_FLTOVF_FAULT; + } + else if (detail->exc_subcode & FPS_UE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTUND_FAULT; ++ detail->code = posix ? FPE_FLTUND : FPE_FLTUND_FAULT; + } + else if (detail->exc_subcode & FPS_PE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTINX_FAULT; ++ detail->code = posix ? FPE_FLTRES : FPE_FLTINX_FAULT; + } + else + { +- *signo = SIGFPE; + detail->code = 0; + } + break; + + /* These two can only be arithmetic exceptions if we +- are in V86 mode, which sounds like emulation to me. +- (See Mach 3.0 i386/trap.c.) */ ++ are in V86 mode. (See Mach 3.0 i386/trap.c.) */ + case EXC_I386_EMERR: +- *signo = SIGFPE; +- detail->code = FPE_EMERR_FAULT; ++ detail->code = posix ? 0 : FPE_EMERR_FAULT; + break; + case EXC_I386_BOUND: +- *signo = SIGFPE; +- detail->code = FPE_EMBND_FAULT; ++ detail->code = posix ? FPE_FLTSUB : FPE_EMBND_FAULT; + break; + } + break; +@@ -144,7 +154,7 @@ _hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) + if (detail->exc_code == EXC_I386_BOUND) + { + *signo = SIGFPE; +- detail->code = FPE_SUBRNG_FAULT; ++ detail->code = posix ? FPE_FLTSUB : FPE_SUBRNG_FAULT; + } + else + { +@@ -155,12 +165,33 @@ _hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) + + case EXC_BREAKPOINT: + *signo = SIGTRAP; +- if (detail->exc_code == EXC_I386_SGL) +- detail->code = DBG_SINGLE_TRAP; +- else if (detail->exc_code == EXC_I386_BPT) +- detail->code = DBG_BRKPNT_FAULT; +- else +- detail->code = 0; ++ switch (detail->exc_code) ++ { ++ case EXC_I386_SGL: ++ detail->code = posix ? TRAP_BRKPT : DBG_SINGLE_TRAP; ++ break; ++ ++ case EXC_I386_BPT: ++ detail->code = posix ? TRAP_BRKPT : DBG_BRKPNT_FAULT; ++ break; ++ ++ default: ++ detail->code = 0; ++ break; ++ } + break; + } + } ++ ++void ++_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) ++{ ++ exception2signal (detail, signo, 1); ++} ++ ++void ++_hurd_exception2signal_legacy (struct hurd_signal_detail *detail, int *signo) ++{ ++ exception2signal (detail, signo, 0); ++} ++ +diff --git a/sysdeps/mach/hurd/i386/trampoline.c b/sysdeps/mach/hurd/i386/trampoline.c +index ec52847..5abd33d 100644 +--- a/sysdeps/mach/hurd/i386/trampoline.c ++++ b/sysdeps/mach/hurd/i386/trampoline.c +@@ -21,13 +21,66 @@ + #include + #include + #include ++#include + #include + #include + #include + #include "hurdfault.h" + #include ++#include + + ++/* Fill in a siginfo_t structure for SA_SIGINFO-enabled handlers. */ ++static void fill_siginfo (siginfo_t *si, int signo, ++ const struct hurd_signal_detail *detail, ++ const struct machine_thread_all_state *state) ++{ ++ si->si_signo = signo; ++ si->si_errno = detail->error; ++ si->si_code = detail->code; ++ ++ /* XXX We would need a protocol change for sig_post to include ++ * this information. */ ++ si->si_pid = -1; ++ si->si_uid = -1; ++ ++ /* Address of the faulting instruction or memory access. */ ++ if (detail->exc == EXC_BAD_ACCESS) ++ si->si_addr = (void *) detail->exc_subcode; ++ else ++ si->si_addr = (void *) state->basic.eip; ++ ++ /* XXX On SIGCHLD, this should be the exit status of the child ++ * process. We would need a protocol change for the proc server ++ * to send this information along with the signal. */ ++ si->si_status = 0; ++ ++ si->si_band = 0; /* SIGPOLL is not supported yet. */ ++ si->si_value.sival_int = 0; /* sigqueue() is not supported yet. */ ++} ++ ++/* Fill in a ucontext_t structure SA_SIGINFO-enabled handlers. */ ++static void fill_ucontext (ucontext_t *uc, const struct sigcontext *sc) ++{ ++ uc->uc_flags = 0; ++ uc->uc_link = NULL; ++ uc->uc_sigmask = sc->sc_mask; ++ uc->uc_stack.ss_sp = (__ptr_t) sc->sc_esp; ++ uc->uc_stack.ss_size = 0; ++ uc->uc_stack.ss_flags = 0; ++ ++ /* Registers. */ ++ memcpy (&uc->uc_mcontext.gregs[REG_GS], &sc->sc_gs, ++ (REG_TRAPNO - REG_GS) * sizeof (int)); ++ uc->uc_mcontext.gregs[REG_TRAPNO] = 0; ++ uc->uc_mcontext.gregs[REG_ERR] = 0; ++ memcpy (&uc->uc_mcontext.gregs[REG_EIP], &sc->sc_eip, ++ (NGREG - REG_EIP) * sizeof (int)); ++ ++ /* XXX FPU state. */ ++ memset (&uc->uc_mcontext.fpregs, 0, sizeof (fpregset_t)); ++} ++ + struct sigcontext * + _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + int signo, struct hurd_signal_detail *detail, +@@ -40,18 +93,37 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + extern const void _hurd_intr_rpc_msg_in_trap; + extern const void _hurd_intr_rpc_msg_cx_sp; + extern const void _hurd_intr_rpc_msg_sp_restored; ++ struct sigaction *action; + void *volatile sigsp; + struct sigcontext *scp; + struct + { + int signo; +- long int sigcode; +- struct sigcontext *scp; /* Points to ctx, below. */ ++ union ++ { ++ /* Extra arguments for traditional signal handlers */ ++ struct ++ { ++ long int sigcode; ++ struct sigcontext *scp; /* Points to ctx, below. */ ++ } legacy; ++ ++ /* Extra arguments for SA_SIGINFO handlers */ ++ struct ++ { ++ siginfo_t *siginfop; /* Points to siginfo, below. */ ++ ucontext_t *uctxp; /* Points to uctx, below. */ ++ } posix; ++ }; + void *sigreturn_addr; + void *sigreturn_returns_here; + struct sigcontext *return_scp; /* Same; arg to sigreturn. */ ++ ++ /* NB: sigreturn assumes link is next to ctx. */ + struct sigcontext ctx; + struct hurd_userlink link; ++ ucontext_t ucontext; ++ siginfo_t siginfo; + } *stackframe; + + if (ss->context) +@@ -143,15 +215,9 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + = &stackframe->link.thread.next; + ss->active_resources = &stackframe->link; + +- /* Set up the arguments for the signal handler. */ +- stackframe->signo = signo; +- stackframe->sigcode = detail->code; +- stackframe->scp = stackframe->return_scp = scp = &stackframe->ctx; +- stackframe->sigreturn_addr = &__sigreturn; +- stackframe->sigreturn_returns_here = firewall; /* Crash on return. */ +- + /* Set up the sigcontext from the current state of the thread. */ + ++ scp = &stackframe->ctx; + scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0; + + /* struct sigcontext is laid out so that starting at sc_gs mimics a +@@ -165,6 +231,35 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + &state->fpu, &scp->sc_i386_float_state, + sizeof (state->fpu)); + ++ /* Set up the arguments for the signal handler. */ ++ stackframe->signo = signo; ++ if (action->sa_flags & SA_SIGINFO) ++ { ++ stackframe->posix.siginfop = &stackframe->siginfo; ++ stackframe->posix.uctxp = &stackframe->ucontext; ++ fill_siginfo (&stackframe->siginfo, signo, detail, state); ++ fill_ucontext (&stackframe->ucontext, scp); ++ } ++ else ++ { ++ if (detail->exc) ++ { ++ int nsigno; ++ _hurd_exception2signal_legacy (detail, &nsigno); ++ assert (nsigno == signo); ++ } ++ else ++ detail->code = 0; ++ ++ stackframe->legacy.sigcode = detail->code; ++ stackframe->legacy.scp = &stackframe->ctx; ++ } ++ ++ /* Set up the bottom of the stack. */ ++ stackframe->sigreturn_addr = &__sigreturn; ++ stackframe->sigreturn_returns_here = firewall; /* Crash on return. */ ++ stackframe->return_scp = &stackframe->ctx; ++ + _hurdsig_end_catch_fault (); + + if (! ok) +diff --git a/sysdeps/mach/hurd/kill.c b/sysdeps/mach/hurd/kill.c +index a9946e0..ac7ffc7 100644 +--- a/sysdeps/mach/hurd/kill.c ++++ b/sysdeps/mach/hurd/kill.c +@@ -65,7 +65,7 @@ __kill (pid_t pid, int sig) + { + if (msgport != MACH_PORT_NULL) + /* Send a signal message to his message port. */ +- return __msg_sig_post (msgport, sig, 0, refport); ++ return __msg_sig_post (msgport, sig, SI_USER, refport); + + /* The process has no message port. Perhaps try direct + frobnication of the task. */ +diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c +index fec64a8..c82bfcd 100644 +--- a/sysdeps/mach/hurd/setitimer.c ++++ b/sysdeps/mach/hurd/setitimer.c +@@ -105,7 +105,7 @@ timer_thread (void) + __msg_sig_post_request (_hurd_msgport, + _hurd_itimer_port, + MACH_MSG_TYPE_MAKE_SEND_ONCE, +- SIGALRM, 0, __mach_task_self ()); ++ SIGALRM, SI_TIMER, __mach_task_self ()); + break; + + case MACH_RCV_INTERRUPTED: --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-_dl_random.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-_dl_random.diff @@ -0,0 +1,16 @@ +Add dummy _dl_random. + +--- + sysdeps/mach/hurd/dl-sysdep.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sysdeps/mach/hurd/dl-sysdep.c ++++ b/sysdeps/mach/hurd/dl-sysdep.c +@@ -56,6 +56,7 @@ + of init-first. */ + /* This variable containts the lowest stack address ever used. */ + void *__libc_stack_end; ++void *_dl_random attribute_relro = NULL; /* TODO */ + + #if HP_TIMING_AVAIL + hp_timing_t _dl_cpuclock_offset; --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-check_native.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-check_native.diff @@ -0,0 +1,36 @@ +Stub implementation of __check_native + +--- + sysdeps/mach/hurd/check_native.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +--- /dev/null ++++ b/sysdeps/mach/hurd/check_native.c +@@ -0,0 +1,27 @@ ++/* Determine whether interfaces use native transport. Dummy version. ++ Copyright (C) 2008 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++void ++__check_native (uint32_t a1_index, int *a1_native, ++ uint32_t a2_index, int *a2_native) ++{ ++#warning __check_native() not yet implemented ++} --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-tls.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-tls.diff @@ -0,0 +1,17 @@ +For now errno is still a threadvar variable. + +--- + include/errno.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/errno.h ++++ b/include/errno.h +@@ -21,7 +21,7 @@ + + # include + +-# if USE___THREAD ++# if USE___THREAD && !defined(__GNU__) + # undef errno + # ifndef NOT_IN_libc + # define errno __libc_errno --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-longjmp_chk.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-longjmp_chk.diff @@ -0,0 +1,143 @@ +From Thomas Schwinge. + +Provide ____longjmp_chk, still WIP. +--- + sysdeps/mach/hurd/i386/Makefile | 4 + + sysdeps/mach/hurd/i386/____longjmp_chk.S | 108 ++++++++++++++++++++++++++++++ + sysdeps/mach/hurd/i386/signal-defines.sym | 10 ++ + 3 files changed, 122 insertions(+) + +--- /dev/null ++++ b/sysdeps/mach/hurd/i386/____longjmp_chk.S +@@ -0,0 +1,108 @@ ++/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++/* #include */ ++#define SS_ONSTACK 1 ++ ++ ++ .section .rodata.str1.1,"aMS",@progbits,1 ++ .type longjmp_msg,@object ++longjmp_msg: ++ .string "longjmp causes uninitialized stack frame" ++ .size longjmp_msg, .-longjmp_msg ++ ++ ++#ifdef PIC ++# define CALL_FAIL movl %ebx, %ecx; /* TODO: what's this mov good for? */ \ ++ cfi_register(%ebx,%ecx); \ ++ LOAD_PIC_REG (bx); \ ++ leal longjmp_msg@GOTOFF(%ebx), %eax; \ ++ call HIDDEN_JUMPTARGET(__fortify_fail) ++#else ++# define CALL_FAIL movl $longjmp_msg, %eax; \ ++ call HIDDEN_JUMPTARGET(__fortify_fail) ++#endif ++ ++ ++ .text ++ENTRY (____longjmp_chk) ++ movl 4(%esp), %ecx /* User's jmp_buf in %ecx. */ ++ ++ /* Save the return address now. */ ++ movl (JB_PC*4)(%ecx), %edx ++ /* Get the stack pointer. */ ++ movl (JB_SP*4)(%ecx), %edi ++ cfi_undefined(%edi) ++ PTR_DEMANGLE (%edx) ++ PTR_DEMANGLE (%edi) ++ ++ cmpl %edi, %esp ++ /* Jumping to a higher-address frame is always allowed. */ ++ jbe .Lok ++ ++ /* Passing here, we're either about to do something invalid, or we're ++ executing on an alternative signal stack. */ ++ ++ /* TODO: need locking? */ ++ /* struct hurd_sigstate * _hurd_self_sigstate (void) */ ++ call _hurd_self_sigstate ++ /* TODO: %eax and %eax->sigaltstack are always valid? */ ++ ++ testl $SS_ONSTACK, (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%eax) ++ /* Fail if SS_ONSTACK is not set. */ ++ jz .Lfail ++ ++ movl (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%eax), %ebx ++ addl (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SIZE__OFFSET)(%eax), %ebx ++ subl %edi, %ebx ++ cmpl (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SIZE__OFFSET)(%eax), %ebx ++ /* TODO: comment this calculation. */ ++ jae .Lok ++ ++.Lfail: CALL_FAIL ++ ++.Lok: /* We add unwind information for the target here. */ ++ cfi_def_cfa(%ecx, 0) ++ cfi_register(%eip, %edx) ++ cfi_register(%esp, %edi) ++ cfi_offset(%ebx, JB_BX*4) ++ cfi_offset(%esi, JB_SI*4) ++ cfi_offset(%edi, JB_DI*4) ++ cfi_offset(%ebp, JB_BP*4) ++ ++ movl 8(%esp), %eax /* Second argument is return value. */ ++ movl %edi, %esp ++ ++ /* Restore registers. */ ++ movl (JB_BX*4)(%ecx), %ebx ++ movl (JB_SI*4)(%ecx), %esi ++ movl (JB_DI*4)(%ecx), %edi ++ movl (JB_BP*4)(%ecx), %ebp ++ cfi_restore(%ebx) ++ cfi_restore(%esi) ++ cfi_restore(%edi) ++ cfi_restore(%ebp) ++ ++ /* Jump to saved PC. */ ++ jmp *%edx ++END (____longjmp_chk) +--- /dev/null ++++ b/sysdeps/mach/hurd/i386/signal-defines.sym +@@ -0,0 +1,10 @@ ++#include ++#include ++ ++-- ++ ++HURD_SIGSTATE__SIGALTSTACK__OFFSET offsetof(struct hurd_sigstate, sigaltstack) ++ ++SIGALTSTACK__SS_SP__OFFSET offsetof(struct sigaltstack, ss_sp) ++SIGALTSTACK__SS_SIZE__OFFSET offsetof(struct sigaltstack, ss_size) ++SIGALTSTACK__SS_FLAGS__OFFSET offsetof(struct sigaltstack, ss_flags) +--- a/sysdeps/mach/hurd/i386/Makefile ++++ b/sysdeps/mach/hurd/i386/Makefile +@@ -2,3 +2,7 @@ + sysdep_routines += ioperm + sysdep_headers += sys/io.h + endif ++ ++ifeq ($(subdir),debug) ++gen-as-const-headers += signal-defines.sym ++endif --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-thread-cancel.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-thread-cancel.diff @@ -0,0 +1,16 @@ +The critical section lock _can_ be held in that place. + +--- + hurd/thread-cancel.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/hurd/thread-cancel.c ++++ b/hurd/thread-cancel.c +@@ -52,7 +52,6 @@ + return 0; + } + +- assert (! __spin_lock_locked (&ss->critical_section_lock)); + __spin_lock (&ss->critical_section_lock); + __spin_lock (&ss->lock); + err = __thread_suspend (thread); --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-readlinkat.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-readlinkat.diff @@ -0,0 +1,81 @@ +http://cygwin.ru/ml/libc-alpha/2009-09/msg00058.html + +2009-09-27 Samuel Thibault + + * sysdeps/mach/hurd/readlinkat.c: New file, heavily inherited from + sysdeps/mach/hurd/readlink.c + +--- + sysdeps/mach/hurd/readlinkat.c | 67 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 67 insertions(+) + +--- /dev/null ++++ b/sysdeps/mach/hurd/readlinkat.c +@@ -0,0 +1,67 @@ ++/* Copyright (C) 1991,92,93,94,95,97,2002,2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Read the contents of the symbolic link FILE_NAME relative to FD into no more ++ than LEN bytes of BUF. The contents are not null-terminated. ++ Returns the number of characters read, or -1 for errors. */ ++ssize_t ++readlinkat (fd, file_name, buf, len) ++ int fd; ++ const char *file_name; ++ char *buf; ++ size_t len; ++{ ++ error_t err; ++ file_t file; ++ struct stat64 st; ++ ++ file = __file_name_lookup_at (fd, 0, file_name, O_READ | O_NOLINK, 0); ++ if (file == MACH_PORT_NULL) ++ return -1; ++ ++ err = __io_stat (file, &st); ++ if (! err) ++ if (S_ISLNK (st.st_mode)) ++ { ++ char *rbuf = buf; ++ ++ err = __io_read (file, &rbuf, &len, 0, len); ++ if (!err && rbuf != buf) ++ { ++ memcpy (buf, rbuf, len); ++ __vm_deallocate (__mach_task_self (), (vm_address_t)rbuf, len); ++ } ++ } ++ else ++ err = EINVAL; ++ ++ __mach_port_deallocate (__mach_task_self (), file); ++ ++ if (err) ++ return __hurd_fail (err); ++ else ++ return len; ++} ++libc_hidden_def (readlinkat); --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-sbrk.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-sbrk.diff @@ -0,0 +1,48 @@ +http://sources.redhat.com/ml/libc-alpha/2009-09/msg00030.html + +2009-09-14 Samuel Thibault + + * sysdeps/mach/hurd/brk.c (_hurd_set_brk): When more space needs to be + allocated, call __vm_protect to finish enabling the existing space, and + pass a copy of _hurd_data_end instead of pagebrk to __vm_allocate to + allocate the remainder. + +--- + sysdeps/mach/hurd/brk.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +--- a/sysdeps/mach/hurd/brk.c ++++ b/sysdeps/mach/hurd/brk.c +@@ -64,7 +64,7 @@ + int + _hurd_set_brk (vm_address_t addr) + { +- error_t err; ++ error_t err = 0; + vm_address_t pagend = round_page (addr); + vm_address_t pagebrk = round_page (_hurd_brk); + long int rlimit; +@@ -101,8 +101,22 @@ + + if (pagend > _hurd_data_end) + { ++ vm_address_t alloc_start = _hurd_data_end; ++ + /* We didn't allocate enough space! Hopefully we can get some more! */ +- err = __vm_allocate (__mach_task_self (), &pagebrk, pagend - pagebrk, 0); ++ ++ if (_hurd_data_end > pagebrk) ++ /* First finish allocation */ ++ err = __vm_protect (__mach_task_self (), pagebrk, ++ alloc_start - pagebrk, 0, ++ VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); ++ if (! err) ++ _hurd_brk = alloc_start; ++ ++ if (! err) ++ err = __vm_allocate (__mach_task_self (), &alloc_start, ++ pagend - alloc_start, 0); ++ + if (! err) + _hurd_data_end = pagend; + } --- eglibc-2.13.orig/debian/patches/hurd-i386/cvs-header-prot.diff +++ eglibc-2.13/debian/patches/hurd-i386/cvs-header-prot.diff @@ -0,0 +1,48 @@ +2011-02-16 Samuel Thibault + + * sysdeps/mach/i386/sysdep.h: Add _MACH_I386_SYSDEP_H inclusion + protection macro. + * sysdeps/mach/i386/thread_state.h: Add _MACH_I386_THREAD_STATE_H + inclusion protection macro. + +--- + sysdeps/mach/i386/sysdep.h | 5 +++++ + sysdeps/mach/i386/thread_state.h | 5 +++++ + 2 files changed, 10 insertions(+) + +--- a/sysdeps/mach/i386/sysdep.h ++++ b/sysdeps/mach/i386/sysdep.h +@@ -18,6 +18,9 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifndef _MACH_I386_SYSDEP_H ++#define _MACH_I386_SYSDEP_H 1 ++ + /* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */ + #include + #include +@@ -78,3 +81,5 @@ + #undef ENTRY + #undef ALIGN + #include ++ ++#endif /* mach/i386/sysdep.h */ +--- a/sysdeps/mach/i386/thread_state.h ++++ b/sysdeps/mach/i386/thread_state.h +@@ -17,6 +17,9 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + ++#ifndef _MACH_I386_THREAD_STATE_H ++#define _MACH_I386_THREAD_STATE_H 1 ++ + #include + + #define MACHINE_NEW_THREAD_STATE_FLAVOR i386_THREAD_STATE +@@ -45,3 +48,5 @@ + }; + + #include ++ ++#endif /* mach/i386/thread_state.h */ --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-hurdsig-global-dispositions.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-hurdsig-global-dispositions.diff @@ -0,0 +1,1238 @@ +diff --git a/Versions.def b/Versions.def +index 98c2800..d20b95c 100644 +--- a/Versions.def ++++ b/Versions.def +@@ -39,6 +39,7 @@ libc { + GCC_3.0 + %endif + GLIBC_PRIVATE ++ GLIBC_2.13_DEBIAN_19 + } + libcrypt { + GLIBC_2.0 +diff --git a/hurd/Versions b/hurd/Versions +index 83c8ab1..b697019 100644 +--- a/hurd/Versions ++++ b/hurd/Versions +@@ -156,6 +156,14 @@ libc { + # functions used in macros & inline functions + __errno_location; + } ++ GLIBC_2.13_DEBIAN_19 { ++ # functions used by libpthread and ++ _hurd_sigstate_set_global_rcv; ++ _hurd_sigstate_lock; ++ _hurd_sigstate_pending; ++ _hurd_sigstate_unlock; ++ _hurd_sigstate_delete; ++ } + + %if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) + HURD_CTHREADS_0.3 { +diff --git a/hurd/ctty-input.c b/hurd/ctty-input.c +index ef8395a..4da33c7 100644 +--- a/hurd/ctty-input.c ++++ b/hurd/ctty-input.c +@@ -1,5 +1,5 @@ + /* _hurd_ctty_input -- Do an input RPC and generate SIGTTIN if necessary. +- Copyright (C) 1995,97,99 Free Software Foundation, Inc. ++ Copyright (C) 1995,97,99,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -44,12 +44,15 @@ _hurd_ctty_input (io_t port, io_t ctty, error_t (*rpc) (io_t)) + else + { + struct hurd_sigstate *ss = _hurd_self_sigstate (); +- __spin_lock (&ss->lock); ++ struct sigaction *actions; ++ ++ _hurd_sigstate_lock (ss); ++ actions = _hurd_sigstate_actions (ss); + if (__sigismember (&ss->blocked, SIGTTIN) || +- ss->actions[SIGTTIN].sa_handler == SIG_IGN) ++ actions[SIGTTIN].sa_handler == SIG_IGN) + /* We are blocking or ignoring SIGTTIN. Just fail. */ + err = EIO; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + if (err == EBACKGROUND) + { +@@ -66,10 +69,11 @@ _hurd_ctty_input (io_t port, io_t ctty, error_t (*rpc) (io_t)) + SIGTTIN or resumed after being stopped. Now this is + still a "system call", so check to see if we should + restart it. */ +- __spin_lock (&ss->lock); +- if (!(ss->actions[SIGTTIN].sa_flags & SA_RESTART)) ++ _hurd_sigstate_lock (ss); ++ actions = _hurd_sigstate_actions (ss); ++ if (!(actions[SIGTTIN].sa_flags & SA_RESTART)) + err = EINTR; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + } + } + } +diff --git a/hurd/ctty-output.c b/hurd/ctty-output.c +index 92ab95a..6e4bd74 100644 +--- a/hurd/ctty-output.c ++++ b/hurd/ctty-output.c +@@ -1,5 +1,5 @@ + /* _hurd_ctty_output -- Do an output RPC and generate SIGTTOU if necessary. +- Copyright (C) 1995,97,99 Free Software Foundation, Inc. ++ Copyright (C) 1995,97,99,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -35,16 +35,19 @@ _hurd_ctty_output (io_t port, io_t ctty, error_t (*rpc) (io_t)) + + do + { ++ struct sigaction *actions; ++ + /* Don't use the ctty io port if we are blocking or ignoring + SIGTTOU. We redo this check at the top of the loop in case + the signal handler changed the state. */ +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); ++ actions = _hurd_sigstate_actions (ss); + if (__sigismember (&ss->blocked, SIGTTOU) || +- ss->actions[SIGTTOU].sa_handler == SIG_IGN) ++ actions[SIGTTOU].sa_handler == SIG_IGN) + err = EIO; + else + err = 0; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + if (err) + return (*rpc) (port); +@@ -71,10 +74,11 @@ _hurd_ctty_output (io_t port, io_t ctty, error_t (*rpc) (io_t)) + SIGTTOU or resumed after being stopped. Now this is + still a "system call", so check to see if we should + restart it. */ +- __spin_lock (&ss->lock); +- if (!(ss->actions[SIGTTOU].sa_flags & SA_RESTART)) ++ _hurd_sigstate_lock (ss); ++ actions = _hurd_sigstate_actions (ss); ++ if (!(actions[SIGTTOU].sa_flags & SA_RESTART)) + err = EINTR; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + } + } + /* If the last RPC generated a SIGTTOU, loop to try it again. */ +diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h +index 21e30c5..1c4733a 100644 +--- a/hurd/hurd/signal.h ++++ b/hurd/hurd/signal.h +@@ -1,5 +1,5 @@ + /* Implementing POSIX.1 signals under the Hurd. +- Copyright (C) 1993,94,95,96,98,99,2002,2007,2008 ++ Copyright (C) 1993,94,95,96,98,99,2002,2007,2008,2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -71,7 +71,13 @@ struct hurd_sigstate + + sigset_t blocked; /* What signals are blocked. */ + sigset_t pending; /* Pending signals, possibly blocked. */ ++ ++ /* Signal handlers. ACTIONS[0] is used to mark the threads with POSIX ++ semantics: if sa_handler is SIG_IGN instead of SIG_DFL, this thread ++ will receive global signals and use the process-wide action vector ++ instead of this one. */ + struct sigaction actions[NSIG]; ++ + struct sigaltstack sigaltstack; + + /* Chain of thread-local signal preemptors; see . +@@ -127,6 +133,26 @@ extern struct hurd_sigstate *_hurd_self_sigstate (void) + by different threads. */ + __attribute__ ((__const__)); + ++/* Process-wide signal state. */ ++ ++extern struct hurd_sigstate *_hurd_global_sigstate; ++ ++/* Mark the given thread as a process-wide signal receiver. */ ++ ++extern void _hurd_sigstate_set_global_rcv (struct hurd_sigstate *ss); ++ ++/* A thread can either use its own action vector and pending signal set ++ or use the global ones, depending on wether it has been marked as a ++ global receiver. The accessors below take that into account. */ ++ ++extern void _hurd_sigstate_lock (struct hurd_sigstate *ss); ++extern struct sigaction *_hurd_sigstate_actions (struct hurd_sigstate *ss); ++extern sigset_t _hurd_sigstate_pending (const struct hurd_sigstate *ss); ++extern void _hurd_sigstate_unlock (struct hurd_sigstate *ss); ++ ++/* Used by libpthread to remove stale sigstate structures. */ ++extern void _hurd_sigstate_delete (thread_t thread); ++ + #ifndef _HURD_SIGNAL_H_EXTERN_INLINE + #define _HURD_SIGNAL_H_EXTERN_INLINE __extern_inline + #endif +@@ -150,12 +176,6 @@ extern thread_t _hurd_msgport_thread; + + extern mach_port_t _hurd_msgport; + +- +-/* Thread to receive process-global signals. */ +- +-extern thread_t _hurd_sigthread; +- +- + /* Resource limit on core file size. Enforced by hurdsig.c. */ + extern int _hurd_core_limit; + +@@ -203,10 +223,10 @@ _hurd_critical_section_unlock (void *our_lock) + /* It was us who acquired the critical section lock. Unlock it. */ + struct hurd_sigstate *ss = our_lock; + sigset_t pending; +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + __spin_unlock (&ss->critical_section_lock); +- pending = ss->pending & ~ss->blocked; +- __spin_unlock (&ss->lock); ++ pending = _hurd_sigstate_pending(ss) & ~ss->blocked; ++ _hurd_sigstate_unlock (ss); + if (! __sigisemptyset (&pending)) + /* There are unblocked signals pending, which weren't + delivered because we were in the critical section. +diff --git a/hurd/hurdexec.c b/hurd/hurdexec.c +index beae869..ee3162f 100644 +--- a/hurd/hurdexec.c ++++ b/hurd/hurdexec.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991,92,93,94,95,96,97,99,2001,02 ++/* Copyright (C) 1991,92,93,94,95,96,97,99,2001,2002,2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -109,12 +109,13 @@ _hurd_exec (task_t task, file_t file, + assert (! __spin_lock_locked (&ss->critical_section_lock)); + __spin_lock (&ss->critical_section_lock); + +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); ++ struct sigaction *actions = _hurd_sigstate_actions (ss); + ints[INIT_SIGMASK] = ss->blocked; +- ints[INIT_SIGPENDING] = ss->pending; ++ ints[INIT_SIGPENDING] = _hurd_sigstate_pending (ss); + ints[INIT_SIGIGN] = 0; + for (i = 1; i < NSIG; ++i) +- if (ss->actions[i].sa_handler == SIG_IGN) ++ if (actions[i].sa_handler == SIG_IGN) + ints[INIT_SIGIGN] |= __sigmask (i); + + /* We hold the sigstate lock until the exec has failed so that no signal +@@ -125,7 +126,7 @@ _hurd_exec (task_t task, file_t file, + critical section flag avoids anything we call trying to acquire the + sigstate lock. */ + +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + /* Pack up the descriptor table to give the new program. */ + __mutex_lock (&_hurd_dtable_lock); +diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c +index ffcce61..fdc7551 100644 +--- a/hurd/hurdmsg.c ++++ b/hurd/hurdmsg.c +@@ -1,4 +1,5 @@ +-/* Copyright (C) 1992, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. ++/* Copyright (C) 1992, 1994, 1995, 1996, 1997, 2011 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -122,17 +123,9 @@ get_int (int which, int *value) + case INIT_UMASK: + *value = _hurd_umask; + return 0; +- case INIT_SIGMASK: +- { +- struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread); +- __spin_lock (&ss->lock); +- *value = ss->blocked; +- __spin_unlock (&ss->lock); +- return 0; +- } + case INIT_SIGPENDING: + { +- struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread); ++ struct hurd_sigstate *ss = _hurd_global_sigstate; + __spin_lock (&ss->lock); + *value = ss->pending; + __spin_unlock (&ss->lock); +@@ -140,7 +133,7 @@ get_int (int which, int *value) + } + case INIT_SIGIGN: + { +- struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread); ++ struct hurd_sigstate *ss = _hurd_global_sigstate; + sigset_t ign; + int sig; + __spin_lock (&ss->lock); +@@ -208,17 +201,9 @@ set_int (int which, int value) + return 0; + + /* These are pretty odd things to do. But you asked for it. */ +- case INIT_SIGMASK: +- { +- struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread); +- __spin_lock (&ss->lock); +- ss->blocked = value; +- __spin_unlock (&ss->lock); +- return 0; +- } + case INIT_SIGPENDING: + { +- struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread); ++ struct hurd_sigstate *ss = _hurd_global_sigstate; + __spin_lock (&ss->lock); + ss->pending = value; + __spin_unlock (&ss->lock); +@@ -226,7 +211,7 @@ set_int (int which, int value) + } + case INIT_SIGIGN: + { +- struct hurd_sigstate *ss = _hurd_thread_sigstate (_hurd_sigthread); ++ struct hurd_sigstate *ss = _hurd_global_sigstate; + int sig; + const sigset_t ign = value; + __spin_lock (&ss->lock); +diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c +index 74a01a6..67037e8 100644 +--- a/hurd/hurdsig.c ++++ b/hurd/hurdsig.c +@@ -44,9 +44,6 @@ mach_port_t _hurd_msgport; + /* Thread listening on it. */ + thread_t _hurd_msgport_thread; + +-/* Thread which receives task-global signals. */ +-thread_t _hurd_sigthread; +- + /* These are set up by _hurdsig_init. */ + unsigned long int __hurd_sigthread_stack_base; + unsigned long int __hurd_sigthread_stack_end; +@@ -55,6 +52,9 @@ unsigned long int *__hurd_sigthread_variables; + /* Linked-list of per-thread signal state. */ + struct hurd_sigstate *_hurd_sigstates; + ++/* Sigstate for the task-global signals. */ ++struct hurd_sigstate *_hurd_global_sigstate; ++ + /* Timeout for RPC's after interrupt_operation. */ + mach_msg_timeout_t _hurd_interrupted_rpc_timeout = 3000; + +@@ -83,7 +83,7 @@ _hurd_thread_sigstate (thread_t thread) + { + ss = malloc (sizeof (*ss)); + if (ss == NULL) +- __libc_fatal ("hurd: Can't allocate thread sigstate\n"); ++ __libc_fatal ("hurd: Can't allocate sigstate\n"); + ss->thread = thread; + __spin_lock_init (&ss->lock); + +@@ -96,16 +96,19 @@ _hurd_thread_sigstate (thread_t thread) + ss->intr_port = MACH_PORT_NULL; + ss->context = NULL; + +- /* Initialize the sigaction vector from the default signal receiving +- thread's state, and its from the system defaults. */ +- if (thread == _hurd_sigthread) +- default_sigaction (ss->actions); ++ if (thread == MACH_PORT_NULL) ++ { ++ /* Process-wide sigstate, use the system defaults. */ ++ default_sigaction (ss->actions); ++ ++ /* The global sigstate is not added to the _hurd_sigstates list. ++ It is created with _hurd_thread_sigstate (MACH_PORT_NULL) ++ but should be accessed through _hurd_global_sigstate. */ ++ } + else + { +- struct hurd_sigstate *s; +- for (s = _hurd_sigstates; s != NULL; s = s->next) +- if (s->thread == _hurd_sigthread) +- break; ++ /* Use the global actions as a default for new threads. */ ++ struct hurd_sigstate *s = _hurd_global_sigstate; + if (s) + { + __spin_lock (&s->lock); +@@ -114,14 +117,108 @@ _hurd_thread_sigstate (thread_t thread) + } + else + default_sigaction (ss->actions); +- } + +- ss->next = _hurd_sigstates; +- _hurd_sigstates = ss; ++ ss->next = _hurd_sigstates; ++ _hurd_sigstates = ss; ++ } + } + __mutex_unlock (&_hurd_siglock); + return ss; + } ++ ++/* Destroy a sigstate structure. Called by libpthread just before the ++ * corresponding thread is terminated (the kernel thread port must remain valid ++ * until this function is called.) */ ++void ++_hurd_sigstate_delete (thread_t thread) ++{ ++ struct hurd_sigstate **ssp, *ss; ++ ++ __mutex_lock (&_hurd_siglock); ++ for (ssp = &_hurd_sigstates; *ssp; ssp = &(*ssp)->next) ++ if ((*ssp)->thread == thread) ++ break; ++ ++ ss = *ssp; ++ if (ss) ++ *ssp = ss->next; ++ ++ __mutex_unlock (&_hurd_siglock); ++ if (ss) ++ free (ss); ++} ++ ++/* Make SS a global receiver, with pthread signal semantics. */ ++void ++_hurd_sigstate_set_global_rcv (struct hurd_sigstate *ss) ++{ ++ assert (ss->thread != MACH_PORT_NULL); ++ ss->actions[0].sa_handler = SIG_IGN; ++} ++ ++/* Check whether SS is a global receiver. */ ++static int ++sigstate_is_global_rcv (const struct hurd_sigstate *ss) ++{ ++ return ss->actions[0].sa_handler == SIG_IGN; ++} ++ ++/* Lock/unlock a hurd_sigstate structure. If the accessors below require ++ it, the global sigstate will be locked as well. */ ++void ++_hurd_sigstate_lock (struct hurd_sigstate *ss) ++{ ++ if (sigstate_is_global_rcv (ss)) ++ __spin_lock (&_hurd_global_sigstate->lock); ++ __spin_lock (&ss->lock); ++} ++void ++_hurd_sigstate_unlock (struct hurd_sigstate *ss) ++{ ++ __spin_unlock (&ss->lock); ++ if (sigstate_is_global_rcv (ss)) ++ __spin_unlock (&_hurd_global_sigstate->lock); ++} ++ ++/* Retreive a thread's full set of pending signals, including the global ++ ones if appropriate. SS must be locked. */ ++sigset_t ++_hurd_sigstate_pending (const struct hurd_sigstate *ss) ++{ ++ sigset_t pending = ss->pending; ++ if (sigstate_is_global_rcv (ss)) ++ __sigorset (&pending, &pending, &_hurd_global_sigstate->pending); ++ return pending; ++} ++ ++/* Clear a pending signal and return the associated detailed ++ signal information. SS must be locked, and must have signal SIGNO ++ pending, either directly or through the global sigstate. */ ++static struct hurd_signal_detail ++sigstate_clear_pending (struct hurd_sigstate *ss, int signo) ++{ ++ if (sigstate_is_global_rcv (ss) ++ && __sigismember (&_hurd_global_sigstate->pending, signo)) ++ { ++ __sigdelset (&_hurd_global_sigstate->pending, signo); ++ return _hurd_global_sigstate->pending_data[signo]; ++ } ++ ++ assert (__sigismember (&ss->pending, signo)); ++ __sigdelset (&ss->pending, signo); ++ return ss->pending_data[signo]; ++} ++ ++/* Retreive a thread's action vector. SS must be locked. */ ++struct sigaction * ++_hurd_sigstate_actions (struct hurd_sigstate *ss) ++{ ++ if (sigstate_is_global_rcv (ss)) ++ return _hurd_global_sigstate->actions; ++ else ++ return ss->actions; ++} ++ + + /* Signal delivery itself is on this page. */ + +@@ -216,6 +313,8 @@ static void + abort_thread (struct hurd_sigstate *ss, struct machine_thread_all_state *state, + void (*reply) (void)) + { ++ assert (ss->thread != MACH_PORT_NULL); ++ + if (!(state->set & THREAD_ABORTED)) + { + error_t err = __thread_abort (ss->thread); +@@ -355,7 +454,7 @@ _hurdsig_abort_rpcs (struct hurd_sigstate *ss, int signo, int sigthread, + call above will retry their RPCs unless we clear SS->intr_port. + So we clear it for the thread taking a signal when SA_RESTART is + clear, so that its call returns EINTR. */ +- if (! signo || !(ss->actions[signo].sa_flags & SA_RESTART)) ++ if (! signo || !(_hurd_sigstate_actions (ss) [signo].sa_flags & SA_RESTART)) + ss->intr_port = MACH_PORT_NULL; + } + +@@ -478,9 +577,11 @@ weak_alias (_hurdsig_preemptors, _hurdsig_preempters) + sigmask (SIGSTOP) | sigmask (SIGTSTP)) + + /* Actual delivery of a single signal. Called with SS unlocked. When +- the signal is delivered, return 1 with SS locked. If the signal is +- being traced, return 0 with SS unlocked. */ +-static int ++ the signal is delivered, return SS, locked (or, if SS was originally ++ _hurd_global_sigstate, the sigstate of the actual thread the signal ++ was delivered to). If the signal is being traced, return NULL with ++ SS unlocked. */ ++static struct hurd_sigstate * + post_signal (struct hurd_sigstate *ss, + int signo, struct hurd_signal_detail *detail, + int untraced, void (*reply) (void)) +@@ -533,8 +634,12 @@ post_signal (struct hurd_sigstate *ss, + assert_perror (err); + for (i = 0; i < nthreads; ++i) + { +- if (threads[i] != _hurd_msgport_thread && +- (act != handle || threads[i] != ss->thread)) ++ if (act == handle && threads[i] == ss->thread) ++ { ++ /* The thread that will run the handler is kept suspended. */ ++ ss_suspended = 1; ++ } ++ else if (threads[i] != _hurd_msgport_thread) + { + err = __thread_resume (threads[i]); + assert_perror (err); +@@ -547,9 +652,6 @@ post_signal (struct hurd_sigstate *ss, + (vm_address_t) threads, + nthreads * sizeof *threads); + _hurd_stopped = 0; +- if (act == handle) +- /* The thread that will run the handler is already suspended. */ +- ss_suspended = 1; + } + + error_t err; +@@ -565,13 +667,43 @@ post_signal (struct hurd_sigstate *ss, + } + + /* This call is just to check for pending signals. */ +- __spin_lock (&ss->lock); +- return 1; ++ _hurd_sigstate_lock (ss); ++ return ss; + } + + thread_state.set = 0; /* We know nothing. */ + +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); ++ ++ /* If this is a global signal, try to find a thread ready to accept ++ it right away. This is especially important for untraced signals, ++ since going through the global pending mask would de-untrace them. */ ++ if (ss->thread == MACH_PORT_NULL) ++ { ++ struct hurd_sigstate *rss; ++ ++ __mutex_lock (&_hurd_siglock); ++ for (rss = _hurd_sigstates; rss != NULL; rss = rss->next) ++ { ++ if (! sigstate_is_global_rcv (rss)) ++ continue; ++ ++ /* The global sigstate is already locked. */ ++ __spin_lock (&rss->lock); ++ if (! __sigismember (&rss->blocked, signo)) ++ { ++ ss = rss; ++ break; ++ } ++ __spin_unlock (&rss->lock); ++ } ++ __mutex_unlock (&_hurd_siglock); ++ } ++ ++ /* We want the preemptors to be able to update the blocking mask ++ without affecting the delivery of this signal, so we save the ++ current value to test against later. */ ++ sigset_t blocked = ss->blocked; + + /* Check for a preempted signal. Preempted signals can arrive during + critical sections. */ +@@ -629,12 +761,12 @@ post_signal (struct hurd_sigstate *ss, + mark_pending (); + else + suspend (); +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + reply (); +- return 0; ++ return NULL; + } + +- handler = ss->actions[signo].sa_handler; ++ handler = _hurd_sigstate_actions (ss) [signo].sa_handler; + + if (handler == SIG_DFL) + /* Figure out the default action for this signal. */ +@@ -728,7 +860,7 @@ post_signal (struct hurd_sigstate *ss, + + /* Handle receipt of a blocked signal, or any signal while stopped. */ + if (act != ignore && /* Signals ignored now are forgotten now. */ +- __sigismember (&ss->blocked, signo) || ++ __sigismember (&blocked, signo) || + (signo != SIGKILL && _hurd_stopped)) + { + mark_pending (); +@@ -764,6 +896,7 @@ post_signal (struct hurd_sigstate *ss, + now's the time to set it going. */ + if (ss_suspended) + { ++ assert (ss->thread != MACH_PORT_NULL); + err = __thread_resume (ss->thread); + assert_perror (err); + ss_suspended = 0; +@@ -808,6 +941,8 @@ post_signal (struct hurd_sigstate *ss, + struct sigcontext *scp, ocontext; + int wait_for_reply, state_changed; + ++ assert (ss->thread != MACH_PORT_NULL); ++ + /* Stop the thread and abort its pending RPC operations. */ + if (! ss_suspended) + { +@@ -942,23 +1077,25 @@ post_signal (struct hurd_sigstate *ss, + } + } + ++ struct sigaction *action = & _hurd_sigstate_actions (ss) [signo]; ++ + /* Backdoor extra argument to signal handler. */ + scp->sc_error = detail->error; + + /* Block requested signals while running the handler. */ + scp->sc_mask = ss->blocked; +- __sigorset (&ss->blocked, &ss->blocked, &ss->actions[signo].sa_mask); ++ __sigorset (&ss->blocked, &ss->blocked, &action->sa_mask); + + /* Also block SIGNO unless we're asked not to. */ +- if (! (ss->actions[signo].sa_flags & (SA_RESETHAND | SA_NODEFER))) ++ if (! (action->sa_flags & (SA_RESETHAND | SA_NODEFER))) + __sigaddset (&ss->blocked, signo); + + /* Reset to SIG_DFL if requested. SIGILL and SIGTRAP cannot + be automatically reset when delivered; the system silently + enforces this restriction. */ +- if (ss->actions[signo].sa_flags & SA_RESETHAND ++ if (action->sa_flags & SA_RESETHAND + && signo != SIGILL && signo != SIGTRAP) +- ss->actions[signo].sa_handler = SIG_DFL; ++ action->sa_handler = SIG_DFL; + + /* Any sigsuspend call must return after the handler does. */ + wake_sigsuspend (ss); +@@ -976,7 +1113,7 @@ post_signal (struct hurd_sigstate *ss, + } + } + +- return 1; ++ return ss; + } + + /* Return the set of pending signals in SS which should be delivered. */ +@@ -991,7 +1128,7 @@ pending_signals (struct hurd_sigstate *ss) + if (_hurd_stopped || __spin_lock_locked (&ss->critical_section_lock)) + return 0; + +- return ss->pending & ~ss->blocked; ++ return _hurd_sigstate_pending (ss) & ~ss->blocked; + } + + /* Post the specified pending signals in SS and return 1. If one of +@@ -1003,12 +1140,15 @@ post_pending (struct hurd_sigstate *ss, sigset_t pending, void (*reply) (void)) + int signo; + struct hurd_signal_detail detail; + ++ /* Make sure SS corresponds to an actual thread, since we assume it won't ++ change in post_signal. */ ++ assert (ss->thread != MACH_PORT_NULL); ++ + for (signo = 1; signo < NSIG; ++signo) + if (__sigismember (&pending, signo)) + { +- __sigdelset (&ss->pending, signo); +- detail = ss->pending_data[signo]; +- __spin_unlock (&ss->lock); ++ detail = sigstate_clear_pending (ss, signo); ++ _hurd_sigstate_unlock (ss); + + /* Will reacquire the lock, except if the signal is traced. */ + if (! post_signal (ss, signo, &detail, 0, reply)) +@@ -1016,7 +1156,7 @@ post_pending (struct hurd_sigstate *ss, sigset_t pending, void (*reply) (void)) + } + + /* No more signals pending; SS->lock is still locked. */ +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + return 1; + } +@@ -1034,14 +1174,14 @@ post_all_pending_signals (void (*reply) (void)) + __mutex_lock (&_hurd_siglock); + for (ss = _hurd_sigstates; ss != NULL; ss = ss->next) + { +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + + pending = pending_signals (ss); + if (pending) + /* post_pending() below will unlock SS. */ + break; + +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + } + __mutex_unlock (&_hurd_siglock); + +@@ -1074,11 +1214,12 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + assert_perror (err); + } + +- if (! post_signal (ss, signo, detail, untraced, reply)) ++ ss = post_signal (ss, signo, detail, untraced, reply); ++ if (! ss) + return; + + /* The signal was neither fatal nor traced. We still hold SS->lock. */ +- if (signo != 0) ++ if (signo != 0 && ss->thread != MACH_PORT_NULL) + { + /* The signal has either been ignored or is now being handled. We can + consider it delivered and reply to the killer. */ +@@ -1090,8 +1231,9 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + } + else + { +- /* We need to check for pending signals for all threads. */ +- __spin_unlock (&ss->lock); ++ /* If this was a process-wide signal or a poll request, we need ++ to check for pending signals for all threads. */ ++ _hurd_sigstate_unlock (ss); + if (! post_all_pending_signals (reply)) + return; + +@@ -1217,9 +1359,10 @@ _S_msg_sig_post (mach_port_t me, + d.code = sigcode; + d.exc = 0; + +- /* Post the signal to the designated signal-receiving thread. This will +- reply when the signal can be considered delivered. */ +- _hurd_internal_post_signal (_hurd_thread_sigstate (_hurd_sigthread), ++ /* Post the signal to a global receiver thread (or mark it pending in ++ the global sigstate). This will reply when the signal can be ++ considered delivered. */ ++ _hurd_internal_post_signal (_hurd_global_sigstate, + signo, &d, reply_port, reply_port_type, + 0); /* Stop if traced. */ + +@@ -1247,7 +1390,7 @@ _S_msg_sig_post_untraced (mach_port_t me, + + /* Post the signal to the designated signal-receiving thread. This will + reply when the signal can be considered delivered. */ +- _hurd_internal_post_signal (_hurd_thread_sigstate (_hurd_sigthread), ++ _hurd_internal_post_signal (_hurd_global_sigstate, + signo, &d, reply_port, reply_port_type, + 1); /* Untraced flag. */ + +@@ -1258,8 +1401,8 @@ extern void __mig_init (void *); + + #include + +-/* Initialize the message port and _hurd_sigthread and start the signal +- thread. */ ++/* Initialize the message port, _hurd_global_sigstate, and start the ++ signal thread. */ + + void + _hurdsig_init (const int *intarray, size_t intarraysize) +@@ -1282,27 +1425,34 @@ _hurdsig_init (const int *intarray, size_t intarraysize) + MACH_MSG_TYPE_MAKE_SEND); + assert_perror (err); + ++ /* Initialize the global signal state. */ ++ _hurd_global_sigstate = _hurd_thread_sigstate (MACH_PORT_NULL); ++ ++ /* We block all signals, and let actual threads pull them from the ++ pending mask. */ ++ __sigfillset(& _hurd_global_sigstate->blocked); ++ + /* Initialize the main thread's signal state. */ + ss = _hurd_self_sigstate (); + +- /* Copy inherited values from our parent (or pre-exec process state) +- into the signal settings of the main thread. */ ++ /* Mark it as a process-wide signal receiver. Threads in this set use ++ the common action vector in _hurd_global_sigstate. */ ++ _hurd_sigstate_set_global_rcv (ss); ++ ++ /* Copy inherited signal settings from our parent (or pre-exec process ++ state) */ + if (intarraysize > INIT_SIGMASK) + ss->blocked = intarray[INIT_SIGMASK]; + if (intarraysize > INIT_SIGPENDING) +- ss->pending = intarray[INIT_SIGPENDING]; ++ _hurd_global_sigstate->pending = intarray[INIT_SIGPENDING]; + if (intarraysize > INIT_SIGIGN && intarray[INIT_SIGIGN] != 0) + { + int signo; + for (signo = 1; signo < NSIG; ++signo) + if (intarray[INIT_SIGIGN] & __sigmask(signo)) +- ss->actions[signo].sa_handler = SIG_IGN; ++ _hurd_global_sigstate->actions[signo].sa_handler = SIG_IGN; + } + +- /* Set the default thread to receive task-global signals +- to this one, the main (first) user thread. */ +- _hurd_sigthread = ss->thread; +- + /* Start the signal thread listening on the message port. */ + + if (__hurd_threadvar_stack_mask == 0) +diff --git a/sysdeps/mach/hurd/fork.c b/sysdeps/mach/hurd/fork.c +index 3288f18..a4f3055 100644 +--- a/sysdeps/mach/hurd/fork.c ++++ b/sysdeps/mach/hurd/fork.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1994,1995,1996,1997,1999,2001,2002,2004,2005,2006 ++/* Copyright (C) 1994,1995,1996,1997,1999,2001,2002,2004,2005,2006,2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -459,6 +459,7 @@ __fork (void) + function, accounted for by mach_port_names (and which will thus be + accounted for in the child below). This extra right gets consumed + in the child by the store into _hurd_sigthread in the child fork. */ ++ /* XXX consumed? (_hurd_sigthread is no more) */ + if (thread_refs > 1 && + (err = __mach_port_mod_refs (newtask, ss->thread, + MACH_PORT_RIGHT_SEND, +@@ -616,10 +617,6 @@ __fork (void) + for (i = 0; i < _hurd_nports; ++i) + __spin_unlock (&_hurd_ports[i].lock); + +- /* We are one of the (exactly) two threads in this new task, we +- will take the task-global signals. */ +- _hurd_sigthread = ss->thread; +- + /* Claim our sigstate structure and unchain the rest: the + threads existed in the parent task but don't exist in this + task (the child process). Delay freeing them until later +@@ -640,6 +637,10 @@ __fork (void) + _hurd_sigstates = ss; + __mutex_unlock (&_hurd_siglock); + ++ /* We are one of the (exactly) two threads in this new task, we ++ will take the task-global signals. */ ++ _hurd_sigstate_set_global_rcv (ss); ++ + /* Fetch our new process IDs from the proc server. No need to + refetch our pgrp; it is always inherited from the parent (so + _hurd_pgrp is already correct), and the proc server will send us a +diff --git a/sysdeps/mach/hurd/i386/sigreturn.c b/sysdeps/mach/hurd/i386/sigreturn.c +index 60b0d00..8cb92ef 100644 +--- a/sysdeps/mach/hurd/i386/sigreturn.c ++++ b/sysdeps/mach/hurd/i386/sigreturn.c +@@ -1,4 +1,5 @@ +-/* Copyright (C) 1991,92,94,95,96,97,98,2001 Free Software Foundation, Inc. ++/* Copyright (C) 1991,92,94,95,96,97,98,2001,2011 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -39,7 +40,7 @@ __sigreturn (struct sigcontext *scp) + } + + ss = _hurd_self_sigstate (); +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + + /* Remove the link on the `active resources' chain added by + _hurd_setup_sighandler. Its purpose was to make sure +@@ -51,19 +52,19 @@ __sigreturn (struct sigcontext *scp) + ss->intr_port = scp->sc_intr_port; + + /* Check for pending signals that were blocked by the old set. */ +- if (ss->pending & ~ss->blocked) ++ if (_hurd_sigstate_pending (ss) & ~ss->blocked) + { + /* There are pending signals that just became unblocked. Wake up the + signal thread to deliver them. But first, squirrel away SCP where + the signal thread will notice it if it runs another handler, and + arrange to have us called over again in the new reality. */ + ss->context = scp; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ()); + /* If a pending signal was handled, sig_post never returned. + If it did return, the pending signal didn't run a handler; + proceed as usual. */ +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + ss->context = NULL; + } + +@@ -74,7 +75,7 @@ __sigreturn (struct sigcontext *scp) + abort (); + } + else +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + /* Destroy the MiG reply port used by the signal handler, and restore the + reply port in use by the thread when interrupted. */ +diff --git a/sysdeps/mach/hurd/i386/trampoline.c b/sysdeps/mach/hurd/i386/trampoline.c +index 99d9308..ec52847 100644 +--- a/sysdeps/mach/hurd/i386/trampoline.c ++++ b/sysdeps/mach/hurd/i386/trampoline.c +@@ -1,5 +1,5 @@ + /* Set thread_state for sighandler, and sigcontext to recover. i386 version. +- Copyright (C) 1994,1995,1996,1997,1998,1999,2005,2008 ++ Copyright (C) 1994,1995,1996,1997,1998,1999,2005,2008,2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -77,7 +77,11 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + interrupted RPC frame. */ + state->basic.esp = state->basic.uesp; + +- if ((ss->actions[signo].sa_flags & SA_ONSTACK) && ++ /* XXX what if handler != action->handler (for instance, if a signal ++ * preemptor took over) ? */ ++ action = & _hurd_sigstate_actions (ss) [signo]; ++ ++ if ((action->sa_flags & SA_ONSTACK) && + !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK))) + { + sigsp = ss->sigaltstack.ss_sp + ss->sigaltstack.ss_size; +diff --git a/sysdeps/mach/hurd/sigaction.c b/sysdeps/mach/hurd/sigaction.c +index fe452e8..bedf14c 100644 +--- a/sysdeps/mach/hurd/sigaction.c ++++ b/sysdeps/mach/hurd/sigaction.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2007 ++/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2007, 2011 + Free Software Foundation, Inc. + + This file is part of the GNU C Library. +@@ -51,15 +51,15 @@ __sigaction (sig, act, oact) + ss = _hurd_self_sigstate (); + + __spin_lock (&ss->critical_section_lock); +- __spin_lock (&ss->lock); +- old = ss->actions[sig]; ++ _hurd_sigstate_lock (ss); ++ old = _hurd_sigstate_actions (ss) [sig]; + if (act != NULL) +- ss->actions[sig] = a; ++ _hurd_sigstate_actions (ss) [sig] = a; + + if (act != NULL && sig == SIGCHLD && + (a.sa_flags & SA_NOCLDSTOP) != (old.sa_flags & SA_NOCLDSTOP)) + { +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + /* Inform the proc server whether or not it should send us SIGCHLD for + stopped children. We do this in a critical section so that no +@@ -67,8 +67,8 @@ __sigaction (sig, act, oact) + __USEPORT (PROC, + __proc_mod_stopchild (port, !(a.sa_flags & SA_NOCLDSTOP))); + +- __spin_lock (&ss->lock); +- pending = ss->pending & ~ss->blocked; ++ _hurd_sigstate_lock (ss); ++ pending = _hurd_sigstate_pending (ss) & ~ss->blocked; + } + else if (act != NULL && (a.sa_handler == SIG_IGN || a.sa_handler == SIG_DFL)) + /* We are changing to an action that might be to ignore SIG signals. +@@ -77,11 +77,11 @@ __sigaction (sig, act, oact) + back and then SIG is unblocked, the signal pending now should not + arrive. So wake up the signal thread to check the new state and do + the right thing. */ +- pending = ss->pending & __sigmask (sig); ++ pending = _hurd_sigstate_pending (ss) & __sigmask (sig); + else + pending = 0; + +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + __spin_unlock (&ss->critical_section_lock); + + if (pending) +diff --git a/sysdeps/mach/hurd/sigpending.c b/sysdeps/mach/hurd/sigpending.c +index 84ac927..f582d45 100644 +--- a/sysdeps/mach/hurd/sigpending.c ++++ b/sysdeps/mach/hurd/sigpending.c +@@ -1,4 +1,5 @@ +-/* Copyright (C) 1991, 1993, 1994, 1995, 1997 Free Software Foundation, Inc. ++/* Copyright (C) 1991, 1993, 1994, 1995, 1997, 2011 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -38,9 +39,9 @@ sigpending (set) + } + + ss = _hurd_self_sigstate (); +- __spin_lock (&ss->lock); +- pending = ss->pending; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_lock (ss); ++ pending = _hurd_sigstate_pending (ss); ++ _hurd_sigstate_unlock (ss); + + *set = pending; + return 0; +diff --git a/sysdeps/mach/hurd/sigprocmask.c b/sysdeps/mach/hurd/sigprocmask.c +index cbb5ecc..b12dc19 100644 +--- a/sysdeps/mach/hurd/sigprocmask.c ++++ b/sysdeps/mach/hurd/sigprocmask.c +@@ -1,4 +1,5 @@ +-/* Copyright (C) 1991,92,93,94,95,96,97,2002 Free Software Foundation, Inc. ++/* Copyright (C) 1991,92,93,94,95,96,97,2002,2011 ++ Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -40,7 +41,7 @@ __sigprocmask (how, set, oset) + + ss = _hurd_self_sigstate (); + +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + + old = ss->blocked; + +@@ -61,7 +62,7 @@ __sigprocmask (how, set, oset) + break; + + default: +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + errno = EINVAL; + return -1; + } +@@ -69,9 +70,9 @@ __sigprocmask (how, set, oset) + ss->blocked &= ~_SIG_CANT_MASK; + } + +- pending = ss->pending & ~ss->blocked; ++ pending = _hurd_sigstate_pending (ss) & ~ss->blocked; + +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + if (oset != NULL) + *oset = old; +diff --git a/sysdeps/mach/hurd/sigsuspend.c b/sysdeps/mach/hurd/sigsuspend.c +index 7e32472..2e55e30 100644 +--- a/sysdeps/mach/hurd/sigsuspend.c ++++ b/sysdeps/mach/hurd/sigsuspend.c +@@ -1,5 +1,5 @@ +-/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2002, 2007 +- Free Software Foundation, Inc. ++/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2002, 2007, ++ 2011 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + +@@ -43,7 +43,7 @@ __sigsuspend (set) + + ss = _hurd_self_sigstate (); + +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + + oldmask = ss->blocked; + if (set != NULL) +@@ -51,11 +51,11 @@ __sigsuspend (set) + ss->blocked = newmask & ~_SIG_CANT_MASK; + + /* Notice if any pending signals just became unblocked. */ +- pending = ss->pending & ~ss->blocked; ++ pending = _hurd_sigstate_pending (ss) & ~ss->blocked; + + /* Tell the signal thread to message us when a signal arrives. */ + ss->suspended = wait; +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + if (pending) + /* Tell the signal thread to check for pending signals. */ +@@ -66,10 +66,11 @@ __sigsuspend (set) + MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); + __mach_port_destroy (__mach_task_self (), wait); + +- __spin_lock (&ss->lock); +- ss->blocked = oldmask; /* Restore the old mask. */ +- pending = ss->pending & ~ss->blocked; /* Again check for pending signals. */ +- __spin_unlock (&ss->lock); ++ /* Restore the old mask and check for pending signals again. */ ++ _hurd_sigstate_lock (ss); ++ ss->blocked = oldmask; ++ pending = _hurd_sigstate_pending(ss) & ~ss->blocked; ++ _hurd_sigstate_unlock (ss); + + if (pending) + /* Tell the signal thread to check for pending signals. */ +diff --git a/sysdeps/mach/hurd/sigwait.c b/sysdeps/mach/hurd/sigwait.c +index 9794076..af50f74 100644 +--- a/sysdeps/mach/hurd/sigwait.c ++++ b/sysdeps/mach/hurd/sigwait.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1996,97,2001,02 Free Software Foundation, Inc. ++/* Copyright (C) 1996,97,2001,2002,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -28,7 +28,7 @@ int + __sigwait (const sigset_t *set, int *sig) + { + struct hurd_sigstate *ss; +- sigset_t mask, ready; ++ sigset_t mask, ready, blocked; + int signo = 0; + struct hurd_signal_preemptor preemptor; + jmp_buf buf; +@@ -50,8 +50,8 @@ __sigwait (const sigset_t *set, int *sig) + /* Make sure this is all kosher */ + assert (__sigismember (&mask, signo)); + +- /* Make sure this signal is unblocked */ +- __sigdelset (&ss->blocked, signo); ++ /* Restore the blocking mask. */ ++ ss->blocked = blocked; + + return pe->handler; + } +@@ -72,10 +72,11 @@ __sigwait (const sigset_t *set, int *sig) + __sigemptyset (&mask); + + ss = _hurd_self_sigstate (); +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + + /* See if one of these signals is currently pending. */ +- __sigandset (&ready, &ss->pending, &mask); ++ sigset_t pending = _hurd_sigstate_pending (ss); ++ __sigandset (&ready, &pending, &mask); + if (! __sigisemptyset (&ready)) + { + for (signo = 1; signo < NSIG; signo++) +@@ -103,7 +104,11 @@ __sigwait (const sigset_t *set, int *sig) + preemptor.next = ss->preemptors; + ss->preemptors = &preemptor; + +- __spin_unlock (&ss->lock); ++ /* Unblock the expected signals */ ++ blocked = ss->blocked; ++ ss->blocked &= ~mask; ++ ++ _hurd_sigstate_unlock (ss); + + /* Wait. */ + __mach_msg (&msg, MACH_RCV_MSG, 0, sizeof (msg), wait, +@@ -114,7 +119,7 @@ __sigwait (const sigset_t *set, int *sig) + { + assert (signo); + +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + + /* Delete our preemptor. */ + assert (ss->preemptors == &preemptor); +@@ -123,7 +128,7 @@ __sigwait (const sigset_t *set, int *sig) + + + all_done: +- spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + __mach_port_destroy (__mach_task_self (), wait); + *sig = signo; +diff --git a/sysdeps/mach/hurd/spawni.c b/sysdeps/mach/hurd/spawni.c +index 244ca2d..373da8d 100644 +--- a/sysdeps/mach/hurd/spawni.c ++++ b/sysdeps/mach/hurd/spawni.c +@@ -1,5 +1,5 @@ + /* spawn a new process running an executable. Hurd version. +- Copyright (C) 2001,02,04 Free Software Foundation, Inc. ++ Copyright (C) 2001,2002,2004,2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -239,26 +239,29 @@ __spawni (pid_t *pid, const char *file, + assert (! __spin_lock_locked (&ss->critical_section_lock)); + __spin_lock (&ss->critical_section_lock); + +- __spin_lock (&ss->lock); ++ _hurd_sigstate_lock (ss); + ints[INIT_SIGMASK] = ss->blocked; +- ints[INIT_SIGPENDING] = ss->pending; ++ ints[INIT_SIGPENDING] = _hurd_sigstate_pending (ss); /* XXX really? */ + ints[INIT_SIGIGN] = 0; + /* Unless we were asked to reset all handlers to SIG_DFL, + pass down the set of signals that were set to SIG_IGN. */ +- if ((flags & POSIX_SPAWN_SETSIGDEF) == 0) +- for (i = 1; i < NSIG; ++i) +- if (ss->actions[i].sa_handler == SIG_IGN) +- ints[INIT_SIGIGN] |= __sigmask (i); +- +- /* We hold the sigstate lock until the exec has failed so that no signal +- can arrive between when we pack the blocked and ignored signals, and +- when the exec actually happens. A signal handler could change what ++ { ++ struct sigaction *actions = _hurd_sigstate_actions (ss); ++ if ((flags & POSIX_SPAWN_SETSIGDEF) == 0) ++ for (i = 1; i < NSIG; ++i) ++ if (actions[i].sa_handler == SIG_IGN) ++ ints[INIT_SIGIGN] |= __sigmask (i); ++ } ++ ++ /* We hold the critical section lock until the exec has failed so that no ++ signal can arrive between when we pack the blocked and ignored signals, ++ and when the exec actually happens. A signal handler could change what + signals are blocked and ignored. Either the change will be reflected + in the exec, or the signal will never be delivered. Setting the + critical section flag avoids anything we call trying to acquire the + sigstate lock. */ + +- __spin_unlock (&ss->lock); ++ _hurd_sigstate_unlock (ss); + + /* Set signal mask. */ + if ((flags & POSIX_SPAWN_SETSIGMASK) != 0) --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-pthread-unsupported-stubs.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-pthread-unsupported-stubs.diff @@ -0,0 +1,13 @@ +There are additional stubs in libpthread. +--- + include/stubs-biarch.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/include/stubs-biarch.h ++++ b/include/stubs-biarch.h +@@ -10,3 +10,5 @@ + #else + # error "unexpected value for __WORDSIZE macro" + #endif ++ ++#include --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-critical-sections.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-critical-sections.diff @@ -0,0 +1,61 @@ +Missing critical region locks. + +http://sources.redhat.com/ml/libc-alpha/2009-01/msg00030.html + +--- + hurd/hurd/fd.h | 2 ++ + sysdeps/mach/hurd/dirfd.c | 3 +++ + sysdeps/mach/hurd/opendir.c | 2 ++ + 3 files changed, 7 insertions(+) + +--- a/hurd/hurd/fd.h ++++ b/hurd/hurd/fd.h +@@ -68,6 +68,7 @@ + { + struct hurd_fd *descriptor; + ++ HURD_CRITICAL_BEGIN; + __mutex_lock (&_hurd_dtable_lock); + if (fd < 0 || fd >= _hurd_dtablesize) + descriptor = NULL; +@@ -90,6 +91,7 @@ + } + } + __mutex_unlock (&_hurd_dtable_lock); ++ HURD_CRITICAL_END; + + return descriptor; + } +--- a/sysdeps/mach/hurd/dirfd.c ++++ b/sysdeps/mach/hurd/dirfd.c +@@ -26,6 +26,8 @@ + dirfd (DIR *dirp) + { + int fd; ++ ++ HURD_CRITICAL_BEGIN; + __mutex_lock (&_hurd_dtable_lock); + for (fd = 0; fd < _hurd_dtablesize; ++fd) + if (_hurd_dtable[fd] == dirp->__fd) +@@ -36,6 +38,7 @@ + fd = -1; + } + __mutex_unlock (&_hurd_dtable_lock); ++ HURD_CRITICAL_END; + + return fd; + } +--- a/sysdeps/mach/hurd/opendir.c ++++ b/sysdeps/mach/hurd/opendir.c +@@ -51,9 +51,11 @@ + return NULL; + + /* Set the descriptor to close on exec. */ ++ HURD_CRITICAL_BEGIN; + __spin_lock (&d->port.lock); + d->flags |= FD_CLOEXEC; + __spin_unlock (&d->port.lock); ++ HURD_CRITICAL_END; + + dirp->__fd = d; + dirp->__data = dirp->__ptr = NULL; --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-unwind-resume.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-unwind-resume.diff @@ -0,0 +1,98 @@ +Unwind resume support + +--- + sysdeps/mach/hurd/Makefile | 12 ++++++ + sysdeps/mach/hurd/rt-unwind-resume.c | 1 + sysdeps/mach/hurd/unwind-resume.c | 64 +++++++++++++++++++++++++++++++++++ + 3 files changed, 77 insertions(+) + +--- /dev/null ++++ b/sysdeps/mach/hurd/rt-unwind-resume.c +@@ -0,0 +1 @@ ++#include +--- /dev/null ++++ b/sysdeps/mach/hurd/unwind-resume.c +@@ -0,0 +1,64 @@ ++/* Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Jakub Jelinek . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public License as ++ published by the Free Software Foundation; either version 2.1 of the ++ License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; see the file COPYING.LIB. If not, ++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. */ ++ ++#include ++#include ++#include ++ ++static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); ++static _Unwind_Reason_Code (*libgcc_s_personality) ++ (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, ++ struct _Unwind_Context *); ++ ++static void ++init (void) ++{ ++ void *resume, *personality; ++ void *handle; ++ ++ handle = __libc_dlopen ("libgcc_s.so.1"); ++ ++ if (handle == NULL ++ || (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL ++ || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL) ++ __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n"); ++ ++ libgcc_s_resume = resume; ++ libgcc_s_personality = personality; ++} ++ ++void ++_Unwind_Resume (struct _Unwind_Exception *exc) ++{ ++ if (__builtin_expect (libgcc_s_resume == NULL, 0)) ++ init (); ++ libgcc_s_resume (exc); ++} ++ ++_Unwind_Reason_Code ++__gcc_personality_v0 (int version, _Unwind_Action actions, ++ _Unwind_Exception_Class exception_class, ++ struct _Unwind_Exception *ue_header, ++ struct _Unwind_Context *context) ++{ ++ if (__builtin_expect (libgcc_s_personality == NULL, 0)) ++ init (); ++ return libgcc_s_personality (version, actions, exception_class, ++ ue_header, context); ++} +--- a/sysdeps/mach/hurd/Makefile ++++ b/sysdeps/mach/hurd/Makefile +@@ -211,4 +211,16 @@ + net/route.h + endif + ++ifeq ($(subdir),csu) ++routines += unwind-resume ++shared-only-routines += unwind-resume ++CFLAGS-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables ++endif ++ ++ifeq ($(subdir),rt) ++librt-sysdep_routines += rt-unwind-resume ++librt-shared-only-routines += rt-unwind-resume ++CFLAGS-rt-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables ++endif ++ + endif # in-Makerules --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-ioctl-unsigned-size_t.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-ioctl-unsigned-size_t.diff @@ -0,0 +1,49 @@ +Add some basic types for ioctls. + +http://sources.redhat.com/ml/libc-alpha/2007-07/msg00078.html + +--- + sysdeps/mach/hurd/bits/ioctls.h | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +--- a/sysdeps/mach/hurd/bits/ioctls.h ++++ b/sysdeps/mach/hurd/bits/ioctls.h +@@ -149,9 +149,26 @@ + #define _IOT_SIMPLE(type) _IOT (_IOTS (type), 1, 0, 0, 0, 0) + + /* Basic C types. */ +-#define _IOT__IOTBASE_int _IOT_SIMPLE (int) + #define _IOT__IOTBASE_char _IOT_SIMPLE (char) + #define _IOT__IOTBASE_short _IOT_SIMPLE (short) ++#define _IOT__IOTBASE_int _IOT_SIMPLE (int) ++#define _IOT__IOTBASE_long _IOT_SIMPLE (long) ++#define _IOT_char _IOT_SIMPLE (char) ++#define _IOT_short _IOT_SIMPLE (short) ++#define _IOT_int _IOT_SIMPLE (int) ++#define _IOT_long _IOT_SIMPLE (long) ++ ++#define _IOT__IOTBASE_int8_t _IOT_SIMPLE (int8_t) ++#define _IOT__IOTBASE_uint8_t _IOT_SIMPLE (uint8_t) ++#define _IOT__IOTBASE_int16_t _IOT_SIMPLE (int16_t) ++#define _IOT__IOTBASE_uint16_t _IOT_SIMPLE (uint16_t) ++#define _IOT__IOTBASE_int32_t _IOT_SIMPLE (int32_t) ++#define _IOT__IOTBASE_uint32_t _IOT_SIMPLE (uint32_t) ++#define _IOT__IOTBASE_int64_t _IOT_SIMPLE (int64_t) ++#define _IOT__IOTBASE_uint64_t _IOT_SIMPLE (uint64_t) ++ ++#define _IOT__IOTBASE_size_t _IOT_SIMPLE (size_t) ++#define _IOT__IOTBASE_ssize_t _IOT_SIMPLE (ssize_t) + + + /* Standard flavors of ioctls. +@@ -174,6 +182,10 @@ + #define _IOC_ENCODE_TYPE_1(typespec) _IOC_ENCODE_TYPE_2(typespec) + #define _IOC_ENCODE_TYPE_2(typespec) _IOT_##typespec + ++/* Also, ignore signedness. */ ++#define _IOTBASE_unsigned ++#define _IOTBASE_signed ++ + + /* ioctls verbatim from 4.4 . */ + --- eglibc-2.13.orig/debian/patches/hurd-i386/cvs-psiginfo.diff +++ eglibc-2.13/debian/patches/hurd-i386/cvs-psiginfo.diff @@ -0,0 +1,33 @@ +2011-02-16 Samuel Thibault + + * stdio-common/psiginfo.c (psiginfo): Check pinfo->si_signo against + SIGRTMIN and SIGRTMAX and print information in that case only when + SIGRTMIN is defined. + +--- + stdio-common/psiginfo.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) +--- a/stdio-common/psiginfo.c ++++ b/stdio-common/psiginfo.c +@@ -86,8 +86,12 @@ + const char *desc; + if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG + && ((desc = INTUSE(_sys_siglist)[pinfo->si_signo]) != NULL +- || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX))) ++#ifdef SIGRTMIN ++ || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX) ++#endif ++ )) + { ++#ifdef SIGRTMIN + if (desc == NULL) + { + if (pinfo->si_signo - SIGRTMIN < SIGRTMAX - pinfo->si_signo) +@@ -106,6 +110,7 @@ + } + } + else ++#endif + fprintf (fp, "%s (", _(desc)); + + const char *base = NULL; --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-locarchive.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-locarchive.diff @@ -0,0 +1,43 @@ +Dirty hack to fix installation of locales-all: instead of just locking the +archive extension (which is not supported on hurd-i386), lock it all. + +--- + locale/programs/locarchive.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +--- a/locale/programs/locarchive.c ++++ b/locale/programs/locarchive.c +@@ -416,7 +416,16 @@ + } + + /* Lock the new file. */ ++#ifdef __GNU__ ++ struct flock fl; ++ fl.l_whence = SEEK_SET; ++ fl.l_start = 0; ++ fl.l_len = 0; ++ fl.l_type = F_WRLCK; ++ if (fcntl(fd, F_SETLKW, &fl) != 0) ++#else + if (lockf64 (fd, F_LOCK, total) != 0) ++#endif + { + int errval = errno; + unlink (fname); +@@ -564,7 +573,16 @@ + error (EXIT_FAILURE, errno, _("cannot stat locale archive \"%s\""), + archivefname); + ++#ifdef __GNU__ ++ struct flock fl; ++ fl.l_whence = SEEK_SET; ++ fl.l_start = 0; ++ fl.l_len = 0; ++ fl.l_type = F_WRLCK; ++ if (!readonly && fcntl(fd, F_SETLKW, &fl) == -1) ++#else + if (!readonly && lockf64 (fd, F_LOCK, sizeof (struct locarhead)) == -1) ++#endif + { + close (fd); + --- eglibc-2.13.orig/debian/patches/hurd-i386/local-enable-ldconfig.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-enable-ldconfig.diff @@ -0,0 +1,77 @@ +# DP: Description: Enable ldconfig and such on hurd-i386 +# DP: Author: Jeff Bailey +# DP: Related Bugs: #309489 +# DP: Upstream status: Not submitted +# DP: Status Details: Upstream disagrees with this patch, but I'm +# DP: putting it in so that we have expected Debian behaviour on the +# DP: Hurd. We should review this when the ELF standard supports runpath. +# DP: Date: 08 Apr 2003 + +--- + elf/ldconfig.c | 4 ++++ + sysdeps/mach/hurd/configure | 2 ++ + sysdeps/mach/hurd/configure.in | 2 ++ + sysdeps/mach/hurd/dl-cache.c | 29 ----------------------------- + 4 files changed, 8 insertions(+), 29 deletions(-) + +--- a/sysdeps/mach/hurd/configure ++++ b/sysdeps/mach/hurd/configure +@@ -87,3 +87,5 @@ + $as_echo "$as_me: error: Hurd headers not installed or too old" >&2;} + { (exit 1); exit 1; }; } + fi ++ ++use_ldconfig=yes +--- a/sysdeps/mach/hurd/configure.in ++++ b/sysdeps/mach/hurd/configure.in +@@ -36,3 +36,5 @@ + if test "x$libc_cv_hurd_version" != xok; then + AC_MSG_ERROR(Hurd headers not installed or too old) + fi ++ ++use_ldconfig=yes +--- a/sysdeps/mach/hurd/dl-cache.c ++++ /dev/null +@@ -1,29 +0,0 @@ +-/* Stubby version of dl-cache; the Hurd doesn't support this "feature". +- Copyright (C) 1996, 1997 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-const char * +-_dl_load_cache_lookup (const char *name) +-{ +- return 0; +-} +- +-void +-_dl_unload_cache (void) +-{ +-} +--- a/elf/ldconfig.c ++++ b/elf/ldconfig.c +@@ -59,6 +59,10 @@ + + #define PACKAGE _libc_intl_domainname + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + static const struct + { + const char *name; --- eglibc-2.13.orig/debian/patches/hurd-i386/local-ED.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-ED.diff @@ -0,0 +1,18 @@ +This is a long funny story, but even if it's standard-compliant, it poses too +many problems. + +diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h +index 3b6fe76..b1fa965 100644 +--- a/sysdeps/mach/hurd/bits/errno.h ++++ b/sysdeps/mach/hurd/bits/errno.h +@@ -182,8 +182,10 @@ enum __error_t_codes + #define EBACKGROUND _HURD_ERRNO (100)/* Inappropriate operation for background process */ + EDIED = _HURD_ERRNO (101), + #define EDIED _HURD_ERRNO (101)/* Translator died */ ++#if 0 + ED = _HURD_ERRNO (102), + #define ED _HURD_ERRNO (102)/* ? */ ++#endif + EGREGIOUS = _HURD_ERRNO (103), + #define EGREGIOUS _HURD_ERRNO (103)/* You really blew it this time */ + EIEIO = _HURD_ERRNO (104), --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-pthread.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-pthread.diff @@ -0,0 +1,28 @@ +Add LIBPTHREAD_SO macro to gnu/lib-names.h and disable nscd build +--- + nscd/Makefile | 2 +- + scripts/lib-names.awk | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +--- a/scripts/lib-names.awk ++++ b/scripts/lib-names.awk +@@ -61,6 +61,8 @@ + cmd = "LC_ALL=C sort"; print lines["DEFAULT"] | cmd; close(cmd); + } + ++ print "#define LIBPTHREAD_SO \"libpthread.so.0.3\"" ++ + print ""; + print "#endif /* gnu/lib-names.h */" + } +--- a/nscd/Makefile ++++ b/nscd/Makefile +@@ -43,7 +43,7 @@ + # own copy of nis_hash. + nscd-modules += nis_hash + endif +-ifeq ($(have-thread-library),yes) ++ifeq ($(have-thread-library),yesreallyyes) + + ifneq (yesyes,$(have-fpie)$(build-shared)) + others-$(OPTION_EGLIBC_INET) += nscd --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-sysvshm.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-sysvshm.diff @@ -0,0 +1,775 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Implement SysV shared memory for GNU/Hurd. +# DP: Dpatch author: Michael Banck +# DP: Patch author: Marcus Brinkmann +# DP: Upstream status: Unsubmitted, copyright assignments needed +# DP: Date: 2005-07-11 + +2005-07-11 Marcus Brinkmann + + * hurd/Makefile (routines): Add sysvshm. + (distribute): Add sysvshm.h. + * hurd/sysvshm.h: New file. + * hurd/sysvshm.c: New file. + * sysdeps/mach/hurd/bits/stat.h (S_IMMAP0): New macro. + (S_ISPARE): Unset the S_IMMAP0 flag. + * sysdeps/mach/hurd/ftok.c: New file. + * sysdeps/mach/hurd/shmat.c: New file. + * sysdeps/mach/hurd/shmctl.c: New file. + * sysdeps/mach/hurd/shmdt.c: New file. + * sysdeps/mach/hurd/bits/posix_opt.h: Define _XOPEN_SHM to 1. + +--- + hurd/Makefile | 3 + hurd/sysvshm.c | 96 ++++++++++++++ + hurd/sysvshm.h | 47 +++++++ + sysdeps/mach/hurd/bits/posix_opt.h | 4 + sysdeps/mach/hurd/ftok.c | 43 ++++++ + sysdeps/mach/hurd/shmat.c | 78 +++++++++++ + sysdeps/mach/hurd/shmctl.c | 132 +++++++++++++++++++ + sysdeps/mach/hurd/shmdt.c | 51 +++++++ + sysdeps/mach/hurd/shmget.c | 245 +++++++++++++++++++++++++++++++++++++ + 9 files changed, 696 insertions(+), 3 deletions(-) + +--- a/hurd/Makefile ++++ b/hurd/Makefile +@@ -60,6 +60,7 @@ + vpprintf \ + ports-get ports-set hurdports hurdmsg \ + errno-loc \ ++ sysvshm \ + $(sig) $(dtable) $(inlines) port-cleanup report-wait xattr + sig = hurdsig hurdfault siginfo hurd-raise preempt-sig \ + trampoline longjmp-ts catch-exc exc2signal hurdkill sigunwind \ +@@ -68,7 +69,7 @@ + getdport openport \ + fd-close fd-read fd-write hurdioctl ctty-input ctty-output + inlines = $(inline-headers:%.h=%-inlines) +-distribute = hurdstartup.h hurdfault.h hurdhost.h \ ++distribute = hurdstartup.h hurdfault.h hurdhost.h sysvshm.h \ + faultexc.defs intr-rpc.defs intr-rpc.h intr-msg.h Notes + + # XXX this is a temporary hack; see hurdmalloc.h +--- /dev/null ++++ b/hurd/sysvshm.c +@@ -0,0 +1,96 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* Description of an shm attachment. */ ++struct sysvshm_attach ++{ ++ /* Linked list. */ ++ struct sysvshm_attach *next; ++ ++ /* Map address. */ ++ void *addr; ++ ++ /* Map size. */ ++ size_t size; ++}; ++ ++/* List of attachments. */ ++static struct sysvshm_attach *attach_list; ++ ++/* A lock to protect the linked list of shared memory attachments. */ ++static struct mutex sysvshm_lock = MUTEX_INITIALIZER; ++ ++ ++/* Adds a segment attachment. */ ++error_t ++__sysvshm_add (void *addr, size_t size) ++{ ++ struct sysvshm_attach *shm; ++ ++ shm = malloc (sizeof (*shm)); ++ if (!shm) ++ return errno; ++ ++ __mutex_lock (&sysvshm_lock); ++ shm->addr = addr; ++ shm->size = size; ++ shm->next = attach_list; ++ attach_list = shm; ++ __mutex_unlock (&sysvshm_lock); ++ ++ return 0; ++} ++ ++/* Removes a segment attachment. Returns its size if found, or EINVAL ++ otherwise. */ ++error_t ++__sysvshm_remove (void *addr, size_t *size) ++{ ++ struct sysvshm_attach *shm; ++ struct sysvshm_attach **pshm = &attach_list; ++ ++ __mutex_lock (&sysvshm_lock); ++ shm = attach_list; ++ while (shm) ++ { ++ shm = *pshm; ++ if (shm->addr == addr) ++ { ++ *pshm = shm->next; ++ *size = shm->size; ++ __mutex_unlock (&sysvshm_lock); ++ return 0; ++ } ++ pshm = &shm->next; ++ shm = shm->next; ++ } ++ __mutex_unlock (&sysvshm_lock); ++ return EINVAL; ++} +--- /dev/null ++++ b/hurd/sysvshm.h +@@ -0,0 +1,47 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++/* The area (from top to bottom) that is used for private keys. These ++ are all keys that have the second highest bit set. */ ++#define SHM_PRIV_KEY_START INT_MAX ++#define SHM_PRIV_KEY_END ((INT_MAX / 2) + 1) ++ ++#define SHM_PREFIX "shm-" ++#define SHM_DIR _PATH_DEV "shm/" ++ ++/* The maximum number of characters in a shared memory segment file name. ++ 32 is the max number of characters in a 128 bit number in hex. */ ++#if __WORDSIZE > 128 ++#error Need to increase SHM_NAMEMAX. ++#else ++#define SHM_NAMEMAX (sizeof (SHM_PREFIX) - 1 + 32 + 1) ++#endif ++ ++/* Use this with printf and its variants. */ ++#define SHM_NAMEPRI SHM_PREFIX "%0x" ++ ++ ++/* Adds a segment attachment. */ ++error_t __sysvshm_add (void *addr, size_t size); ++ ++/* Removes a segment attachment. Returns its size if found, or EINVAL ++ otherwise. */ ++error_t __sysvshm_remove (void *addr, size_t *size); +--- /dev/null ++++ b/sysdeps/mach/hurd/ftok.c +@@ -0,0 +1,43 @@ ++/* Copyright (C) 1995, 1996, 2000, 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , August 1995. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++ ++ ++/* In the Hurd, we use the second-to-most-significant bit as flag for ++ private keys. We use a different order of the components so that ++ the biggest one---the inode number---is affected by this. */ ++ ++key_t ++ftok (pathname, proj_id) ++ const char *pathname; ++ int proj_id; ++{ ++ struct stat64 st; ++ key_t key; ++ ++ if (__xstat64 (_STAT_VER, pathname, &st) < 0) ++ return (key_t) -1; ++ ++ key = ((st.st_dev & 0xff) | ((proj_id & 0xff) << 8) ++ | ((st.st_ino & 0x3fff) << 16)); ++ ++ return key; ++} +--- /dev/null ++++ b/sysdeps/mach/hurd/shmat.c +@@ -0,0 +1,78 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "sysvshm.h" ++ ++/* Attach the shared memory segment associated with SHMID to the data ++ segment of the calling process. SHMADDR and SHMFLG determine how ++ and where the segment is attached. */ ++void * ++__shmat (int shmid, const void *shmaddr, int shmflg) ++{ ++ error_t err; ++ char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX]; ++ int fd; ++ void *addr; ++ struct stat statbuf; ++ int res; ++ ++ sprintf (filename, SHM_DIR SHM_NAMEPRI, shmid); ++ fd = __open (filename, (shmflg & SHM_RDONLY) ? O_RDONLY : O_RDWR); ++ if (fd < 0) ++ { ++ if (errno == ENOENT) ++ errno = EINVAL; ++ return (void *) -1; ++ } ++ ++ res = __fstat (fd, &statbuf); ++ if (res < 0) ++ { ++ __close (fd); ++ return (void *) -1; ++ } ++ ++ addr = __mmap ((void *) shmaddr, statbuf.st_size, ++ PROT_READ | ((shmflg & SHM_RDONLY) ? 0 : PROT_WRITE), ++ MAP_SHARED, fd, 0); ++ __close (fd); ++ if (addr == MAP_FAILED) ++ return (void *) -1; ++ ++ err = __sysvshm_add (addr, statbuf.st_size); ++ if (err) ++ { ++ munmap (addr, statbuf.st_size); ++ return (void *) -1; ++ } ++ ++ return addr; ++} ++ ++weak_alias(__shmat, shmat) +--- /dev/null ++++ b/sysdeps/mach/hurd/shmctl.c +@@ -0,0 +1,132 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "sysvshm.h" ++ ++/* Provide operations to control over shared memory segments. */ ++int ++__shmctl (int id, int cmd, struct shmid_ds *buf) ++{ ++ error_t err = 0; ++ int fd; ++ int res; ++ char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX]; ++ struct stat statbuf; ++ ++ sprintf (filename, SHM_DIR SHM_NAMEPRI, id); ++ /* SysV requires read access for IPC_STAT. */ ++ fd = __open (filename, O_NORW); ++ if (fd < 0) ++ { ++ if (errno == ENOENT) ++ errno = EINVAL; ++ return -1; ++ } ++ ++ res = __fstat (fd, &statbuf); ++ if (res < 0) ++ { ++ err = errno; ++ __close (fd); ++ errno = err; ++ return -1; ++ } ++ ++ switch (cmd) ++ { ++ case IPC_STAT: ++ ++ buf->shm_perm.__key = id; ++ buf->shm_perm.uid = statbuf.st_uid; ++ buf->shm_perm.gid = statbuf.st_gid; ++ ++ /* We do not support the creator. */ ++ buf->shm_perm.cuid = statbuf.st_uid; ++ buf->shm_perm.cgid = statbuf.st_gid; ++ ++ /* We just want the protection bits. */ ++ buf->shm_perm.mode = statbuf.st_mode & 0777; ++ /* Hopeless. We do not support a sequence number. */ ++ buf->shm_perm.__seq = statbuf.st_ino; ++ buf->shm_segsz = statbuf.st_size; ++ ++ /* Hopeless. We do not support any of these. */ ++ buf->shm_atime = statbuf.st_atime; ++ buf->shm_dtime = statbuf.st_mtime; ++ /* Well, this comes at least close. */ ++ buf->shm_ctime = statbuf.st_ctime; ++ ++ /* We do not support the PID. */ ++ buf->shm_cpid = 0; ++ buf->shm_lpid = 0; ++ ++ if (statbuf.st_mode & S_IMMAP0) ++ buf->shm_nattch = 0; ++ else ++ /* 42 is the answer. Of course this is bogus, but for most ++ applications, this should be fine. */ ++ buf->shm_nattch = 42; ++ ++ break; ++ ++ case IPC_SET: ++ if (statbuf.st_uid != buf->shm_perm.uid ++ || statbuf.st_gid != buf->shm_perm.gid) ++ { ++ res = __fchown (fd, ++ (statbuf.st_uid != buf->shm_perm.uid) ++ ? buf->shm_perm.uid : -1, ++ (statbuf.st_gid != buf->shm_perm.gid) ++ ? buf->shm_perm.gid : -1); ++ if (res < 0) ++ err = errno; ++ } ++ ++ if (!err && statbuf.st_mode & 0777 != buf->shm_perm.mode & 0777) ++ { ++ res = __fchmod (fd, (statbuf.st_mode & ~0777) ++ | (buf->shm_perm.mode & 0777)); ++ if (res < 0) ++ err = errno; ++ } ++ break; ++ ++ case IPC_RMID: ++ res = __unlink (filename); ++ /* FIXME: Check error (mapping ENOENT to EINVAL). */ ++ break; ++ ++ default: ++ err = EINVAL; ++ } ++ ++ __close (fd); ++ errno = err; ++ return err ? -1 : 0; ++} ++ ++weak_alias(__shmctl, shmctl) +--- /dev/null ++++ b/sysdeps/mach/hurd/shmdt.c +@@ -0,0 +1,51 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "sysvshm.h" ++ ++/* Detach shared memory segment starting at address specified by ++ SHMADDR from the caller's data segment. */ ++int ++__shmdt (const void *shmaddr) ++{ ++ error_t err; ++ size_t size; ++ ++ err = __sysvshm_remove ((void *) shmaddr, &size); ++ if (err) ++ { ++ errno = err; ++ return -1; ++ } ++ ++ __munmap ((void *) shmaddr, size); ++ return 0; ++} ++ ++weak_alias(__shmdt, shmdt) +--- /dev/null ++++ b/sysdeps/mach/hurd/shmget.c +@@ -0,0 +1,242 @@ ++/* Copyright (C) 2005 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#include "sysvshm.h" ++ ++/* Create a new shared memory segment file without linking it into the ++ filesystem. Return the directory and file ports in R_DIR and R_FILE. */ ++static error_t ++create_shm_file (size_t size, int flags, file_t *r_dir, file_t *r_file) ++{ ++ error_t err; ++ file_t dir; ++ file_t file; ++ ++ flags &= 0777; ++ ++ /* Get a port to the directory that will contain the file. */ ++ dir = __file_name_lookup (SHM_DIR, 0, 0); ++ if (dir == MACH_PORT_NULL) ++ return errno; ++ ++ /* Create an unnamed file in the directory. */ ++ err = __dir_mkfile (dir, O_RDWR, flags, &file); ++ if (err) ++ { ++ __mach_port_deallocate (__mach_task_self (), dir); ++ return err; ++ } ++ ++ err = __file_set_size (file, size); ++ if (err) ++ { ++ __mach_port_deallocate (__mach_task_self (), file); ++ __mach_port_deallocate (__mach_task_self (), dir); ++ ++ return err; ++ } ++ ++ *r_dir = dir; ++ *r_file = file; ++ ++ return 0; ++} ++ ++ ++/* Open the shared memory segment *R_KEY and return a file descriptor ++ to it in R_FD. If KEY is IPC_PRIVATE, use a private key and return ++ it in R_KEY. */ ++static error_t ++get_exclusive (int shmflags, size_t size, key_t *r_key, int *r_fd) ++{ ++ error_t err; ++ file_t dir; ++ file_t file; ++ char filename[SHM_NAMEMAX]; ++ key_t key = *r_key; ++ bool is_private; ++ ++ /* Create the shared memory segment. */ ++ err = create_shm_file (size, shmflags, &dir, &file); ++ if (err) ++ return err; ++ ++ if (key == IPC_PRIVATE) ++ { ++ is_private = true; ++ key = SHM_PRIV_KEY_START; ++ ++ /* Try to link the shared memory segment into the filesystem ++ (exclusively). Private segments have negative keys. */ ++ do ++ { ++ sprintf (filename, SHM_NAMEPRI, key); ++ err = __dir_link (dir, file, filename, 1); ++ if (!err) ++ { ++ /* We are done. */ ++ *r_key = key; ++ break; ++ } ++ else if (err == EEXIST) ++ { ++ /* Check if we ran out of keys. If not, try again with new ++ key. */ ++ if (key == SHM_PRIV_KEY_END) ++ err = ENOSPC; ++ else ++ err = 0; ++ ++ key--; ++ } ++ } ++ while (!err); ++ } ++ else ++ { ++ /* Try to link the shared memory segment into the filesystem ++ (exclusively) under the given key. */ ++ sprintf (filename, SHM_NAMEPRI, key); ++ err = __dir_link (dir, file, filename, 1); ++ } ++ ++ __mach_port_deallocate (__mach_task_self (), dir); ++ ++ if (!err) ++ { ++ int fd; ++ ++ /* Get a file descriptor for that port. */ ++ fd = _hurd_intern_fd (file, O_RDWR, 1); /* dealloc on error */ ++ if (fd < 0) ++ err = errno; ++ else ++ *r_fd = fd; ++ } ++ ++ return err; ++} ++ ++ ++/* Open the shared memory segment KEY (creating it if it doesn't yet ++ exist) and return a file descriptor to it in R_FD. */ ++static error_t ++get_shared (int shmflags, size_t size, key_t key, int *r_fd) ++{ ++ error_t err = 0; ++ char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX]; ++ int fd = -1; ++ sprintf (filename, SHM_DIR SHM_NAMEPRI, key); ++ ++ do ++ { ++ fd = __open (filename, O_NORW, shmflags & 0777); ++ ++ if (fd < 0 && errno != ENOENT) ++ /* We give up. */ ++ return errno; ++ else if (fd >= 0) ++ { ++ int res; ++ struct stat statbuf; ++ ++ /* Check the size (we only need to do this if we did not ++ create the shared memory segment file ourselves). */ ++ res = __fstat (fd, &statbuf); ++ if (res < 0) ++ { ++ err = errno; ++ __close (fd); ++ return err; ++ } ++ ++ if (statbuf.st_size < size) ++ { ++ __close (fd); ++ return EINVAL; ++ } ++ } ++ else ++ { ++ /* The memory segment doesn't exist. */ ++ if (shmflags & IPC_CREAT) ++ { ++ /* Try to create it exclusively. */ ++ err = get_exclusive (shmflags, size, &key, &fd); ++ if (err == EEXIST) ++ /* If somebody created it in the meanwhile, just try again. */ ++ err = 0; ++ } ++ else ++ err = ENOENT; ++ } ++ } ++ while (fd < 0 && !err); ++ ++ if (!err) ++ *r_fd = fd; ++ else ++ *r_fd = -1; ++ ++ return err; ++} ++ ++/* Return an identifier for an shared memory segment of at least size ++ SIZE which is associated with KEY. */ ++int ++__shmget (key_t key, size_t size, int shmflags) ++{ ++ error_t err; ++ int fd; ++ ++ if (key == IPC_PRIVATE || shmflags & IPC_EXCL) ++ /* An exclusive shared memory segment must be created. */ ++ err = get_exclusive (shmflags, size, &key, &fd); ++ else ++ err = get_shared (shmflags, size, key, &fd); ++ ++ if (err) ++ { ++ errno = err; ++ return -1; ++ } ++ ++ /* From here, we can't fail. That's important, as otherwise we ++ would need to unlink the file if we created it (in that case, the ++ code above would have to be changed to pass a "created" flag down ++ to the caller). */ ++ ++ __close (fd); ++ ++ return key; ++} ++ ++weak_alias(__shmget, shmget) +--- a/sysdeps/mach/hurd/bits/posix_opt.h ++++ b/sysdeps/mach/hurd/bits/posix_opt.h +@@ -69,8 +69,8 @@ + /* X/Open thread realtime support is not supported. */ + #undef _XOPEN_REALTIME_THREADS + +-/* XPG4.2 shared memory is not supported. */ +-#undef _XOPEN_SHM ++/* XPG4.2 shared memory is supported. */ ++#define _XOPEN_SHM 1 + + /* We do not have the POSIX threads interface. */ + #define _POSIX_THREADS -1 --- eglibc-2.13.orig/debian/patches/hurd-i386/local-madvise_warn.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-madvise_warn.diff @@ -0,0 +1,32 @@ +Do not warn about madvise not being implemented. It does not have any real +semantic anyway, and that brings some -Werror FTBFS. + +--- + misc/madvise.c | 4 ++-- + posix/posix_madvise.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/misc/madvise.c b/misc/madvise.c +index 7a4aa8a..532c874 100644 +--- a/misc/madvise.c ++++ b/misc/madvise.c +@@ -30,5 +30,5 @@ madvise (__ptr_t addr, size_t len, int advice) + return -1; + } + libc_hidden_def (madvise) +-stub_warning (madvise) +-#include ++/* stub_warning (madvise) ++#include */ +diff --git a/posix/posix_madvise.c b/posix/posix_madvise.c +index 6f8d60f..3eba60a 100644 +--- a/posix/posix_madvise.c ++++ b/posix/posix_madvise.c +@@ -28,5 +28,5 @@ posix_madvise (__ptr_t addr, size_t len, int advice) + { + return ENOSYS; + } +-stub_warning (posix_madvise) +-#include ++/* stub_warning (posix_madvise) ++#include */ --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-no-hp-timing.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-no-hp-timing.diff @@ -0,0 +1,54 @@ +2010-08-21 Samuel Thibault + +We don't have support for hp timing for now, even the i686 variant, which needs +to know the CPU speed. +Copied from sysdeps/generic/hp-timing.h + +--- + sysdeps/mach/hurd/hp-timing.h | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +--- /dev/null ++++ b/sysdeps/mach/hurd/hp-timing.h +@@ -0,0 +1,41 @@ ++/* High precision, low overhead timing functions. Generic version. ++ Copyright (C) 1998, 2000 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 1998. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _HP_TIMING_H ++#define _HP_TIMING_H 1 ++ ++/* We don't have support for high precision timing for now. */ ++ ++/* Provide dummy definitions. */ ++#define HP_TIMING_AVAIL (0) ++#define HP_TIMING_INLINE (0) ++typedef int hp_timing_t; ++#define HP_TIMING_ZERO(Var) ++#define HP_TIMING_NOW(var) ++#define HP_TIMING_DIFF_INIT() ++#define HP_TIMING_DIFF(Diff, Start, End) ++#define HP_TIMING_ACCUM(Sum, Diff) ++#define HP_TIMING_ACCUM_NT(Sum, Diff) ++#define HP_TIMING_PRINT(Buf, Len, Val) ++ ++/* Since this implementation is not available we tell the user about it. */ ++#define HP_TIMING_NONAVAIL 1 ++ ++#endif /* hp-timing.h */ --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-strtoul.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-strtoul.diff @@ -0,0 +1,20 @@ +2007-11-02 Aurelien Jarno + + * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Use + __strtoul_internal instead of strtoul. + +--- + hurd/lookup-retry.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/hurd/lookup-retry.c ++++ b/hurd/lookup-retry.c +@@ -194,7 +194,7 @@ + char *end; + int save = errno; + errno = 0; +- fd = (int) strtoul (&retryname[3], &end, 10); ++ fd = (int) __strtoul_internal (&retryname[3], &end, 10, 0); + if (end == NULL || errno || /* Malformed number. */ + /* Check for excess text after the number. A slash + is valid; it ends the component. Anything else --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-pthread_types.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-pthread_types.diff @@ -0,0 +1,9 @@ +We do have pthread types. +--- + sysdeps/mach/hurd/bits/pthreadtypes.h | 1 + + 1 file changed, 1 insertion(+) + +--- /dev/null ++++ b/sysdeps/mach/hurd/bits/pthreadtypes.h +@@ -0,0 +1 @@ ++#include --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-init-first.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-init-first.diff @@ -0,0 +1,29 @@ +http://www.cygwin.com/ml/libc-alpha/2011-07/msg00116.html + +2011-07-22 Ludovic Courtès + + * sysdeps/mach/hurd/i386/init-first.c (init): Use + `__builtin_return_address' and `__builtin_frame_address' instead + of making assumptions about the location of the return address + relative to DATA. + +--- + ChangeLog | 7 +++++++ + sysdeps/mach/hurd/i386/init-first.c | 4 ++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c +index 7d93638..09af037 100644 +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -257,8 +257,8 @@ init (int *data) + /* Push the user code address on the top of the new stack. It will + be the return address for `init1'; we will jump there with NEWSP + as the stack pointer. */ +- *--newsp = data[-1]; +- ((void **) data)[-1] = switch_stacks; ++ *--newsp = __builtin_return_address (0); ++ * ((void **) __builtin_frame_address (0) + 1) = &switch_stacks; + /* Force NEWSP into %ecx and &init1 into %eax, which are not restored + by function return. */ + asm volatile ("# a %0 c %1" : : "a" (newsp), "c" (&init1)); --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-ioctl-decode-argument.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-ioctl-decode-argument.diff @@ -0,0 +1,65 @@ +=http://www.sourceware.org/bugzilla/show_bug.cgi?id=766 + +2005-07-28 Samuel Thibault + + * ioctl.c (__ioctl): Add handling of parameter-less ioctls. + +2005-07-28 Samuel Thibault + + * ioctls.h (_IOIW): New macro for immediate-write ioctls. + +--- + sysdeps/mach/hurd/bits/ioctls.h | 1 + + sysdeps/mach/hurd/ioctl.c | 16 ++++++++++------ + 2 files changed, 11 insertions(+), 6 deletions(-) + +--- a/sysdeps/mach/hurd/ioctl.c ++++ b/sysdeps/mach/hurd/ioctl.c +@@ -89,7 +89,7 @@ + void *p; + #endif + +- void *arg; ++ void *arg = NULL; + + error_t err; + +@@ -140,7 +140,7 @@ + in (_IOT_COUNT1 (type), _IOT_TYPE1 (type)); + in (_IOT_COUNT2 (type), _IOT_TYPE2 (type)); + } +- else if (_IOC_INOUT (request) == IOC_VOID) ++ else if ((_IOC_INOUT (request) == IOC_VOID) && _IOT_COUNT0 (type)) + { + /* The RPC takes a single integer_t argument. + Rather than pointing to the value, ARG is the value itself. */ +@@ -209,11 +209,15 @@ + return msg.header.RetCode; + } + +- va_list ap; ++ if (_IOT_COUNT0 (type)) ++ { ++ /* Data need either be sent, received, or even both. */ ++ va_list ap; + +- va_start (ap, request); +- arg = va_arg (ap, void *); +- va_end (ap); ++ va_start (ap, request); ++ arg = va_arg (ap, void *); ++ va_end (ap); ++ } + + { + /* Check for a registered handler for REQUEST. */ +--- a/sysdeps/mach/hurd/bits/ioctls.h ++++ b/sysdeps/mach/hurd/bits/ioctls.h +@@ -158,6 +158,7 @@ + _IOT_foobar is defined either in this file, + or where struct foobar is defined. */ + #define _IO(g, n) _IOC (IOC_VOID, (g), (n), 0) ++#define _IOIW(g, n, t) _IOC (IOC_VOID, (g), (n), _IOC_ENCODE_TYPE (t)) + #define _IOR(g, n, t) _IOC (IOC_OUT, (g), (n), _IOC_ENCODE_TYPE (t)) + #define _IOW(g, n, t) _IOC (IOC_IN, (g), (n), _IOC_ENCODE_TYPE (t)) + #define _IOWR(g, n, t) _IOC (IOC_INOUT, (g), (n), _IOC_ENCODE_TYPE (t)) --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-catch-signal.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-catch-signal.diff @@ -0,0 +1,47 @@ +http://sourceware.org/ml/libc-alpha/2010-09/msg00015.html + +2010-09-13 Samuel Thibault + + Fix signal-catching functions. + + We need to restore the signal mask, because else the signal handling + code will have blocked the catched signal and for instance calling + hurd_catch_signal again would then dump core. There was also a trivial + inverted logic. + + * hurd/catch-signal.c (hurd_catch_signal): Use sigsetjmp/siglongjmp + instead of setjmp/longjmp to restore the signal mask. Call sigsetjmp + when handler == SIG_ERR, not when handler != SIG_ERR. + +--- + hurd/catch-signal.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) +--- a/hurd/catch-signal.c ++++ b/hurd/catch-signal.c +@@ -28,9 +28,9 @@ + error_t (*operate) (struct hurd_signal_preemptor *), + sighandler_t handler) + { +- jmp_buf buf; ++ sigjmp_buf buf; + void throw (int signo, long int sigcode, struct sigcontext *scp) +- { longjmp (buf, scp->sc_error ?: EGRATUITOUS); } ++ { siglongjmp (buf, scp->sc_error ?: EGRATUITOUS); } + + struct hurd_signal_preemptor preemptor = + { +@@ -41,12 +41,12 @@ + struct hurd_sigstate *const ss = _hurd_self_sigstate (); + error_t error; + +- if (handler == SIG_ERR) ++ if (handler != SIG_ERR) + /* Not our handler; don't bother saving state. */ + error = 0; + else + /* This returns again with nonzero value when we preempt a signal. */ +- error = setjmp (buf); ++ error = sigsetjmp (buf, 1); + + if (error == 0) + { --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-atomic-no-multiple_threads.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-atomic-no-multiple_threads.diff @@ -0,0 +1,274 @@ +On the Hurd we always at least start the sigthread anyway. Let's avoid forking +the file (which would mean having to maintain it), but it thus can't be applied +upstream as such. + +--- + sysdeps/i386/i486/bits/atomic.h | 107 +++++++++++++--------------------------- + 1 file changed, 37 insertions(+), 70 deletions(-) + +--- a/sysdeps/i386/i486/bits/atomic.h ++++ b/sysdeps/i386/i486/bits/atomic.h +@@ -87,35 +87,26 @@ + + #define __arch_c_compare_and_exchange_val_8_acq(mem, newval, oldval) \ + ({ __typeof (*mem) ret; \ +- __asm __volatile ("cmpl $0, %%gs:%P5\n\t" \ +- "je 0f\n\t" \ +- "lock\n" \ +- "0:\tcmpxchgb %b2, %1" \ ++ __asm __volatile ("lock\n" \ ++ "\tcmpxchgb %b2, %1" \ + : "=a" (ret), "=m" (*mem) \ +- : "q" (newval), "m" (*mem), "0" (oldval), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "q" (newval), "m" (*mem), "0" (oldval)); \ + ret; }) + + #define __arch_c_compare_and_exchange_val_16_acq(mem, newval, oldval) \ + ({ __typeof (*mem) ret; \ +- __asm __volatile ("cmpl $0, %%gs:%P5\n\t" \ +- "je 0f\n\t" \ +- "lock\n" \ +- "0:\tcmpxchgw %w2, %1" \ ++ __asm __volatile ("lock\n" \ ++ "\tcmpxchgw %w2, %1" \ + : "=a" (ret), "=m" (*mem) \ +- : "r" (newval), "m" (*mem), "0" (oldval), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "r" (newval), "m" (*mem), "0" (oldval)); \ + ret; }) + + #define __arch_c_compare_and_exchange_val_32_acq(mem, newval, oldval) \ + ({ __typeof (*mem) ret; \ +- __asm __volatile ("cmpl $0, %%gs:%P5\n\t" \ +- "je 0f\n\t" \ +- "lock\n" \ +- "0:\tcmpxchgl %2, %1" \ ++ __asm __volatile ("lock\n" \ ++ "\tcmpxchgl %2, %1" \ + : "=a" (ret), "=m" (*mem) \ +- : "r" (newval), "m" (*mem), "0" (oldval), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "r" (newval), "m" (*mem), "0" (oldval)); \ + ret; }) + + /* XXX We do not really need 64-bit compare-and-exchange. At least +@@ -148,10 +139,8 @@ + # define __arch_c_compare_and_exchange_val_64_acq(mem, newval, oldval) \ + ({ __typeof (*mem) ret; \ + __asm __volatile ("xchgl %2, %%ebx\n\t" \ +- "cmpl $0, %%gs:%P7\n\t" \ +- "je 0f\n\t" \ + "lock\n" \ +- "0:\tcmpxchg8b %1\n\t" \ ++ "\tcmpxchg8b %1\n\t" \ + "xchgl %2, %%ebx" \ + : "=A" (ret), "=m" (*mem) \ + : "DS" (((unsigned long long int) (newval)) \ +@@ -159,8 +148,7 @@ + "c" (((unsigned long long int) (newval)) >> 32), \ + "m" (*mem), "a" (((unsigned long long int) (oldval)) \ + & 0xffffffff), \ +- "d" (((unsigned long long int) (oldval)) >> 32), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ "d" (((unsigned long long int) (oldval)) >> 32)); \ + ret; }) + # else + # define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ +@@ -177,18 +165,15 @@ + + # define __arch_c_compare_and_exchange_val_64_acq(mem, newval, oldval) \ + ({ __typeof (*mem) ret; \ +- __asm __volatile ("cmpl $0, %%gs:%P7\n\t" \ +- "je 0f\n\t" \ +- "lock\n" \ +- "0:\tcmpxchg8b %1" \ ++ __asm __volatile ("lock\n" \ ++ "\tcmpxchg8b %1" \ + : "=A" (ret), "=m" (*mem) \ + : "b" (((unsigned long long int) (newval)) \ + & 0xffffffff), \ + "c" (((unsigned long long int) (newval)) >> 32), \ + "m" (*mem), "a" (((unsigned long long int) (oldval)) \ + & 0xffffffff), \ +- "d" (((unsigned long long int) (oldval)) >> 32), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ "d" (((unsigned long long int) (oldval)) >> 32)); \ + ret; }) + # endif + #endif +@@ -223,18 +208,15 @@ + if (sizeof (*mem) == 1) \ + __asm __volatile (lock "xaddb %b0, %1" \ + : "=q" (__result), "=m" (*mem) \ +- : "0" (__addval), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "0" (__addval), "m" (*mem)); \ + else if (sizeof (*mem) == 2) \ + __asm __volatile (lock "xaddw %w0, %1" \ + : "=r" (__result), "=m" (*mem) \ +- : "0" (__addval), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "0" (__addval), "m" (*mem)); \ + else if (sizeof (*mem) == 4) \ + __asm __volatile (lock "xaddl %0, %1" \ + : "=r" (__result), "=m" (*mem) \ +- : "0" (__addval), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "0" (__addval), "m" (*mem)); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ +@@ -256,7 +238,7 @@ + #endif + + #define __arch_exchange_and_add_cprefix \ +- "cmpl $0, %%gs:%P4\n\tje 0f\n\tlock\n0:\t" ++ "lock\n\t" + + #define catomic_exchange_and_add(mem, value) \ + __arch_exchange_and_add_body (__arch_exchange_and_add_cprefix, __arch_c, \ +@@ -272,18 +254,15 @@ + else if (sizeof (*mem) == 1) \ + __asm __volatile (lock "addb %b1, %0" \ + : "=m" (*mem) \ +- : "iq" (value), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "iq" (value), "m" (*mem)); \ + else if (sizeof (*mem) == 2) \ + __asm __volatile (lock "addw %w1, %0" \ + : "=m" (*mem) \ +- : "ir" (value), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "ir" (value), "m" (*mem)); \ + else if (sizeof (*mem) == 4) \ + __asm __volatile (lock "addl %1, %0" \ + : "=m" (*mem) \ +- : "ir" (value), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "ir" (value), "m" (*mem)); \ + else \ + { \ + __typeof (value) __addval = (value); \ +@@ -301,7 +280,7 @@ + __arch_add_body (LOCK_PREFIX, __arch, mem, value) + + #define __arch_add_cprefix \ +- "cmpl $0, %%gs:%P3\n\tje 0f\n\tlock\n0:\t" ++ "lock\n\t" + + #define catomic_add(mem, value) \ + __arch_add_body (__arch_add_cprefix, __arch_c, mem, value) +@@ -350,18 +329,15 @@ + if (sizeof (*mem) == 1) \ + __asm __volatile (lock "incb %b0" \ + : "=m" (*mem) \ +- : "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "m" (*mem)); \ + else if (sizeof (*mem) == 2) \ + __asm __volatile (lock "incw %w0" \ + : "=m" (*mem) \ +- : "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "m" (*mem)); \ + else if (sizeof (*mem) == 4) \ + __asm __volatile (lock "incl %0" \ + : "=m" (*mem) \ +- : "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "m" (*mem)); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ +@@ -377,7 +353,7 @@ + #define atomic_increment(mem) __arch_increment_body (LOCK_PREFIX, __arch, mem) + + #define __arch_increment_cprefix \ +- "cmpl $0, %%gs:%P2\n\tje 0f\n\tlock\n0:\t" ++ "lock\n\t" + + #define catomic_increment(mem) \ + __arch_increment_body (__arch_increment_cprefix, __arch_c, mem) +@@ -407,18 +383,15 @@ + if (sizeof (*mem) == 1) \ + __asm __volatile (lock "decb %b0" \ + : "=m" (*mem) \ +- : "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "m" (*mem)); \ + else if (sizeof (*mem) == 2) \ + __asm __volatile (lock "decw %w0" \ + : "=m" (*mem) \ +- : "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "m" (*mem)); \ + else if (sizeof (*mem) == 4) \ + __asm __volatile (lock "decl %0" \ + : "=m" (*mem) \ +- : "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "m" (*mem)); \ + else \ + { \ + __typeof (mem) __memp = (mem); \ +@@ -434,7 +407,7 @@ + #define atomic_decrement(mem) __arch_decrement_body (LOCK_PREFIX, __arch, mem) + + #define __arch_decrement_cprefix \ +- "cmpl $0, %%gs:%P2\n\tje 0f\n\tlock\n0:\t" ++ "lock\n\t" + + #define catomic_decrement(mem) \ + __arch_decrement_body (__arch_decrement_cprefix, __arch_c, mem) +@@ -505,24 +478,21 @@ + if (sizeof (*mem) == 1) \ + __asm __volatile (lock "andb %b1, %0" \ + : "=m" (*mem) \ +- : "iq" (mask), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "iq" (mask), "m" (*mem)); \ + else if (sizeof (*mem) == 2) \ + __asm __volatile (lock "andw %w1, %0" \ + : "=m" (*mem) \ +- : "ir" (mask), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "ir" (mask), "m" (*mem)); \ + else if (sizeof (*mem) == 4) \ + __asm __volatile (lock "andl %1, %0" \ + : "=m" (*mem) \ +- : "ir" (mask), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "ir" (mask), "m" (*mem)); \ + else \ + abort (); \ + } while (0) + + #define __arch_cprefix \ +- "cmpl $0, %%gs:%P3\n\tje 0f\n\tlock\n0:\t" ++ "lock\n\t" + + #define atomic_and(mem, mask) __arch_and_body (LOCK_PREFIX, mem, mask) + +@@ -534,18 +504,15 @@ + if (sizeof (*mem) == 1) \ + __asm __volatile (lock "orb %b1, %0" \ + : "=m" (*mem) \ +- : "iq" (mask), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "iq" (mask), "m" (*mem)); \ + else if (sizeof (*mem) == 2) \ + __asm __volatile (lock "orw %w1, %0" \ + : "=m" (*mem) \ +- : "ir" (mask), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "ir" (mask), "m" (*mem)); \ + else if (sizeof (*mem) == 4) \ + __asm __volatile (lock "orl %1, %0" \ + : "=m" (*mem) \ +- : "ir" (mask), "m" (*mem), \ +- "i" (offsetof (tcbhead_t, multiple_threads))); \ ++ : "ir" (mask), "m" (*mem)); \ + else \ + abort (); \ + } while (0) --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-ldsodefs.h.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-ldsodefs.h.diff @@ -0,0 +1,143 @@ +http://sourceware.org/ml/libc-alpha/2011-06/msg00087.html + +binutils started emitting ELF files with ELFOSABI_GNU due to GNU-specific +ELF extensions. We need to accept loading such binaries on hurd-i386 too. + +2011-06-19 Samuel Thibault + + * elf/elf.h (ELFOSABI_GNU): Define macro. + (ELFOSABI_LINUX): Comment that it is just an alias for ELFOSABI_GNU. + * sysdeps/mach/hurd/ldsodefs.h: New file, defines VALID_ELF_HEADER, + VALID_ELF_OSABI, VALID_ELF_ABIVERSION, MORE_ELF_HEADER_DATA, declares + _dl_non_dynamic_init. + * sysdeps/unix/sysv/linux/ldsodefs.h (VALID_ELF_OSABI, + VALID_ELF_ABIVERSION, MORE_ELF_HEADER_DATA): Use ELFOSABI_GNU instead of + ELFOSABI_LINUX. + * sysdeps/mach/hurd/powerpc/init-first.c (_dl_non_dynamic_init): Remove + declaration. + * sysdeps/mach/hurd/i386/init-first.c (_dl_non_dynamic_init): Likewise. + +diff --git a/elf/elf.h b/elf/elf.h +index acb7762..cad15cd 100644 +--- a/elf/elf.h ++++ b/elf/elf.h +@@ -142,7 +142,8 @@ typedef struct + #define ELFOSABI_SYSV 0 /* Alias. */ + #define ELFOSABI_HPUX 1 /* HP-UX */ + #define ELFOSABI_NETBSD 2 /* NetBSD. */ +-#define ELFOSABI_LINUX 3 /* Linux. */ ++#define ELFOSABI_GNU 3 /* GNU. */ ++#define ELFOSABI_LINUX 3 /* Alias for ELFOSABI_GNU. */ + #define ELFOSABI_SOLARIS 6 /* Sun Solaris. */ + #define ELFOSABI_AIX 7 /* IBM AIX. */ + #define ELFOSABI_IRIX 8 /* SGI Irix. */ +diff --git a/sysdeps/mach/hurd/ldsodefs.h b/sysdeps/mach/hurd/ldsodefs.h +index e69de29..56e4b03 100644 +--- a/sysdeps/mach/hurd/ldsodefs.h ++++ b/sysdeps/mach/hurd/ldsodefs.h +@@ -0,0 +1,52 @@ ++/* Run-time dynamic linker data structures for loaded ELF shared objects. ++ Copyright (C) 2001, 2002, 2003, 2006, 2009, 2010, 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _LDSODEFS_H ++ ++#include ++ ++/* Get the real definitions. */ ++#include_next ++ ++/* Now define our stuff. */ ++ ++/* Initialization which is normally done by the dynamic linker. */ ++extern void _dl_non_dynamic_init (void) internal_function; ++ ++/* Accept binaries which identify the binary as using Linux extensions. */ ++#define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0 \ ++ || memcmp (hdr, expected2, size) == 0) ++#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \ ++ || osabi == ELFOSABI_GNU) ++#define VALID_ELF_ABIVERSION(osabi,ver) \ ++ (ver == 0 || (osabi == ELFOSABI_GNU && ver < LIBC_ABI_MAX)) ++#define MORE_ELF_HEADER_DATA \ ++ static const unsigned char expected2[EI_PAD] = \ ++ { \ ++ [EI_MAG0] = ELFMAG0, \ ++ [EI_MAG1] = ELFMAG1, \ ++ [EI_MAG2] = ELFMAG2, \ ++ [EI_MAG3] = ELFMAG3, \ ++ [EI_CLASS] = ELFW(CLASS), \ ++ [EI_DATA] = byteorder, \ ++ [EI_VERSION] = EV_CURRENT, \ ++ [EI_OSABI] = ELFOSABI_GNU \ ++ } ++ ++#endif /* ldsodefs.h */ +diff --git a/sysdeps/unix/sysv/linux/ldsodefs.h b/sysdeps/unix/sysv/linux/ldsodefs.h +index 5d5b1b4..cf20217 100644 +--- a/sysdeps/unix/sysv/linux/ldsodefs.h ++++ b/sysdeps/unix/sysv/linux/ldsodefs.h +@@ -58,9 +58,9 @@ extern void _dl_non_dynamic_init (void) internal_function; + #define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0 \ + || memcmp (hdr, expected2, size) == 0) + #define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \ +- || osabi == ELFOSABI_LINUX) ++ || osabi == ELFOSABI_GNU) + #define VALID_ELF_ABIVERSION(osabi,ver) \ +- (ver == 0 || (osabi == ELFOSABI_LINUX && ver < LIBC_ABI_MAX)) ++ (ver == 0 || (osabi == ELFOSABI_GNU && ver < LIBC_ABI_MAX)) + #define MORE_ELF_HEADER_DATA \ + static const unsigned char expected2[EI_PAD] = \ + { \ +@@ -71,7 +71,7 @@ extern void _dl_non_dynamic_init (void) internal_function; + [EI_CLASS] = ELFW(CLASS), \ + [EI_DATA] = byteorder, \ + [EI_VERSION] = EV_CURRENT, \ +- [EI_OSABI] = ELFOSABI_LINUX \ ++ [EI_OSABI] = ELFOSABI_GNU \ + } + + #endif /* ldsodefs.h */ +diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c +index 21b5054..2047cac 100644 +--- a/sysdeps/mach/hurd/powerpc/init-first.c ++++ b/sysdeps/mach/hurd/powerpc/init-first.c +@@ -32,9 +32,6 @@ extern void __init_misc (int, char **, char **); + #ifdef USE_NONOPTION_FLAGS + extern void __getopt_clean_environment (char **); + #endif +-#ifndef SHARED +-extern void _dl_non_dynamic_init (void) internal_function; +-#endif + extern void __libc_global_ctors (void); + + unsigned int __hurd_threadvar_max; +diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c +index e79af1d..7c86609 100644 +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -37,9 +37,6 @@ extern void __init_misc (int, char **, char **); + #ifdef USE_NONOPTION_FLAGS + extern void __getopt_clean_environment (char **); + #endif +-#ifndef SHARED +-extern void _dl_non_dynamic_init (void) internal_function; +-#endif + extern void __libc_global_ctors (void); + + unsigned int __hurd_threadvar_max; --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-regex_internal.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-regex_internal.diff @@ -0,0 +1,19 @@ +2010-05-26 Aurelien Jarno + + * posix/regex_internal.h: include to get MAX + definition. + +--- + posix/regex_internal.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/posix/regex_internal.h ++++ b/posix/regex_internal.h +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #if defined _LIBC + # include --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-ttyname_ERANGE.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-ttyname_ERANGE.diff @@ -0,0 +1,20 @@ +http://sourceware.org/ml/libc-alpha/2011-08/msg00013.html + +2011-08-05 Samuel Thibault + + * sysdeps/mach/hurd/ttyname_r.c (__ttyname_r): Return ERANGE instead of + EINVAL when BUFLEN is too smal. + +diff --git a/sysdeps/mach/hurd/ttyname_r.c b/sysdeps/mach/hurd/ttyname_r.c +index 5f6c9c3..5718fca 100644 +--- a/sysdeps/mach/hurd/ttyname_r.c ++++ b/sysdeps/mach/hurd/ttyname_r.c +@@ -43,7 +43,7 @@ __ttyname_r (int fd, char *buf, size_t buflen) + len = strlen (nodename) + 1; + if (len > buflen) + { +- errno = EINVAL; ++ errno = ERANGE; + return errno; + } + --- eglibc-2.13.orig/debian/patches/hurd-i386/local-disable-ioctls.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-disable-ioctls.diff @@ -0,0 +1,38 @@ +struct ortentry and struct ifalias req are actually not defined +struct arpreq is defined, but can not be passed to an ioctl on the Hurd. +so let's make packages not believe these are available. + +--- + sysdeps/mach/hurd/bits/ioctls.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/sysdeps/mach/hurd/bits/ioctls.h ++++ b/sysdeps/mach/hurd/bits/ioctls.h +@@ -273,8 +273,10 @@ + #define SIOCSPGRP _IOW('s', 8, int) /* set process group */ + #define SIOCGPGRP _IOR('s', 9, int) /* get process group */ + ++#if 0 + #define SIOCADDRT _IOW('r', 10, struct ortentry) /* add route */ + #define SIOCDELRT _IOW('r', 11, struct ortentry) /* delete route */ ++#endif + + #define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */ + #define OSIOCGIFADDR _IOWR('i',13, struct ifreq) /* get ifnet address */ +@@ -296,12 +298,16 @@ + #define SIOCGIFMETRIC _IOWR('i',23, struct ifreq_int) /* get IF metric */ + #define SIOCSIFMETRIC _IOW('i',24, struct ifreq_int) /* set IF metric */ + #define SIOCDIFADDR _IOW('i',25, struct ifreq) /* delete IF addr */ ++#if 0 + #define SIOCAIFADDR _IOW('i',26, struct ifaliasreq) /* add/chg IF alias */ ++#endif + ++#if 0 + #define SIOCSARP _IOW('i', 30, struct arpreq) /* set arp entry */ + #define OSIOCGARP _IOWR('i',31, struct arpreq) /* get arp entry */ + #define SIOCGARP _IOWR('i',38, struct arpreq) /* get arp entry */ + #define SIOCDARP _IOW('i', 32, struct arpreq) /* delete arp entry */ ++#endif + + #define SIOCGIFMTU _IOWR('i', 51, struct ifreq_int)/* get IF mtu */ + #define SIOCSIFMTU _IOW('i', 52, struct ifreq_int) /* set IF mtu */ --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-ptsname.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-ptsname.diff @@ -0,0 +1,19 @@ +This is a bit lame (thus not submitted), but should work for now. + +--- + sysdeps/mach/hurd/ptsname.c | 8 ++++++++ + 1 file changed, 8 insertions(+) +--- a/sysdeps/mach/hurd/ptsname.c ++++ b/sysdeps/mach/hurd/ptsname.c +@@ -63,3 +63,11 @@ + return 0; + } + weak_alias (__ptsname_r, ptsname_r) ++ ++int ++__ptsname_internal (int fd, char *buf, size_t buflen, struct stat64 *stp) ++{ ++ if (__fxstat64 (_STAT_VER, fd, stp) < 0) ++ return errno; ++ return __ptsname_r (fd, buf, buflen); ++} --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-IPV6_PKTINFO.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-IPV6_PKTINFO.diff @@ -0,0 +1,31 @@ +Add more ipv6 macros. + +http://www.sourceware.org/bugzilla/show_bug.cgi?id=3906 + +--- + bits/in.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/bits/in.h ++++ b/bits/in.h +@@ -50,7 +50,7 @@ + + /* IPV6 socket options. */ + #define IPV6_ADDRFORM 1 +-#define IPV6_RXINFO 2 ++#define IPV6_PKTINFO 2 + #define IPV6_HOPOPTS 3 + #define IPV6_DSTOPTS 4 + #define IPV6_RTHDR 5 +@@ -58,8 +58,9 @@ + #define IPV6_CHECKSUM 7 + #define IPV6_HOPLIMIT 8 + +-#define IPV6_TXINFO IPV6_RXINFO +-#define SCM_SRCINFO IPV6_TXINFO ++#define IPV6_RXINFO IPV6_PKTINFO ++#define IPV6_TXINFO IPV6_PKTINFO ++#define SCM_SRCINFO IPV6_PKTINFO + #define SCM_SRCRT IPV6_RXSRCRT + + #define IPV6_UNICAST_HOPS 16 --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-dl-sysdep.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-dl-sysdep.diff @@ -0,0 +1,27 @@ +http://sourceware.org/ml/libc-alpha/2009-01/msg00037.html + +2009-01-31 Samuel Thibault + + * sysdeps/mach/hurd/dl-sysdep.c: Include code only #ifdef SHARED. + +--- + sysdeps/mach/hurd/dl-sysdep.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/sysdeps/mach/hurd/dl-sysdep.c ++++ b/sysdeps/mach/hurd/dl-sysdep.c +@@ -42,6 +42,8 @@ + #include + #include + ++#ifdef SHARED ++ + extern void __mach_init (void); + + extern int _dl_argc; +@@ -669,3 +671,5 @@ + { + /* This no-op definition only gets used if libc is not linked in. */ + } ++ ++#endif /* SHARED */ --- eglibc-2.13.orig/debian/patches/hurd-i386/local-pthread_stubs.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-pthread_stubs.diff @@ -0,0 +1,34 @@ +This provides so-called "pthread stubs", which permit thread-safe libraries to +not have to explicitely link with libpthread, and just rely on libc providing +e.g. void pthread_mutex_lock/unlock. However, because of weak ELF symbols +rules, this will only work as long as we set _dl_dynamic_weak to 1 (see +local-dl-dynamic-weak.diff), so the plan is + +- once glibc has integrated Hurd's libpthread and thus is able to provide the +pthread stubs itself, this patch can be dropped. +- once we see that all packages got recompiled with that new glibc (i.e. +apt-cache rdepends libpthread-stubs0 is empty), the local-dl-dynamic-weak.diff +patch can be dropped. + +--- + Makerules | 3 ++- + sysdeps/mach/hurd/libc-ldscript | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +--- a/Makerules ++++ b/Makerules +@@ -979,6 +979,7 @@ + ) > $@.new + ifeq ($(patsubst gnu%,,$(config-os)),) + echo 'INPUT ( AS_NEEDED ( -lmachuser -lhurduser ) )' >> $@.new ++ echo 'INPUT ( AS_NEEDED ( -lpthread-stubs ) )' >> $@.new + endif + mv -f $@.new $@ + +--- a/sysdeps/mach/hurd/libc-ldscript ++++ b/sysdeps/mach/hurd/libc-ldscript +@@ -4,3 +4,4 @@ + */ + + GROUP ( libcrt.a libmachuser.a libhurduser.a ) ++INPUT ( -lpthread-stubs ) --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-ECANCELED.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-ECANCELED.diff @@ -0,0 +1,30 @@ +Regenerate errnos. + +http://www.cygwin.com/ml/libc-alpha/2007-08/msg00050.html + +--- + sysdeps/mach/hurd/bits/errno.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/sysdeps/mach/hurd/bits/errno.h ++++ b/sysdeps/mach/hurd/bits/errno.h +@@ -212,8 +212,8 @@ + #define EPROTO _HURD_ERRNO (116)/* Protocol error */ + ETIME = _HURD_ERRNO (117), + #define ETIME _HURD_ERRNO (117)/* Timer expired */ +- ECANCELED = _HURD_ERRNO (118), +-#define ECANCELED _HURD_ERRNO (118)/* Operation canceled */ ++ ECANCELED = _HURD_ERRNO (119), ++#define ECANCELED _HURD_ERRNO (119)/* Operation canceled */ + + /* Errors from . */ + EMACH_SEND_IN_PROGRESS = 0x10000001, +@@ -297,7 +297,7 @@ + + }; + +-#define _HURD_ERRNOS 119 ++#define _HURD_ERRNOS 120 + + /* User-visible type of error codes. It is ok to use `int' or + `kern_return_t' for these, but with `error_t' the debugger prints --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-gcc-4.1-init-first.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-gcc-4.1-init-first.diff @@ -0,0 +1,68 @@ +Roland disagrees with this undo. + +2007-07-22 Thomas Schwinge + + * sysdeps/mach/hurd/i386/init-first.c: Undo parts of Roland's `r 1.43' + to `r 1.44' changes. + (_hurd_stack_setup): Take a ``void *'' argument. Save the caller into + CALLER and pass that one on. + (init): Avoid an ugly typecast. + +--- + sysdeps/mach/hurd/i386/init-first.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -334,11 +334,11 @@ + stack set up just as the user will see it, so it can switch stacks. */ + + void +-_dl_init_first (void) ++_dl_init_first (int argc, ...) + { + first_init (); + +- init ((int *) __builtin_frame_address (0) + 2); ++ init (&argc); + } + #endif + +@@ -365,23 +365,23 @@ + This poorly-named function is called by static-start.S, + which should not exist at all. */ + void +-_hurd_stack_setup (void) ++_hurd_stack_setup (void *arg, ...) + { +- intptr_t caller = (intptr_t) __builtin_return_address (0); ++ void *caller = (&arg)[-1]; + + void doinit (intptr_t *data) + { + /* This function gets called with the argument data at TOS. */ +- void doinit1 (void) ++ void doinit1 (volatile int argc, ...) + { +- init ((int *) __builtin_frame_address (0) + 2); ++ init ((int *) &argc); + } + + /* Push the user return address after the argument data, and then + jump to `doinit1' (above), so it is as if __libc_init_first's + caller had called `doinit1' with the argument data already on the + stack. */ +- *--data = caller; ++ *--data = (intptr_t) caller; + asm volatile ("movl %0, %%esp\n" /* Switch to new outermost stack. */ + "movl $0, %%ebp\n" /* Clear outermost frame pointer. */ + "jmp *%1" : : "r" (data), "r" (&doinit1) : "sp"); +@@ -390,7 +390,7 @@ + + first_init (); + +- _hurd_startup ((void **) __builtin_frame_address (0) + 2, &doinit); ++ _hurd_startup (&arg, &doinit); + } + #endif + --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-add-needed.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-add-needed.diff @@ -0,0 +1,24 @@ +http://lists.gnu.org/archive/html/bug-hurd/2011-03/msg00112.html + +2011-03-29 Samuel Thibault + + * Makerules ($(inst_libdir)/libc.so): Add -lmachuser -lhurduser to + libc.so on GNU/Hurd. + +--- + Makerules | 1 + + 1 file changed, 1 insertion(+) +diff --git a/Makerules b/Makerules +index 82ffa1e..8876342 100644 +--- a/Makerules ++++ b/Makerules +@@ -991,6 +991,9 @@ $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ + '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ + ' AS_NEEDED (' $(slibdir)/$(rtld-installed-name) ') )' \ + ) > $@.new ++ifeq ($(patsubst gnu%,,$(config-os)),) ++ echo 'INPUT ( AS_NEEDED ( -lmachuser -lhurduser ) )' >> $@.new ++endif + mv -f $@.new $@ + + endif --- eglibc-2.13.orig/debian/patches/hurd-i386/local-dl-dynamic-weak.diff +++ eglibc-2.13/debian/patches/hurd-i386/local-dl-dynamic-weak.diff @@ -0,0 +1,38 @@ +For now, libpthread is not compiled at the same time as glibc, so that pthread_* +stubs call forwarding can not work. + +--- + elf/dl-support.c | 6 ++++++ + elf/rtld.c | 5 +++++ + 2 files changed, 11 insertions(+) + +--- a/elf/dl-support.c ++++ b/elf/dl-support.c +@@ -46,7 +46,13 @@ + #endif + int _dl_lazy; + ElfW(Addr) _dl_use_load_bias = -2; ++#ifdef __GNU__ ++/* GNU/Hurd needs this because otherwise libpthread's pthread_mutex_lock gets ++ * overridden by libX11's stubs. */ ++int _dl_dynamic_weak = 1; ++#else + int _dl_dynamic_weak; ++#endif + + /* If nonzero print warnings about problematic situations. */ + int _dl_verbose; +--- a/elf/rtld.c ++++ b/elf/rtld.c +@@ -154,6 +154,11 @@ + #ifdef NEED_DL_SYSINFO + ._dl_sysinfo = DL_SYSINFO_DEFAULT, + #endif ++#ifdef __GNU__ ++/* GNU/Hurd needs this because otherwise libpthread's pthread_mutex_lock gets ++ * * overridden by libX11's stubs. */ ++ ._dl_dynamic_weak = 1, ++#endif + ._dl_debug_fd = STDERR_FILENO, + ._dl_use_load_bias = -2, + ._dl_correct_cache_id = _DL_CACHE_DEFAULT_ID, --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-itimer-lock.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-itimer-lock.diff @@ -0,0 +1,22 @@ +http://sourceware.org/ml/libc-alpha/2009-02/msg00003.html + +2009-02-01 Samuel Thibault + + * sysdeps/mach/hurd/setitimer.c (setitimer_locked): Use common exit path + instead of returning without unlocking. + +--- + sysdeps/mach/hurd/setitimer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/mach/hurd/setitimer.c ++++ b/sysdeps/mach/hurd/setitimer.c +@@ -220,7 +220,7 @@ + /* Start up the itimer thread running `timer_thread' (below). */ + if (err = __thread_create (__mach_task_self (), + &_hurd_itimer_thread)) +- return __hurd_fail (err); ++ goto out; + _hurd_itimer_thread_stack_base = 0; /* Anywhere. */ + _hurd_itimer_thread_stack_size = __vm_page_size; /* Small stack. */ + if ((err = __mach_setup_thread (__mach_task_self (), --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-dup2-fix.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-dup2-fix.diff @@ -0,0 +1,44 @@ +Mutex locking fix. + +http://sources.redhat.com/ml/libc-alpha/2009-01/msg00030.html + +--- + sysdeps/mach/hurd/dup2.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/sysdeps/mach/hurd/dup2.c ++++ b/sysdeps/mach/hurd/dup2.c +@@ -68,15 +68,14 @@ + /* Get a hold of the destination descriptor. */ + struct hurd_fd *d2; + ++ __mutex_lock (&_hurd_dtable_lock); ++ + if (fd2 >= _hurd_dtablesize) + { + /* The table is not large enough to hold the destination + descriptor. Enlarge it as necessary to allocate this + descriptor. */ + __mutex_unlock (&_hurd_dtable_lock); +- /* We still hold FD1's lock, but this is safe because +- _hurd_alloc_fd will only examine the cells starting +- at FD2. */ + d2 = _hurd_alloc_fd (NULL, fd2); + if (d2) + __spin_unlock (&d2->port.lock); +@@ -96,6 +95,7 @@ + MACH_PORT_NULL); + } + } ++ __mutex_unlock (&_hurd_dtable_lock); + + if (d2 == NULL) + { +@@ -119,7 +119,6 @@ + _hurd_port_locked_set (&d2->port, port); /* Unlocks D2. */ + } + } +- __mutex_unlock (&_hurd_dtable_lock); + + _hurd_port_free (&d->port, &ulink, port); + if (ctty != MACH_PORT_NULL) --- eglibc-2.13.orig/debian/patches/hurd-i386/cvs-if_freereq.diff +++ eglibc-2.13/debian/patches/hurd-i386/cvs-if_freereq.diff @@ -0,0 +1,61 @@ +2011-02-22 Samuel Thibault + + Fix __if_freereq crash: Unlike the generic version which uses free, Hurd + needs munmap. + + * sysdeps/mach/hurd/ifreq.h: New file. + +--- + ifreq.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) +diff --git a/sysdeps/mach/hurd/ifreq.h b/sysdeps/mach/hurd/ifreq.h +new file mode 100644 +index 0000000..99a6b94 +--- /dev/null ++++ b/sysdeps/mach/hurd/ifreq.h +@@ -0,0 +1,45 @@ ++/* Copyright (C) 1999, 2002, 2003, 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Andreas Jaeger . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static inline struct ifreq * ++__if_nextreq (struct ifreq *ifr) ++{ ++#ifdef _HAVE_SA_LEN ++ if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr) ++ return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len); ++#endif ++ return ifr + 1; ++} ++ ++extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd); ++ ++ ++static inline void ++__if_freereq (struct ifreq *ifreqs, int num_ifs) ++{ ++ munmap (ifreqs, num_ifs * sizeof (struct ifreq)); ++} --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-stat.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-stat.diff @@ -0,0 +1,120 @@ +Needed for HEAD and glibc-2_7-branch. + + + + +Reported on . + + +2007-10-05 Thomas Schwinge + + * sysdeps/mach/hurd/bits/stat.h (struct stat): Align to what is done + for Linux: use nsec instead of usec, as well as: + [__USE_MISC] (st_atim, st_mtim, st_ctim): Provide these ``struct + timespec''s. + (struct stat64): Likewise. + (_STATBUF_ST_NSEC): Define. + * sysdeps/mach/hurd/xstatconv.c (xstat64_conv): Adapt to that. + +--- + sysdeps/mach/hurd/bits/stat.h | 56 ++++++++++++++++++++++++++++++++---------- + sysdeps/mach/hurd/xstatconv.c | 9 ++---- + 2 files changed, 46 insertions(+), 19 deletions(-) + +--- a/sysdeps/mach/hurd/xstatconv.c ++++ b/sysdeps/mach/hurd/xstatconv.c +@@ -42,12 +42,9 @@ + buf->st_uid = buf64->st_uid; + buf->st_gid = buf64->st_gid; + buf->st_size = buf64->st_size; +- buf->st_atime = buf64->st_atime; +- buf->st_atime_usec = buf64->st_atime_usec; +- buf->st_mtime = buf64->st_mtime; +- buf->st_mtime_usec = buf64->st_mtime_usec; +- buf->st_ctime = buf64->st_ctime; +- buf->st_ctime_usec = buf64->st_ctime_usec; ++ buf->st_atim = buf64->st_atim; ++ buf->st_mtim = buf64->st_mtim; ++ buf->st_ctim = buf64->st_ctim; + buf->st_blksize = buf64->st_blksize; + buf->st_blocks = buf64->st_blocks; + buf->st_author = buf64->st_author; +--- a/sysdeps/mach/hurd/bits/stat.h ++++ b/sysdeps/mach/hurd/bits/stat.h +@@ -59,12 +59,27 @@ + __off64_t st_size; /* Size in bytes. */ + #endif + +- __time_t st_atime; /* Access time, seconds */ +- unsigned long int st_atime_usec; /* and microseconds. */ +- __time_t st_mtime; /* Modification time, seconds */ +- unsigned long int st_mtime_usec; /* and microseconds. */ +- __time_t st_ctime; /* Status change time, seconds */ +- unsigned long int st_ctime_usec; /* and microseconds. */ ++#ifdef __USE_MISC ++ /* Nanosecond resolution timestamps are stored in a format ++ equivalent to 'struct timespec'. This is the type used ++ whenever possible but the Unix namespace rules do not allow the ++ identifier 'timespec' to appear in the header. ++ Therefore we have to handle the use of this header in strictly ++ standard-compliant sources special. */ ++ struct timespec st_atim; /* Time of last access. */ ++ struct timespec st_mtim; /* Time of last modification. */ ++ struct timespec st_ctim; /* Time of last status change. */ ++# define st_atime st_atim.tv_sec /* Backward compatibility. */ ++# define st_mtime st_mtim.tv_sec ++# define st_ctime st_ctim.tv_sec ++#else ++ __time_t st_atime; /* Time of last access. */ ++ unsigned long int st_atimensec; /* Nscecs of last access. */ ++ __time_t st_mtime; /* Time of last modification. */ ++ unsigned long int st_mtimensec; /* Nsecs of last modification. */ ++ __time_t st_ctime; /* Time of last status change. */ ++ unsigned long int st_ctimensec; /* Nsecs of last status change. */ ++#endif + + __blksize_t st_blksize; /* Optimal size for I/O. */ + +@@ -108,12 +123,24 @@ + + __off64_t st_size; /* Size in bytes. */ + +- __time_t st_atime; /* Access time, seconds */ +- unsigned long int st_atime_usec; /* and microseconds. */ +- __time_t st_mtime; /* Modification time, seconds */ +- unsigned long int st_mtime_usec; /* and microseconds. */ +- __time_t st_ctime; /* Status change time, seconds */ +- unsigned long int st_ctime_usec; /* and microseconds. */ ++#ifdef __USE_MISC ++ /* Nanosecond resolution timestamps are stored in a format ++ equivalent to 'struct timespec'. This is the type used ++ whenever possible but the Unix namespace rules do not allow the ++ identifier 'timespec' to appear in the header. ++ Therefore we have to handle the use of this header in strictly ++ standard-compliant sources special. */ ++ struct timespec st_atim; /* Time of last access. */ ++ struct timespec st_mtim; /* Time of last modification. */ ++ struct timespec st_ctim; /* Time of last status change. */ ++#else ++ __time_t st_atime; /* Time of last access. */ ++ unsigned long int st_atimensec; /* Nscecs of last access. */ ++ __time_t st_mtime; /* Time of last modification. */ ++ unsigned long int st_mtimensec; /* Nsecs of last modification. */ ++ __time_t st_ctime; /* Time of last status change. */ ++ unsigned long int st_ctimensec; /* Nsecs of last status change. */ ++#endif + + __blksize_t st_blksize; /* Optimal size for I/O. */ + +@@ -131,7 +158,10 @@ + }; + #endif + +-#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ ++/* Tell code we have these members. */ ++#define _STATBUF_ST_BLKSIZE ++/* Nanosecond resolution time values are supported. */ ++#define _STATBUF_ST_NSEC + + /* Encoding of the file mode. */ + --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-null-pathname.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-null-pathname.diff @@ -0,0 +1,44 @@ +http://sources.redhat.com/ml/libc-alpha/2009-09/msg00025.html + +2009-09-13 Samuel Thibault + + * hurd/hurdchdir.c (_hurd_change_directory_port_from_name): + Return ENOENT when name is empty. + * sysdeps/mach/hurd/chroot.c (chroot): Return ENOENT when path + is empty. + +--- + hurd/hurdchdir.c | 6 ++++++ + sysdeps/mach/hurd/chroot.c | 6 ++++++ + 2 files changed, 12 insertions(+) + +--- a/hurd/hurdchdir.c ++++ b/hurd/hurdchdir.c +@@ -38,6 +38,12 @@ + len = strlen (name); + if (len >= 2 && name[len - 2] == '/' && name[len - 1] == '.') + lookup = name; ++ else if (len == 0) ++ { ++ /* Special-case null pathname according to POSIX */ ++ errno = ENOENT; ++ return -1; ++ } + else + { + char *n = alloca (len + 3); +--- a/sysdeps/mach/hurd/chroot.c ++++ b/sysdeps/mach/hurd/chroot.c +@@ -38,6 +38,12 @@ + len = strlen (path); + if (len >= 2 && path[len - 2] == '/' && path[len - 1] == '.') + lookup = path; ++ else if (len == 0) ++ { ++ /* Special-case null pathname according to POSIX */ ++ errno = ENOENT; ++ return -1; ++ } + else + { + char *n = alloca (len + 3); --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-posix_opt.h.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-posix_opt.h.diff @@ -0,0 +1,122 @@ +http://cygwin.ru/ml/libc-alpha/2010-01/msg00012.html + +2010-01-10 Samuel Thibault + + * posix/tst-sysconf.c (posix_options): Only use + _POSIX_PRIORITIZED_IO, _POSIX_PRIORITY_SCHEDULING, and + _POSIX_SYNCHRONIZED_IO when they are defined + * sysdeps/mach/hurd/bits/posix_opt.h: + (_POSIX_PRIORITY_SCHEDULING): Undefine macro. + (_XOPEN_REALTIME): Undefine macro. + (_XOPEN_REALTIME_THREADS): Undefine macro. + (_XOPEN_SHM): Undefine macro. + [__USE_XOPEN2K8] (_POSIX_THREAD_ROBUST_PRIO_INHERIT): Define + macro to -1. + [__USE_XOPEN2K8] (_POSIX_THREAD_ROBUST_PRIO_PROTECT): Define + macro to -1. + (_POSIX_ASYNC_IO): Undefine macro. + (_POSIX_PRIORITIZED_IO): Undefine macro. + (_POSIX_SPIN_LOCKS): Define macro to -1. + +--- + posix/tst-sysconf.c | 6 ++++++ + sysdeps/mach/hurd/bits/posix_opt.h | 28 +++++++++++++++++++++++----- + 2 files changed, 29 insertions(+), 5 deletions(-) + +--- a/posix/tst-sysconf.c ++++ b/posix/tst-sysconf.c +@@ -29,8 +29,12 @@ + N (MEMORY_PROTECTION), + N (MESSAGE_PASSING), + N (MONOTONIC_CLOCK), ++#ifdef _POSIX_PRIORITIZED_IO + N (PRIORITIZED_IO), ++#endif ++#ifdef _POSIX_PRIORITY_SCHEDULING + N (PRIORITY_SCHEDULING), ++#endif + N (RAW_SOCKETS), + N (READER_WRITER_LOCKS), + N (REALTIME_SIGNALS), +@@ -42,7 +46,9 @@ + N (SPAWN), + N (SPIN_LOCKS), + N (SPORADIC_SERVER), ++#ifdef _POSIX_SYNCHRONIZED_IO + N (SYNCHRONIZED_IO), ++#endif + N (THREAD_ATTR_STACKADDR), + N (THREAD_ATTR_STACKSIZE), + N (THREAD_CPUTIME), +--- a/sysdeps/mach/hurd/bits/posix_opt.h ++++ b/sysdeps/mach/hurd/bits/posix_opt.h +@@ -31,6 +31,9 @@ + /* Processes have a saved set-user-ID and a saved set-group-ID. */ + #define _POSIX_SAVED_IDS 1 + ++/* Priority scheduling is not supported. */ ++#undef _POSIX_PRIORITY_SCHEDULING ++ + /* Synchronizing file data is supported, but msync is missing. */ + #undef _POSIX_SYNCHRONIZED_IO + +@@ -60,6 +63,14 @@ + #undef _POSIX_NO_TRUNC /* Overlong file names get error? */ + #undef _POSIX_SYNC_IO /* File supports O_SYNC et al? */ + ++/* X/Open realtime support is not supported. */ ++#undef _XOPEN_REALTIME ++ ++/* X/Open thread realtime support is not supported. */ ++#undef _XOPEN_REALTIME_THREADS ++ ++/* XPG4.2 shared memory is not supported. */ ++#undef _XOPEN_SHM + + /* We do not have the POSIX threads interface. */ + #define _POSIX_THREADS -1 +@@ -72,6 +83,12 @@ + #define _POSIX_THREAD_PRIORITY_SCHEDULING -1 + #define _POSIX_THREAD_ATTR_STACKSIZE -1 + #define _POSIX_THREAD_ATTR_STACKADDR -1 ++#define _POSIX_THREAD_PRIO_INHERIT -1 ++#define _POSIX_THREAD_PRIO_PROTECT -1 ++#ifdef __USE_XOPEN2K8 ++# define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1 ++# define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1 ++#endif + #define _POSIX_SEMAPHORES -1 + + /* Real-time signals are not yet supported. */ +@@ -79,8 +96,11 @@ + + /* Asynchronous I/O might supported with the existing ABI. */ + #define _POSIX_ASYNCHRONOUS_IO 0 ++#undef _POSIX_ASYNC_IO + /* Alternative name for Unix98. */ + #define _LFS_ASYNCHRONOUS_IO _POSIX_ASYNCHRONOUS_IO ++/* Support for prioritization is not available. */ ++#undef _POSIX_PRIORITIZED_IO + + /* The LFS support in asynchronous I/O is also available. */ + #define _LFS64_ASYNCHRONOUS_IO _POSIX_ASYNCHRONOUS_IO +@@ -111,6 +131,9 @@ + /* We cannot support the Timeouts option without _POSIX_THREADS. */ + #define _POSIX_TIMEOUTS -1 + ++/* We do not support spinlocks. */ ++#define _POSIX_SPIN_LOCKS -1 ++ + /* The `spawn' function family is supported. */ + #define _POSIX_SPAWN 200809L + +@@ -157,9 +180,4 @@ + /* Typed memory objects are not available. */ + #define _POSIX_TYPED_MEMORY_OBJECTS -1 + +-/* No support for priority inheritance or protection so far. */ +-#define _POSIX_THREAD_PRIO_INHERIT -1 +-#define _POSIX_THREAD_PRIO_PROTECT -1 +- +- + #endif /* bits/posix_opt.h */ --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-SOL_IP.patch +++ eglibc-2.13/debian/patches/hurd-i386/submitted-SOL_IP.patch @@ -0,0 +1,31 @@ +2009-09-28 Samuel Thibault + + * bits/in.h (SOL_IP, SOL_IPV6, SOL_ICMPV6): New macros. + +--- + bits/in.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/bits/in.h ++++ b/bits/in.h +@@ -22,6 +22,9 @@ + # error "Never use directly; include instead." + #endif + ++/* To select the IP level. */ ++#define SOL_IP 0 ++ + /* Options for use with `getsockopt' and `setsockopt' at the IP level. + The first word in the comment at the right is the data type used; + "bool" means a boolean value stored in an `int'. */ +@@ -48,6 +51,10 @@ + char ip_opts[40]; /* Actually variable in size. */ + }; + ++/* Socket level values for IPv6. */ ++#define SOL_IPV6 41 ++#define SOL_ICMPV6 58 ++ + /* IPV6 socket options. */ + #define IPV6_ADDRFORM 1 + #define IPV6_PKTINFO 2 --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-mlock.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-mlock.diff @@ -0,0 +1,22 @@ +2006-01-18 Samuel Thibault + + Fix mlock() in all cases except non-readable pages. + + * glibc/sysdeps/mach/hurd/mlock.c (mlock): Give VM_PROT_READ + instead of VM_PROT_ALL as parameter to __vm_wire function. + +--- + sysdeps/mach/hurd/mlock.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/mach/hurd/mlock.c ++++ b/sysdeps/mach/hurd/mlock.c +@@ -40,7 +40,7 @@ + page = trunc_page ((vm_address_t) addr); + len = round_page ((vm_address_t) addr + len) - page; + err = __vm_wire (hostpriv, __mach_task_self (), page, len, +- VM_PROT_ALL); /* XXX ? */ ++ VM_PROT_READ); + __mach_port_deallocate (__mach_task_self (), hostpriv); + + return err ? __hurd_fail (err) : 0; --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-hurdsig-fixes.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-hurdsig-fixes.diff @@ -0,0 +1,352 @@ +diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c +index 7a6b1d5..74a01a6 100644 +--- a/hurd/hurdsig.c ++++ b/hurd/hurdsig.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2005,2008 ++/* Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2005,2008,2011 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -443,6 +443,30 @@ abort_all_rpcs (int signo, struct machine_thread_all_state *state, int live) + } + } + ++/* Wake up any sigsuspend call that is blocking SS->thread. SS must be ++ locked. */ ++static void ++wake_sigsuspend (struct hurd_sigstate *ss) ++{ ++ error_t err; ++ mach_msg_header_t msg; ++ ++ if (ss->suspended == MACH_PORT_NULL) ++ return; ++ ++ /* There is a sigsuspend waiting. Tell it to wake up. */ ++ msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0); ++ msg.msgh_remote_port = ss->suspended; ++ msg.msgh_local_port = MACH_PORT_NULL; ++ /* These values do not matter. */ ++ msg.msgh_id = 8675309; /* Jenny, Jenny. */ ++ ss->suspended = MACH_PORT_NULL; ++ err = __mach_msg (&msg, MACH_SEND_MSG, sizeof msg, 0, ++ MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, ++ MACH_PORT_NULL); ++ assert_perror (err); ++} ++ + struct hurd_signal_preemptor *_hurdsig_preemptors = 0; + sigset_t _hurdsig_preempted_set; + +@@ -453,35 +477,18 @@ weak_alias (_hurdsig_preemptors, _hurdsig_preempters) + #define STOPSIGS (sigmask (SIGTTIN) | sigmask (SIGTTOU) | \ + sigmask (SIGSTOP) | sigmask (SIGTSTP)) + +-/* Deliver a signal. SS is not locked. */ +-void +-_hurd_internal_post_signal (struct hurd_sigstate *ss, +- int signo, struct hurd_signal_detail *detail, +- mach_port_t reply_port, +- mach_msg_type_name_t reply_port_type, +- int untraced) ++/* Actual delivery of a single signal. Called with SS unlocked. When ++ the signal is delivered, return 1 with SS locked. If the signal is ++ being traced, return 0 with SS unlocked. */ ++static int ++post_signal (struct hurd_sigstate *ss, ++ int signo, struct hurd_signal_detail *detail, ++ int untraced, void (*reply) (void)) + { +- error_t err; + struct machine_thread_all_state thread_state; + enum { stop, ignore, core, term, handle } act; +- sighandler_t handler; +- sigset_t pending; + int ss_suspended; + +- /* Reply to this sig_post message. */ +- __typeof (__msg_sig_post_reply) *reply_rpc +- = (untraced ? __msg_sig_post_untraced_reply : __msg_sig_post_reply); +- void reply (void) +- { +- error_t err; +- if (reply_port == MACH_PORT_NULL) +- return; +- err = (*reply_rpc) (reply_port, reply_port_type, 0); +- reply_port = MACH_PORT_NULL; +- if (err != MACH_SEND_INVALID_DEST) /* Ignore dead reply port. */ +- assert_perror (err); +- } +- + /* Mark the signal as pending. */ + void mark_pending (void) + { +@@ -545,19 +552,23 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + ss_suspended = 1; + } + ++ error_t err; ++ sighandler_t handler; ++ + if (signo == 0) + { + if (untraced) +- /* This is PTRACE_CONTINUE. */ +- resume (); ++ { ++ /* This is PTRACE_CONTINUE. */ ++ act = ignore; ++ resume (); ++ } + + /* This call is just to check for pending signals. */ + __spin_lock (&ss->lock); +- goto check_pending_signals; ++ return 1; + } + +- post_signal: +- + thread_state.set = 0; /* We know nothing. */ + + __spin_lock (&ss->lock); +@@ -620,7 +631,7 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + suspend (); + __spin_unlock (&ss->lock); + reply (); +- return; ++ return 0; + } + + handler = ss->actions[signo].sa_handler; +@@ -863,7 +874,7 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + as a unit. */ + crit ? 0 : signo, 1, + &thread_state, &state_changed, +- &reply) ++ reply) + != MACH_PORT_NULL); + + if (crit) +@@ -949,6 +960,9 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + && signo != SIGILL && signo != SIGTRAP) + ss->actions[signo].sa_handler = SIG_DFL; + ++ /* Any sigsuspend call must return after the handler does. */ ++ wake_sigsuspend (ss); ++ + /* Start the thread running the handler (or possibly waiting for an + RPC reply before running the handler). */ + err = __thread_set_state (ss->thread, MACHINE_THREAD_STATE_FLAVOR, +@@ -962,95 +976,129 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, + } + } + +- /* The signal has either been ignored or is now being handled. We can +- consider it delivered and reply to the killer. */ +- reply (); ++ return 1; ++} + +- /* We get here unless the signal was fatal. We still hold SS->lock. +- Check for pending signals, and loop to post them. */ +- { +- /* Return nonzero if SS has any signals pending we should worry about. +- We don't worry about any pending signals if we are stopped, nor if +- SS is in a critical section. We are guaranteed to get a sig_post +- message before any of them become deliverable: either the SIGCONT +- signal, or a sig_post with SIGNO==0 as an explicit poll when the +- thread finishes its critical section. */ +- inline int signals_pending (void) +- { +- if (_hurd_stopped || __spin_lock_locked (&ss->critical_section_lock)) +- return 0; +- return pending = ss->pending & ~ss->blocked; +- } ++/* Return the set of pending signals in SS which should be delivered. */ ++static sigset_t ++pending_signals (struct hurd_sigstate *ss) ++{ ++ /* We don't worry about any pending signals if we are stopped, nor if ++ SS is in a critical section. We are guaranteed to get a sig_post ++ message before any of them become deliverable: either the SIGCONT ++ signal, or a sig_post with SIGNO==0 as an explicit poll when the ++ thread finishes its critical section. */ ++ if (_hurd_stopped || __spin_lock_locked (&ss->critical_section_lock)) ++ return 0; + +- check_pending_signals: +- untraced = 0; ++ return ss->pending & ~ss->blocked; ++} + +- if (signals_pending ()) +- { +- for (signo = 1; signo < NSIG; ++signo) +- if (__sigismember (&pending, signo)) +- { +- deliver_pending: +- __sigdelset (&ss->pending, signo); +- *detail = ss->pending_data[signo]; +- __spin_unlock (&ss->lock); +- goto post_signal; +- } +- } ++/* Post the specified pending signals in SS and return 1. If one of ++ them is traced, abort immediately and return 0. SS must be locked on ++ entry and will be unlocked in all cases. */ ++static int ++post_pending (struct hurd_sigstate *ss, sigset_t pending, void (*reply) (void)) ++{ ++ int signo; ++ struct hurd_signal_detail detail; + +- /* No pending signals left undelivered for this thread. +- If we were sent signal 0, we need to check for pending +- signals for all threads. */ +- if (signo == 0) +- { +- __spin_unlock (&ss->lock); +- __mutex_lock (&_hurd_siglock); +- for (ss = _hurd_sigstates; ss != NULL; ss = ss->next) +- { +- __spin_lock (&ss->lock); +- for (signo = 1; signo < NSIG; ++signo) +- if (__sigismember (&ss->pending, signo) +- && (!__sigismember (&ss->blocked, signo) +- /* We "deliver" immediately pending blocked signals whose +- action might be to ignore, so that if ignored they are +- dropped right away. */ +- || ss->actions[signo].sa_handler == SIG_IGN +- || ss->actions[signo].sa_handler == SIG_DFL)) +- { +- mutex_unlock (&_hurd_siglock); +- goto deliver_pending; +- } +- __spin_unlock (&ss->lock); +- } +- __mutex_unlock (&_hurd_siglock); +- } +- else ++ for (signo = 1; signo < NSIG; ++signo) ++ if (__sigismember (&pending, signo)) + { +- /* No more signals pending; SS->lock is still locked. +- Wake up any sigsuspend call that is blocking SS->thread. */ +- if (ss->suspended != MACH_PORT_NULL) +- { +- /* There is a sigsuspend waiting. Tell it to wake up. */ +- error_t err; +- mach_msg_header_t msg; +- msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0); +- msg.msgh_remote_port = ss->suspended; +- msg.msgh_local_port = MACH_PORT_NULL; +- /* These values do not matter. */ +- msg.msgh_id = 8675309; /* Jenny, Jenny. */ +- ss->suspended = MACH_PORT_NULL; +- err = __mach_msg (&msg, MACH_SEND_MSG, sizeof msg, 0, +- MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, +- MACH_PORT_NULL); +- assert_perror (err); +- } ++ __sigdelset (&ss->pending, signo); ++ detail = ss->pending_data[signo]; + __spin_unlock (&ss->lock); ++ ++ /* Will reacquire the lock, except if the signal is traced. */ ++ if (! post_signal (ss, signo, &detail, 0, reply)) ++ return 0; + } +- } + +- /* All pending signals delivered to all threads. +- Now we can send the reply message even for signal 0. */ +- reply (); ++ /* No more signals pending; SS->lock is still locked. */ ++ __spin_unlock (&ss->lock); ++ ++ return 1; ++} ++ ++/* Post all the pending signals of all threads and return 1. If a traced ++ signal is encountered, abort immediately and return 0. */ ++static int ++post_all_pending_signals (void (*reply) (void)) ++{ ++ struct hurd_sigstate *ss; ++ sigset_t pending; ++ ++ for (;;) ++ { ++ __mutex_lock (&_hurd_siglock); ++ for (ss = _hurd_sigstates; ss != NULL; ss = ss->next) ++ { ++ __spin_lock (&ss->lock); ++ ++ pending = pending_signals (ss); ++ if (pending) ++ /* post_pending() below will unlock SS. */ ++ break; ++ ++ __spin_unlock (&ss->lock); ++ } ++ __mutex_unlock (&_hurd_siglock); ++ ++ if (! pending) ++ return 1; ++ if (! post_pending (ss, pending, reply)) ++ return 0; ++ } ++} ++ ++/* Deliver a signal. SS is not locked. */ ++void ++_hurd_internal_post_signal (struct hurd_sigstate *ss, ++ int signo, struct hurd_signal_detail *detail, ++ mach_port_t reply_port, ++ mach_msg_type_name_t reply_port_type, ++ int untraced) ++{ ++ /* Reply to this sig_post message. */ ++ __typeof (__msg_sig_post_reply) *reply_rpc ++ = (untraced ? __msg_sig_post_untraced_reply : __msg_sig_post_reply); ++ void reply (void) ++ { ++ error_t err; ++ if (reply_port == MACH_PORT_NULL) ++ return; ++ err = (*reply_rpc) (reply_port, reply_port_type, 0); ++ reply_port = MACH_PORT_NULL; ++ if (err != MACH_SEND_INVALID_DEST) /* Ignore dead reply port. */ ++ assert_perror (err); ++ } ++ ++ if (! post_signal (ss, signo, detail, untraced, reply)) ++ return; ++ ++ /* The signal was neither fatal nor traced. We still hold SS->lock. */ ++ if (signo != 0) ++ { ++ /* The signal has either been ignored or is now being handled. We can ++ consider it delivered and reply to the killer. */ ++ reply (); ++ ++ /* Post any pending signals for this thread. */ ++ if (! post_pending (ss, pending_signals (ss), reply)) ++ return; ++ } ++ else ++ { ++ /* We need to check for pending signals for all threads. */ ++ __spin_unlock (&ss->lock); ++ if (! post_all_pending_signals (reply)) ++ return; ++ ++ /* All pending signals delivered to all threads. ++ Now we can send the reply message even for signal 0. */ ++ reply (); ++ } + } + + /* Decide whether REFPORT enables the sender to send us a SIGNO signal. --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-bigmem.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-bigmem.diff @@ -0,0 +1,43 @@ +Allow the kernel to start earlier than VM_MAX_ADDRESS + +A bit hackish. + +--- + sysdeps/mach/hurd/dl-sysdep.c | 26 ++++++++++++++++++++------ + 1 file changed, 20 insertions(+), 6 deletions(-) + +--- a/sysdeps/mach/hurd/dl-sysdep.c ++++ b/sysdeps/mach/hurd/dl-sysdep.c +@@ -105,12 +105,26 @@ + max=a; break;} + fmha=a+=fmhs;} + if (err) assert(err==KERN_NO_SPACE); +- if (!fmha)fmhs=0;else{ +- fmhs=max-fmha; +- err = __vm_map (__mach_task_self (), +- &fmha, fmhs, 0, 0, MACH_PORT_NULL, 0, 1, +- VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY); +- assert_perror(err);} ++ if (!fmha) ++ fmhs=0; ++ else ++ while (1) { ++ fmhs=max-fmha; ++ err = __vm_map (__mach_task_self (), ++ &fmha, fmhs, 0, 0, MACH_PORT_NULL, 0, 1, ++ VM_PROT_NONE, VM_PROT_NONE, VM_INHERIT_COPY); ++ if (!err) ++ break; ++ if (err != KERN_INVALID_ADDRESS && err != KERN_NO_SPACE) ++ assert_perror(err); ++ vm_address_t new_max = (max - 1) & 0xf0000000U; ++ if (new_max >= max) { ++ fmhs = 0; ++ fmha = 0; ++ break; ++ } ++ max = new_max; ++ } + } + /* XXX loser kludge for vm_map kernel bug */ + #endif --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-i686.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-i686.diff @@ -0,0 +1,24 @@ +This isn't needed on linux, should check why. + +2010-08-22 Samuel Thibault + + * sysdeps/mach/i386/sysdep.h [__ASSEMBLER__] (__i686): New macro. + +--- + sysdeps/mach/i386/sysdep.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/sysdeps/mach/i386/sysdep.h ++++ b/sysdeps/mach/i386/sysdep.h +@@ -22,6 +22,11 @@ + #include + #include + ++#if defined __i686 && defined __ASSEMBLER__ ++#undef __i686 ++#define __i686 __i686 ++#endif ++ + #define LOSE asm volatile ("hlt") + + #define SNARF_ARGS(entry_sp, argc, argv, envp) \ --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-ptr-mangle.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-ptr-mangle.diff @@ -0,0 +1,27 @@ +2007-11-12 Aurelien Jarno + Thomas Schwinge + + * sysdeps/mach/i386/sysdep.h (PTR_MANGLE, PTR_DEMANGLE): Define. + +--- + sysdeps/mach/i386/sysdep.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/sysdeps/mach/i386/sysdep.h ++++ b/sysdeps/mach/i386/sysdep.h +@@ -55,6 +55,15 @@ + + #define STACK_GROWTH_DOWN + ++/* Pointer mangling is not yet supported for Hurd. */ ++#ifdef __ASSEMBLER__ ++#define PTR_MANGLE(var) ++#define PTR_DEMANGLE(var) ++#else ++#define PTR_MANGLE(var) (void) (var) ++#define PTR_DEMANGLE(var) (void) (var) ++#endif ++ + /* Get the machine-independent Mach definitions. */ + #include + --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-net.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-net.diff @@ -0,0 +1,2278 @@ +http://sourceware.org/ml/libc-alpha/2009-01/msg00026.html + +Note: disabled on !hurd, because it breaks kfreebsd, as it hides their + + +commit b4da06a7e200d0cf8d132a83852e473b7795f691 +Author: Samuel Thibault +Date: Sun Jan 10 23:55:28 2010 +0100 + + Factorize ethernet,if_arp,if_ether,if_ppp,route.h + + 2010-01-10 Samuel Thibault + + * sysdeps/mach/hurd/Makefile (sysdep_headers) [subdir=socket]: + Remove net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h + net/route.h. + * sysdeps/gnu/Makefile (sysdep_headers) [subdir=socket]: + Add net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h + net/route.h. + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers) + [subdir=socket]: Remove net/ethernet.h net/if_arp.h net/if_ppp.h + net/route.h + + * sysdeps/mach/hurd/net/ethernet.h: Remove file. + * sysdeps/unix/sysv/linux/net/ethernet.h: Move file to... + * sysdeps/gnu/net/ethernet.h: ... this, and include + instead of . + + * sysdeps/mach/hurd/net/if_ether.h: Move file to... + * sysdeps/gnu/net/if_ether.h: ... this. + (ETH_FCS_LEN,ETH_P_PUPAT,ETH_P_IEEEPUP,ETH_P_IEEEPUPAT, + ETH_P_8021Q,ETH_P_PAUSE,ETH_P_SLOW,ETH_P_WCCP,ETH_P_PPP_DISC, + ETH_P_PPP_SES,ETH_P_MPLS_UC,ETH_P_MPLS_MC,ETH_P_ATMMPOA, + ETH_P_ATMFATE,ETH_P_PAE,ETH_P_AOE,ETH_P_TIPC,ETH_P_FCOE, + ETH_P_EDSA,ETH_P_CAN,ETH_P_MOBITEX,ETH_P_CONTROL,ETH_P_IRDA, + ETH_P_ECONET,ETH_P_HDLC,ETH_P_ARCNET,ETH_P_DSA,ETH_P_TRAILER, + ETH_P_PHONET): New macros. + (ETH_P_ECHO): Remove macro. + (ETH_P_PUP): Change value from 0x0400 to 0x0200. + (struct ethhdr): Add packed attribute. + * sysdeps/unix/sysv/linux/net/if_ether.h: New file, includes + . + + * sysdeps/unix/sysv/linux/net/if_arp.h: Move file to... + * sysdeps/gnu/net/if_arp.h: ... this. + * sysdeps/mach/hurd/net/if_arp.h: Remove file. + + * sysdeps/unix/sysv/linux/net/if_ppp.h: Move file to... + * sysdeps/gnu/net/if_ppp.h: ... this. + * sysdeps/mach/hurd/net/if_ppp.h: Remove file. + + * sysdeps/unix/sysv/linux/net/route.h: Move file to... + * sysdeps/gnu/net/route.h: ... this. + * sysdeps/mach/hurd/net/route.h: Remove file. + +--- + sysdeps/gnu/Makefile | 5 + sysdeps/gnu/net/ethernet.h | 84 +++++++++++++ + sysdeps/gnu/net/if_arp.h | 184 +++++++++++++++++++++++++++++ + sysdeps/gnu/net/if_ether.h | 116 ++++++++++++++++++ + sysdeps/gnu/net/if_ppp.h | 169 ++++++++++++++++++++++++++ + sysdeps/gnu/net/route.h | 145 ++++++++++++++++++++++ + sysdeps/gnu/netinet/if_ether.h | 104 ++++++++++++++++ + sysdeps/mach/hurd/Makefile | 5 + sysdeps/mach/hurd/net/ethernet.h | 76 ----------- + sysdeps/mach/hurd/net/if_arp.h | 145 ---------------------- + sysdeps/mach/hurd/net/if_ether.h | 85 ------------- + sysdeps/mach/hurd/net/if_ppp.h | 169 -------------------------- + sysdeps/mach/hurd/net/route.h | 141 ---------------------- + sysdeps/unix/sysv/linux/Makefile | 3 + sysdeps/unix/sysv/linux/net/ethernet.h | 84 ------------- + sysdeps/unix/sysv/linux/net/if_arp.h | 184 ----------------------------- + sysdeps/unix/sysv/linux/net/if_ether.h | 7 + + sysdeps/unix/sysv/linux/net/if_ppp.h | 169 -------------------------- + sysdeps/unix/sysv/linux/net/route.h | 145 ---------------------- + sysdeps/unix/sysv/linux/netinet/if_ether.h | 105 ---------------- + 20 files changed, 815 insertions(+), 1310 deletions(-) + +--- a/sysdeps/gnu/Makefile ++++ b/sysdeps/gnu/Makefile +@@ -91,3 +91,8 @@ + librt-shared-only-routines += rt-unwind-resume + CFLAGS-rt-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables + endif ++ ++ifeq ($(subdir),socket) ++sysdep_headers += net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h \ ++ net/route.h ++endif +--- /dev/null ++++ b/sysdeps/gnu/net/ethernet.h +@@ -0,0 +1,84 @@ ++/* Copyright (C) 1997, 1999, 2001, 2008, 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Based on the FreeBSD version of this file. Curiously, that file ++ lacks a copyright in the header. */ ++ ++#ifndef __NET_ETHERNET_H ++#define __NET_ETHERNET_H 1 ++ ++#include ++#include ++#include /* IEEE 802.3 Ethernet constants */ ++ ++__BEGIN_DECLS ++ ++/* This is a name for the 48 bit ethernet address available on many ++ systems. */ ++struct ether_addr ++{ ++ u_int8_t ether_addr_octet[ETH_ALEN]; ++} __attribute__ ((__packed__)); ++ ++/* 10Mb/s ethernet header */ ++struct ether_header ++{ ++ u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ ++ u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ ++ u_int16_t ether_type; /* packet type ID field */ ++} __attribute__ ((__packed__)); ++ ++/* Ethernet protocol ID's */ ++#define ETHERTYPE_PUP 0x0200 /* Xerox PUP */ ++#define ETHERTYPE_SPRITE 0x0500 /* Sprite */ ++#define ETHERTYPE_IP 0x0800 /* IP */ ++#define ETHERTYPE_ARP 0x0806 /* Address resolution */ ++#define ETHERTYPE_REVARP 0x8035 /* Reverse ARP */ ++#define ETHERTYPE_AT 0x809B /* AppleTalk protocol */ ++#define ETHERTYPE_AARP 0x80F3 /* AppleTalk ARP */ ++#define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */ ++#define ETHERTYPE_IPX 0x8137 /* IPX */ ++#define ETHERTYPE_IPV6 0x86dd /* IP protocol version 6 */ ++#define ETHERTYPE_LOOPBACK 0x9000 /* used to test interfaces */ ++ ++ ++#define ETHER_ADDR_LEN ETH_ALEN /* size of ethernet addr */ ++#define ETHER_TYPE_LEN 2 /* bytes in type field */ ++#define ETHER_CRC_LEN 4 /* bytes in CRC field */ ++#define ETHER_HDR_LEN ETH_HLEN /* total octets in header */ ++#define ETHER_MIN_LEN (ETH_ZLEN + ETHER_CRC_LEN) /* min packet length */ ++#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN) /* max packet length */ ++ ++/* make sure ethenet length is valid */ ++#define ETHER_IS_VALID_LEN(foo) \ ++ ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) ++ ++/* ++ * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have ++ * (type-ETHERTYPE_TRAIL)*512 bytes of data followed ++ * by an ETHER type (as given above) and then the (variable-length) header. ++ */ ++#define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ ++#define ETHERTYPE_NTRAILER 16 ++ ++#define ETHERMTU ETH_DATA_LEN ++#define ETHERMIN (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) ++ ++__END_DECLS ++ ++#endif /* net/ethernet.h */ +--- /dev/null ++++ b/sysdeps/gnu/net/if_arp.h +@@ -0,0 +1,184 @@ ++/* Definitions for Address Resolution Protocol. ++ Copyright (C) 1997,1999,2001,2006,2009 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 1997. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Based on the 4.4BSD and Linux version of this file. */ ++ ++#ifndef _NET_IF_ARP_H ++ ++#define _NET_IF_ARP_H 1 ++#include ++ ++#include ++#include ++ ++__BEGIN_DECLS ++ ++/* Some internals from deep down in the kernel. */ ++#define MAX_ADDR_LEN 7 ++ ++ ++/* This structure defines an ethernet arp header. */ ++ ++/* ARP protocol opcodes. */ ++#define ARPOP_REQUEST 1 /* ARP request. */ ++#define ARPOP_REPLY 2 /* ARP reply. */ ++#define ARPOP_RREQUEST 3 /* RARP request. */ ++#define ARPOP_RREPLY 4 /* RARP reply. */ ++#define ARPOP_InREQUEST 8 /* InARP request. */ ++#define ARPOP_InREPLY 9 /* InARP reply. */ ++#define ARPOP_NAK 10 /* (ATM)ARP NAK. */ ++ ++/* See RFC 826 for protocol description. ARP packets are variable ++ in size; the arphdr structure defines the fixed-length portion. ++ Protocol type values are the same as those for 10 Mb/s Ethernet. ++ It is followed by the variable-sized fields ar_sha, arp_spa, ++ arp_tha and arp_tpa in that order, according to the lengths ++ specified. Field names used correspond to RFC 826. */ ++ ++struct arphdr ++ { ++ unsigned short int ar_hrd; /* Format of hardware address. */ ++ unsigned short int ar_pro; /* Format of protocol address. */ ++ unsigned char ar_hln; /* Length of hardware address. */ ++ unsigned char ar_pln; /* Length of protocol address. */ ++ unsigned short int ar_op; /* ARP opcode (command). */ ++#if 0 ++ /* Ethernet looks like this : This bit is variable sized ++ however... */ ++ unsigned char __ar_sha[ETH_ALEN]; /* Sender hardware address. */ ++ unsigned char __ar_sip[4]; /* Sender IP address. */ ++ unsigned char __ar_tha[ETH_ALEN]; /* Target hardware address. */ ++ unsigned char __ar_tip[4]; /* Target IP address. */ ++#endif ++ }; ++ ++ ++/* ARP protocol HARDWARE identifiers. */ ++#define ARPHRD_NETROM 0 /* From KA9Q: NET/ROM pseudo. */ ++#define ARPHRD_ETHER 1 /* Ethernet 10/100Mbps. */ ++#define ARPHRD_EETHER 2 /* Experimental Ethernet. */ ++#define ARPHRD_AX25 3 /* AX.25 Level 2. */ ++#define ARPHRD_PRONET 4 /* PROnet token ring. */ ++#define ARPHRD_CHAOS 5 /* Chaosnet. */ ++#define ARPHRD_IEEE802 6 /* IEEE 802.2 Ethernet/TR/TB. */ ++#define ARPHRD_ARCNET 7 /* ARCnet. */ ++#define ARPHRD_APPLETLK 8 /* APPLEtalk. */ ++#define ARPHRD_DLCI 15 /* Frame Relay DLCI. */ ++#define ARPHRD_ATM 19 /* ATM. */ ++#define ARPHRD_METRICOM 23 /* Metricom STRIP (new IANA id). */ ++#define ARPHRD_IEEE1394 24 /* IEEE 1394 IPv4 - RFC 2734. */ ++#define ARPHRD_EUI64 27 /* EUI-64. */ ++#define ARPHRD_INFINIBAND 32 /* InfiniBand. */ ++ ++/* Dummy types for non ARP hardware */ ++#define ARPHRD_SLIP 256 ++#define ARPHRD_CSLIP 257 ++#define ARPHRD_SLIP6 258 ++#define ARPHRD_CSLIP6 259 ++#define ARPHRD_RSRVD 260 /* Notional KISS type. */ ++#define ARPHRD_ADAPT 264 ++#define ARPHRD_ROSE 270 ++#define ARPHRD_X25 271 /* CCITT X.25. */ ++#define ARPHRD_HWX25 272 /* Boards with X.25 in firmware. */ ++#define ARPHRD_PPP 512 ++#define ARPHRD_CISCO 513 /* Cisco HDLC. */ ++#define ARPHRD_HDLC ARPHRD_CISCO ++#define ARPHRD_LAPB 516 /* LAPB. */ ++#define ARPHRD_DDCMP 517 /* Digital's DDCMP. */ ++#define ARPHRD_RAWHDLC 518 /* Raw HDLC. */ ++ ++#define ARPHRD_TUNNEL 768 /* IPIP tunnel. */ ++#define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel. */ ++#define ARPHRD_FRAD 770 /* Frame Relay Access Device. */ ++#define ARPHRD_SKIP 771 /* SKIP vif. */ ++#define ARPHRD_LOOPBACK 772 /* Loopback device. */ ++#define ARPHRD_LOCALTLK 773 /* Localtalk device. */ ++#define ARPHRD_FDDI 774 /* Fiber Distributed Data Interface. */ ++#define ARPHRD_BIF 775 /* AP1000 BIF. */ ++#define ARPHRD_SIT 776 /* sit0 device - IPv6-in-IPv4. */ ++#define ARPHRD_IPDDP 777 /* IP-in-DDP tunnel. */ ++#define ARPHRD_IPGRE 778 /* GRE over IP. */ ++#define ARPHRD_PIMREG 779 /* PIMSM register interface. */ ++#define ARPHRD_HIPPI 780 /* High Performance Parallel I'face. */ ++#define ARPHRD_ASH 781 /* (Nexus Electronics) Ash. */ ++#define ARPHRD_ECONET 782 /* Acorn Econet. */ ++#define ARPHRD_IRDA 783 /* Linux-IrDA. */ ++#define ARPHRD_FCPP 784 /* Point to point fibrechanel. */ ++#define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */ ++#define ARPHRD_FCPL 786 /* Fibrechanel public loop. */ ++#define ARPHRD_FCFABRIC 787 /* Fibrechanel fabric. */ ++#define ARPHRD_IEEE802_TR 800 /* Magic type ident for TR. */ ++#define ARPHRD_IEEE80211 801 /* IEEE 802.11. */ ++#define ARPHRD_IEEE80211_PRISM 802 /* IEEE 802.11 + Prism2 header. */ ++#define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header. */ ++#define ARPHRD_IEEE802154 804 /* IEEE 802.15.4 header. */ ++#define ARPHRD_IEEE802154_PHY 805 /* IEEE 802.15.4 PHY header. */ ++ ++#define ARPHRD_VOID 0xFFFF /* Void type, nothing is known. */ ++#define ARPHRD_NONE 0xFFFE /* Zero header length. */ ++ ++ ++/* ARP ioctl request. */ ++struct arpreq ++ { ++ struct sockaddr arp_pa; /* Protocol address. */ ++ struct sockaddr arp_ha; /* Hardware address. */ ++ int arp_flags; /* Flags. */ ++ struct sockaddr arp_netmask; /* Netmask (only for proxy arps). */ ++ char arp_dev[16]; ++ }; ++ ++struct arpreq_old ++ { ++ struct sockaddr arp_pa; /* Protocol address. */ ++ struct sockaddr arp_ha; /* Hardware address. */ ++ int arp_flags; /* Flags. */ ++ struct sockaddr arp_netmask; /* Netmask (only for proxy arps). */ ++ }; ++ ++/* ARP Flag values. */ ++#define ATF_COM 0x02 /* Completed entry (ha valid). */ ++#define ATF_PERM 0x04 /* Permanent entry. */ ++#define ATF_PUBL 0x08 /* Publish entry. */ ++#define ATF_USETRAILERS 0x10 /* Has requested trailers. */ ++#define ATF_NETMASK 0x20 /* Want to use a netmask (only ++ for proxy entries). */ ++#define ATF_DONTPUB 0x40 /* Don't answer this addresses. */ ++#define ATF_MAGIC 0x80 /* Automatically added entry. */ ++ ++ ++/* Support for the user space arp daemon, arpd. */ ++#define ARPD_UPDATE 0x01 ++#define ARPD_LOOKUP 0x02 ++#define ARPD_FLUSH 0x03 ++ ++struct arpd_request ++ { ++ unsigned short int req; /* Request type. */ ++ u_int32_t ip; /* IP address of entry. */ ++ unsigned long int dev; /* Device entry is tied to. */ ++ unsigned long int stamp; ++ unsigned long int updated; ++ unsigned char ha[MAX_ADDR_LEN]; /* Hardware address. */ ++ }; ++ ++__END_DECLS ++ ++#endif /* net/if_arp.h */ +--- /dev/null ++++ b/sysdeps/gnu/net/if_ether.h +@@ -0,0 +1,116 @@ ++/* Copyright (C) 1997,2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _NET_IF_ETHER_H ++#define _NET_IF_ETHER_H 1 ++ ++/* ++ * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble ++ * and FCS/CRC (frame check sequence). ++ */ ++ ++#define ETH_ALEN 6 /* Octets in one ethernet addr */ ++#define ETH_HLEN 14 /* Total octets in header. */ ++#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ ++#define ETH_DATA_LEN 1500 /* Max. octets in payload */ ++#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ ++#define ETH_FCS_LEN 4 /* Octets in the FCS */ ++ ++/* ++ * These are the defined Ethernet Protocol ID's. ++ */ ++ ++#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ ++#define ETH_P_PUP 0x0200 /* Xerox PUP packet */ ++#define ETH_P_PUPAT 0x0201 /* Xerox PUP Addr Trans packet */ ++#define ETH_P_IP 0x0800 /* Internet Protocol packet */ ++#define ETH_P_X25 0x0805 /* CCITT X.25 */ ++#define ETH_P_ARP 0x0806 /* Address Resolution packet */ ++#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ ++#define ETH_P_IEEEPUP 0x0a00 /* Xerox IEEE802.3 PUP packet */ ++#define ETH_P_IEEEPUPAT 0x0a01 /* Xerox IEEE802.3 PUP Addr Trans packet */ ++#define ETH_P_DEC 0x6000 /* DEC Assigned proto */ ++#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ ++#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ ++#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ ++#define ETH_P_LAT 0x6004 /* DEC LAT */ ++#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ ++#define ETH_P_CUST 0x6006 /* DEC Customer use */ ++#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ ++#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ ++#define ETH_P_ATALK 0x809B /* Appletalk DDP */ ++#define ETH_P_AARP 0x80F3 /* Appletalk AARP */ ++#define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */ ++#define ETH_P_IPX 0x8137 /* IPX over DIX */ ++#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ ++#define ETH_P_PAUSE 0x8808 /* IEEE Pause frames. See 802.3 31B */ ++#define ETH_P_SLOW 0x8809 /* Slow Protocol. See 802.3ad 43B */ ++#define ETH_P_WCCP 0x883E /* Web-cache coordination protocol ++ * defined in draft-wilson-wrec-wccp-v2-00.txt */ ++#define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */ ++#define ETH_P_PPP_SES 0x8864 /* PPPoE session messages */ ++#define ETH_P_MPLS_UC 0x8847 /* MPLS Unicast traffic */ ++#define ETH_P_MPLS_MC 0x8848 /* MPLS Multicast traffic */ ++#define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */ ++#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport ++ * over Ethernet ++ */ ++#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */ ++#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */ ++#define ETH_P_TIPC 0x88CA /* TIPC */ ++#define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */ ++#define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */ ++ ++/* ++ * Non DIX types. Won't clash for 1500 types. ++ */ ++ ++#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ ++#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ ++#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ ++#define ETH_P_802_2 0x0004 /* 802.2 frames */ ++#define ETH_P_SNAP 0x0005 /* Internal only */ ++#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ ++#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ ++#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ ++#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ ++#define ETH_P_CAN 0x000C /* Controller Area Network */ ++#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ ++#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ ++#define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */ ++#define ETH_P_CONTROL 0x0016 /* Card specific control frames */ ++#define ETH_P_IRDA 0x0017 /* Linux-IrDA */ ++#define ETH_P_ECONET 0x0018 /* Acorn Econet */ ++#define ETH_P_HDLC 0x0019 /* HDLC frames */ ++#define ETH_P_ARCNET 0x001A /* 1A for ArcNet :-) */ ++#define ETH_P_DSA 0x001B /* Distributed Switch Arch. */ ++#define ETH_P_TRAILER 0x001C /* Trailer switch tagging */ ++#define ETH_P_PHONET 0x00F5 /* Nokia Phonet frames */ ++ ++/* ++ * This is an Ethernet frame header. ++ */ ++ ++struct ethhdr ++{ ++ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ ++ unsigned char h_source[ETH_ALEN]; /* source ether addr */ ++ unsigned short int h_proto; /* packet type ID field */ ++} __attribute__((packed)); ++ ++#endif /* net/if_ether.h */ +--- /dev/null ++++ b/sysdeps/gnu/net/if_ppp.h +@@ -0,0 +1,169 @@ ++/* From: if_ppp.h,v 1.3 1995/06/12 11:36:50 paulus Exp */ ++ ++/* ++ * if_ppp.h - Point-to-Point Protocol definitions. ++ * ++ * Copyright (c) 1989 Carnegie Mellon University. ++ * ++ * 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 University 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 CARNEGIE MELLON UNIVERSITY 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 UNIVERSITY 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. ++ * ++ */ ++ ++/* ++ * ==FILEVERSION 960926== ++ * ++ * NOTE TO MAINTAINERS: ++ * If you modify this file at all, please set the above date. ++ * if_ppp.h is shipped with a PPP distribution as well as with the kernel; ++ * if everyone increases the FILEVERSION number above, then scripts ++ * can do the right thing when deciding whether to install a new if_ppp.h ++ * file. Don't change the format of that line otherwise, so the ++ * installation script can recognize it. ++ */ ++ ++ ++#ifndef __NET_IF_PPP_H ++#define __NET_IF_PPP_H 1 ++ ++#include ++#include ++ ++#include ++#include ++#include ++ ++__BEGIN_DECLS ++ ++/* ++ * Packet sizes ++ */ ++ ++#define PPP_MTU 1500 /* Default MTU (size of Info field) */ ++#define PPP_MAXMRU 65000 /* Largest MRU we allow */ ++#define PPP_VERSION "2.2.0" ++#define PPP_MAGIC 0x5002 /* Magic value for the ppp structure */ ++#define PROTO_IPX 0x002b /* protocol numbers */ ++#define PROTO_DNA_RT 0x0027 /* DNA Routing */ ++ ++ ++/* ++ * Bit definitions for flags. ++ */ ++ ++#define SC_COMP_PROT 0x00000001 /* protocol compression (output) */ ++#define SC_COMP_AC 0x00000002 /* header compression (output) */ ++#define SC_COMP_TCP 0x00000004 /* TCP (VJ) compression (output) */ ++#define SC_NO_TCP_CCID 0x00000008 /* disable VJ connection-id comp. */ ++#define SC_REJ_COMP_AC 0x00000010 /* reject adrs/ctrl comp. on input */ ++#define SC_REJ_COMP_TCP 0x00000020 /* reject TCP (VJ) comp. on input */ ++#define SC_CCP_OPEN 0x00000040 /* Look at CCP packets */ ++#define SC_CCP_UP 0x00000080 /* May send/recv compressed packets */ ++#define SC_ENABLE_IP 0x00000100 /* IP packets may be exchanged */ ++#define SC_COMP_RUN 0x00001000 /* compressor has been inited */ ++#define SC_DECOMP_RUN 0x00002000 /* decompressor has been inited */ ++#define SC_DEBUG 0x00010000 /* enable debug messages */ ++#define SC_LOG_INPKT 0x00020000 /* log contents of good pkts recvd */ ++#define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */ ++#define SC_LOG_RAWIN 0x00080000 /* log all chars received */ ++#define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */ ++#define SC_MASK 0x0fE0ffff /* bits that user can change */ ++ ++/* state bits */ ++#define SC_ESCAPED 0x80000000 /* saw a PPP_ESCAPE */ ++#define SC_FLUSH 0x40000000 /* flush input until next PPP_FLAG */ ++#define SC_VJ_RESET 0x20000000 /* Need to reset the VJ decompressor */ ++#define SC_XMIT_BUSY 0x10000000 /* ppp_write_wakeup is active */ ++#define SC_RCV_ODDP 0x08000000 /* have rcvd char with odd parity */ ++#define SC_RCV_EVNP 0x04000000 /* have rcvd char with even parity */ ++#define SC_RCV_B7_1 0x02000000 /* have rcvd char with bit 7 = 1 */ ++#define SC_RCV_B7_0 0x01000000 /* have rcvd char with bit 7 = 0 */ ++#define SC_DC_FERROR 0x00800000 /* fatal decomp error detected */ ++#define SC_DC_ERROR 0x00400000 /* non-fatal decomp error detected */ ++ ++/* ++ * Ioctl definitions. ++ */ ++ ++struct npioctl { ++ int protocol; /* PPP protocol, e.g. PPP_IP */ ++ enum NPmode mode; ++}; ++ ++/* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */ ++struct ppp_option_data { ++ u_int8_t *ptr; ++ u_int32_t length; ++ int transmit; ++}; ++ ++struct ifpppstatsreq { ++ struct ifreq b; ++ struct ppp_stats stats; /* statistic information */ ++}; ++ ++struct ifpppcstatsreq { ++ struct ifreq b; ++ struct ppp_comp_stats stats; ++}; ++ ++#define ifr__name b.ifr_ifrn.ifrn_name ++#define stats_ptr b.ifr_ifru.ifru_data ++ ++/* ++ * Ioctl definitions. ++ */ ++ ++#define PPPIOCGFLAGS _IOR('t', 90, int) /* get configuration flags */ ++#define PPPIOCSFLAGS _IOW('t', 89, int) /* set configuration flags */ ++#define PPPIOCGASYNCMAP _IOR('t', 88, int) /* get async map */ ++#define PPPIOCSASYNCMAP _IOW('t', 87, int) /* set async map */ ++#define PPPIOCGUNIT _IOR('t', 86, int) /* get ppp unit number */ ++#define PPPIOCGRASYNCMAP _IOR('t', 85, int) /* get receive async map */ ++#define PPPIOCSRASYNCMAP _IOW('t', 84, int) /* set receive async map */ ++#define PPPIOCGMRU _IOR('t', 83, int) /* get max receive unit */ ++#define PPPIOCSMRU _IOW('t', 82, int) /* set max receive unit */ ++#define PPPIOCSMAXCID _IOW('t', 81, int) /* set VJ max slot ID */ ++#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */ ++#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */ ++#define PPPIOCXFERUNIT _IO('t', 78) /* transfer PPP unit */ ++#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data) ++#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl) /* get NP mode */ ++#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl) /* set NP mode */ ++#define PPPIOCGDEBUG _IOR('t', 65, int) /* Read debug level */ ++#define PPPIOCSDEBUG _IOW('t', 64, int) /* Set debug level */ ++#define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle) /* get idle time */ ++ ++#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0) ++#define SIOCGPPPVER (SIOCDEVPRIVATE + 1) /* NEVER change this!! */ ++#define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2) ++ ++#if !defined(ifr_mtu) ++#define ifr_mtu ifr_ifru.ifru_metric ++#endif ++ ++__END_DECLS ++ ++#endif /* net/if_ppp.h */ +--- /dev/null ++++ b/sysdeps/gnu/net/route.h +@@ -0,0 +1,145 @@ ++/* Copyright (C) 1997, 2002 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* Based on the 4.4BSD and Linux version of this file. */ ++ ++#ifndef _NET_ROUTE_H ++#define _NET_ROUTE_H 1 ++ ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */ ++struct rtentry ++ { ++ unsigned long int rt_pad1; ++ struct sockaddr rt_dst; /* Target address. */ ++ struct sockaddr rt_gateway; /* Gateway addr (RTF_GATEWAY). */ ++ struct sockaddr rt_genmask; /* Target network mask (IP). */ ++ unsigned short int rt_flags; ++ short int rt_pad2; ++ unsigned long int rt_pad3; ++ unsigned char rt_tos; ++ unsigned char rt_class; ++#if __WORDSIZE == 64 ++ short int rt_pad4[3]; ++#else ++ short int rt_pad4; ++#endif ++ short int rt_metric; /* +1 for binary compatibility! */ ++ char *rt_dev; /* Forcing the device at add. */ ++ unsigned long int rt_mtu; /* Per route MTU/Window. */ ++ unsigned long int rt_window; /* Window clamping. */ ++ unsigned short int rt_irtt; /* Initial RTT. */ ++ }; ++/* Compatibility hack. */ ++#define rt_mss rt_mtu ++ ++ ++struct in6_rtmsg ++ { ++ struct in6_addr rtmsg_dst; ++ struct in6_addr rtmsg_src; ++ struct in6_addr rtmsg_gateway; ++ u_int32_t rtmsg_type; ++ u_int16_t rtmsg_dst_len; ++ u_int16_t rtmsg_src_len; ++ u_int32_t rtmsg_metric; ++ unsigned long int rtmsg_info; ++ u_int32_t rtmsg_flags; ++ int rtmsg_ifindex; ++ }; ++ ++ ++#define RTF_UP 0x0001 /* Route usable. */ ++#define RTF_GATEWAY 0x0002 /* Destination is a gateway. */ ++ ++#define RTF_HOST 0x0004 /* Host entry (net otherwise). */ ++#define RTF_REINSTATE 0x0008 /* Reinstate route after timeout. */ ++#define RTF_DYNAMIC 0x0010 /* Created dyn. (by redirect). */ ++#define RTF_MODIFIED 0x0020 /* Modified dyn. (by redirect). */ ++#define RTF_MTU 0x0040 /* Specific MTU for this route. */ ++#define RTF_MSS RTF_MTU /* Compatibility. */ ++#define RTF_WINDOW 0x0080 /* Per route window clamping. */ ++#define RTF_IRTT 0x0100 /* Initial round trip time. */ ++#define RTF_REJECT 0x0200 /* Reject route. */ ++#define RTF_STATIC 0x0400 /* Manually injected route. */ ++#define RTF_XRESOLVE 0x0800 /* External resolver. */ ++#define RTF_NOFORWARD 0x1000 /* Forwarding inhibited. */ ++#define RTF_THROW 0x2000 /* Go to next class. */ ++#define RTF_NOPMTUDISC 0x4000 /* Do not send packets with DF. */ ++ ++/* for IPv6 */ ++#define RTF_DEFAULT 0x00010000 /* default - learned via ND */ ++#define RTF_ALLONLINK 0x00020000 /* fallback, no routers on link */ ++#define RTF_ADDRCONF 0x00040000 /* addrconf route - RA */ ++ ++#define RTF_LINKRT 0x00100000 /* link specific - device match */ ++#define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */ ++ ++#define RTF_CACHE 0x01000000 /* cache entry */ ++#define RTF_FLOW 0x02000000 /* flow significant route */ ++#define RTF_POLICY 0x04000000 /* policy route */ ++ ++#define RTCF_VALVE 0x00200000 ++#define RTCF_MASQ 0x00400000 ++#define RTCF_NAT 0x00800000 ++#define RTCF_DOREDIRECT 0x01000000 ++#define RTCF_LOG 0x02000000 ++#define RTCF_DIRECTSRC 0x04000000 ++ ++#define RTF_LOCAL 0x80000000 ++#define RTF_INTERFACE 0x40000000 ++#define RTF_MULTICAST 0x20000000 ++#define RTF_BROADCAST 0x10000000 ++#define RTF_NAT 0x08000000 ++ ++#define RTF_ADDRCLASSMASK 0xF8000000 ++#define RT_ADDRCLASS(flags) ((__u_int32_t) flags >> 23) ++ ++#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK) ++ ++#define RT_LOCALADDR(flags) ((flags & RTF_ADDRCLASSMASK) \ ++ == (RTF_LOCAL|RTF_INTERFACE)) ++ ++#define RT_CLASS_UNSPEC 0 ++#define RT_CLASS_DEFAULT 253 ++ ++#define RT_CLASS_MAIN 254 ++#define RT_CLASS_LOCAL 255 ++#define RT_CLASS_MAX 255 ++ ++ ++#define RTMSG_ACK NLMSG_ACK ++#define RTMSG_OVERRUN NLMSG_OVERRUN ++ ++#define RTMSG_NEWDEVICE 0x11 ++#define RTMSG_DELDEVICE 0x12 ++#define RTMSG_NEWROUTE 0x21 ++#define RTMSG_DELROUTE 0x22 ++#define RTMSG_NEWRULE 0x31 ++#define RTMSG_DELRULE 0x32 ++#define RTMSG_CONTROL 0x40 ++ ++#define RTMSG_AR_FAILED 0x51 /* Address Resolution failed. */ ++ ++#endif /* net/route.h */ +--- /dev/null ++++ b/sysdeps/gnu/netinet/if_ether.h +@@ -0,0 +1,104 @@ ++/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef __NETINET_IF_ETHER_H ++ ++#define __NETINET_IF_ETHER_H 1 ++#include ++#include ++ ++#include ++ ++#ifdef __USE_BSD ++/* ++ * Copyright (c) 1982, 1986, 1993 ++ * The Regents of the University of California. 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. ++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. ++ * ++ * @(#)if_ether.h 8.3 (Berkeley) 5/2/95 ++ * $FreeBSD$ ++ */ ++ ++#include ++#include ++ ++__BEGIN_DECLS ++/* ++ * Ethernet Address Resolution Protocol. ++ * ++ * See RFC 826 for protocol description. Structure below is adapted ++ * to resolving internet addresses. Field names used correspond to ++ * RFC 826. ++ */ ++struct ether_arp { ++ struct arphdr ea_hdr; /* fixed-size header */ ++ u_int8_t arp_sha[ETH_ALEN]; /* sender hardware address */ ++ u_int8_t arp_spa[4]; /* sender protocol address */ ++ u_int8_t arp_tha[ETH_ALEN]; /* target hardware address */ ++ u_int8_t arp_tpa[4]; /* target protocol address */ ++}; ++#define arp_hrd ea_hdr.ar_hrd ++#define arp_pro ea_hdr.ar_pro ++#define arp_hln ea_hdr.ar_hln ++#define arp_pln ea_hdr.ar_pln ++#define arp_op ea_hdr.ar_op ++ ++/* ++ * Macro to map an IP multicast address to an Ethernet multicast address. ++ * The high-order 25 bits of the Ethernet address are statically assigned, ++ * and the low-order 23 bits are taken from the low end of the IP address. ++ */ ++#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ ++ /* struct in_addr *ipaddr; */ \ ++ /* u_char enaddr[ETH_ALEN]; */ \ ++{ \ ++ (enaddr)[0] = 0x01; \ ++ (enaddr)[1] = 0x00; \ ++ (enaddr)[2] = 0x5e; \ ++ (enaddr)[3] = ((u_int8_t *)ipaddr)[1] & 0x7f; \ ++ (enaddr)[4] = ((u_int8_t *)ipaddr)[2]; \ ++ (enaddr)[5] = ((u_int8_t *)ipaddr)[3]; \ ++} ++ ++__END_DECLS ++#endif /* __USE_BSD */ ++ ++#endif /* netinet/if_ether.h */ +--- a/sysdeps/mach/hurd/Makefile ++++ b/sysdeps/mach/hurd/Makefile +@@ -206,11 +206,6 @@ + sysdep_headers += nfs/nfs.h + endif + +-ifeq ($(subdir),socket) +-sysdep_headers += net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h \ +- net/route.h +-endif +- + ifeq ($(subdir),csu) + routines += unwind-resume + shared-only-routines += unwind-resume +--- a/sysdeps/mach/hurd/net/ethernet.h ++++ /dev/null +@@ -1,76 +0,0 @@ +-/* Copyright (C) 1997 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Based on the FreeBSD version of this file. Curiously, that file +- lacks a copyright in the header. */ +- +-#ifndef __NET_ETHERNET_H +-#define __NET_ETHERNET_H 1 +- +-#include +-#include +-#include /* IEEE 802.3 Ethernet constants */ +- +-__BEGIN_DECLS +- +-/* This is a name for the 48 bit ethernet address available on many +- systems. */ +-struct ether_addr +-{ +- u_int8_t ether_addr_octet[ETH_ALEN]; +-}; +- +-/* 10Mb/s ethernet header */ +-struct ether_header +-{ +- u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ +- u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ +- u_int16_t ether_type; /* packet type ID field */ +-}; +- +-/* Ethernet protocol ID's */ +-#define ETHERTYPE_PUP 0x0200 /* Xerox PUP */ +-#define ETHERTYPE_IP 0x0800 /* IP */ +-#define ETHERTYPE_ARP 0x0806 /* Address resolution */ +-#define ETHERTYPE_REVARP 0x8035 /* Reverse ARP */ +- +-#define ETHER_ADDR_LEN ETH_ALEN /* size of ethernet addr */ +-#define ETHER_TYPE_LEN 2 /* bytes in type field */ +-#define ETHER_CRC_LEN 4 /* bytes in CRC field */ +-#define ETHER_HDR_LEN ETH_HLEN /* total octets in header */ +-#define ETHER_MIN_LEN (ETH_ZLEN + ETH_CRC_LEN) /* min packet length */ +-#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETH_CRC_LEN) /* max packet length */ +- +-/* make sure ethenet length is valid */ +-#define ETHER_IS_VALID_LEN(foo) \ +- ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) +- +-/* +- * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have +- * (type-ETHERTYPE_TRAIL)*512 bytes of data followed +- * by an ETHER type (as given above) and then the (variable-length) header. +- */ +-#define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ +-#define ETHERTYPE_NTRAILER 16 +- +-#define ETHERMTU ETH_DATA_LEN +-#define ETHERMIN (ETHER_MIN_LEN-ETHER_HDR_LEN-ETHER_CRC_LEN) +- +-__END_DECLS +- +-#endif /* net/ethernet.h */ +--- a/sysdeps/mach/hurd/net/if_arp.h ++++ /dev/null +@@ -1,145 +0,0 @@ +-/* Definitions for Address Resolution Protocol. +- Copyright (C) 1997 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 1997. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Based on the 4.4BSD and Linux version of this file. */ +- +-#ifndef _NET_IF_ARP_H +- +-#define _NET_IF_ARP_H 1 +-#include +- +-#include +-#include +- +-__BEGIN_DECLS +- +-/* Some internals from deep down in the kernel. */ +-#define MAX_ADDR_LEN 7 +- +- +-/* This structure defines an ethernet arp header. */ +- +-/* ARP protocol opcodes. */ +-#define ARPOP_REQUEST 1 /* ARP request. */ +-#define ARPOP_REPLY 2 /* ARP reply. */ +-#define ARPOP_RREQUEST 3 /* RARP request. */ +-#define ARPOP_RREPLY 4 /* RARP reply. */ +- +-/* See RFC 826 for protocol description. ARP packets are variable +- in size; the arphdr structure defines the fixed-length portion. +- Protocol type values are the same as those for 10 Mb/s Ethernet. +- It is followed by the variable-sized fields ar_sha, arp_spa, +- arp_tha and arp_tpa in that order, according to the lengths +- specified. Field names used correspond to RFC 826. */ +- +-struct arphdr +- { +- unsigned short int ar_hrd; /* Format of hardware address. */ +- unsigned short int ar_pro; /* Format of protocol address. */ +- unsigned char ar_hln; /* Length of hardware address. */ +- unsigned char ar_pln; /* Length of protocol address. */ +- unsigned short int ar_op; /* ARP opcode (command). */ +-#if 0 +- /* Ethernet looks like this : This bit is variable sized +- however... */ +- unsigned char __ar_sha[ETH_ALEN]; /* Sender hardware address. */ +- unsigned char __ar_sip[4]; /* Sender IP address. */ +- unsigned char __ar_tha[ETH_ALEN]; /* Target hardware address. */ +- unsigned char __ar_tip[4]; /* Target IP address. */ +-#endif +- }; +- +- +-/* ARP protocol HARDWARE identifiers. */ +-#define ARPHRD_NETROM 0 /* From KA9Q: NET/ROM pseudo. */ +-#define ARPHRD_ETHER 1 /* Ethernet 10Mbps. */ +-#define ARPHRD_EETHER 2 /* Experimental Ethernet. */ +-#define ARPHRD_AX25 3 /* AX.25 Level 2. */ +-#define ARPHRD_PRONET 4 /* PROnet token ring. */ +-#define ARPHRD_CHAOS 5 /* Chaosnet. */ +-#define ARPHRD_IEEE802 6 /* IEEE 802.2 Ethernet/TR/TB. */ +-#define ARPHRD_ARCNET 7 /* ARCnet. */ +-#define ARPHRD_APPLETLK 8 /* APPLEtalk. */ +-#define ARPHRD_DLCI 15 /* Frame Relay DLCI. */ +-#define ARPHRD_METRICOM 23 /* Metricom STRIP (new IANA id). */ +- +-/* Dummy types for non ARP hardware */ +-#define ARPHRD_SLIP 256 +-#define ARPHRD_CSLIP 257 +-#define ARPHRD_SLIP6 258 +-#define ARPHRD_CSLIP6 259 +-#define ARPHRD_RSRVD 260 /* Notional KISS type. */ +-#define ARPHRD_ADAPT 264 +-#define ARPHRD_ROSE 270 +-#define ARPHRD_X25 271 /* CCITT X.25. */ +-#define ARPHRD_PPP 512 +-#define ARPHRD_HDLC 513 /* (Cisco) HDLC. */ +-#define ARPHRD_LAPB 516 /* LAPB. */ +- +-#define ARPHRD_TUNNEL 768 /* IPIP tunnel. */ +-#define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel. */ +-#define ARPHRD_FRAD 770 /* Frame Relay Access Device. */ +-#define ARPHRD_SKIP 771 /* SKIP vif. */ +-#define ARPHRD_LOOPBACK 772 /* Loopback device. */ +-#define ARPHRD_LOCALTLK 773 /* Localtalk device. */ +-#define ARPHRD_FDDI 774 /* Fiber Distributed Data Interface. */ +-#define ARPHRD_BIF 775 /* AP1000 BIF. */ +-#define ARPHRD_SIT 776 /* sit0 device - IPv6-in-IPv4. */ +- +- +-/* ARP ioctl request. */ +-struct arpreq +- { +- struct sockaddr arp_pa; /* Protocol address. */ +- struct sockaddr arp_ha; /* Hardware address. */ +- int arp_flags; /* Flags. */ +- struct sockaddr arp_netmask; /* Netmask (only for proxy arps). */ +- char arp_dev[16]; +- }; +- +-/* ARP Flag values. */ +-#define ATF_COM 0x02 /* Completed entry (ha valid). */ +-#define ATF_PERM 0x04 /* Permanent entry. */ +-#define ATF_PUBL 0x08 /* Publish entry. */ +-#define ATF_USETRAILERS 0x10 /* Has requested trailers. */ +-#define ATF_NETMASK 0x20 /* Want to use a netmask (only +- for proxy entries). */ +-#define ATF_DONTPUB 0x40 /* Don't answer this addresses. */ +-#define ATF_MAGIC 0x80 /* Automatically added entry. */ +- +- +-/* Support for the user space arp daemon, arpd. */ +-#define ARPD_UPDATE 0x01 +-#define ARPD_LOOKUP 0x02 +-#define ARPD_FLUSH 0x03 +- +-struct arpd_request +- { +- unsigned short int req; /* Request type. */ +- u_int32_t ip; /* IP address of entry. */ +- unsigned long int dev; /* Device entry is tied to. */ +- unsigned long int stamp; +- unsigned long int updated; +- unsigned char ha[MAX_ADDR_LEN]; /* Hardware address. */ +- }; +- +-__END_DECLS +- +-#endif /* net/if_arp.h */ +--- a/sysdeps/mach/hurd/net/if_ether.h ++++ /dev/null +@@ -1,85 +0,0 @@ +-/* Copyright (C) 1997 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#ifndef _NET_IF_ETHER_H +-#define _NET_IF_ETHER_H 1 +- +-/* +- * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble +- * and FCS/CRC (frame check sequence). +- */ +- +-#define ETH_ALEN 6 /* Octets in one ethernet addr */ +-#define ETH_HLEN 14 /* Total octets in header. */ +-#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ +-#define ETH_DATA_LEN 1500 /* Max. octets in payload */ +-#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ +- +-/* +- * These are the defined Ethernet Protocol ID's. +- */ +- +-#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ +-#define ETH_P_ECHO 0x0200 /* Ethernet Echo packet */ +-#define ETH_P_PUP 0x0400 /* Xerox PUP packet */ +-#define ETH_P_IP 0x0800 /* Internet Protocol packet */ +-#define ETH_P_X25 0x0805 /* CCITT X.25 */ +-#define ETH_P_ARP 0x0806 /* Address Resolution packet */ +-#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ +-#define ETH_P_DEC 0x6000 /* DEC Assigned proto */ +-#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ +-#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ +-#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ +-#define ETH_P_LAT 0x6004 /* DEC LAT */ +-#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ +-#define ETH_P_CUST 0x6006 /* DEC Customer use */ +-#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ +-#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ +-#define ETH_P_ATALK 0x809B /* Appletalk DDP */ +-#define ETH_P_AARP 0x80F3 /* Appletalk AARP */ +-#define ETH_P_IPX 0x8137 /* IPX over DIX */ +-#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ +- +-/* +- * Non DIX types. Won't clash for 1500 types. +- */ +- +-#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ +-#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ +-#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ +-#define ETH_P_802_2 0x0004 /* 802.2 frames */ +-#define ETH_P_SNAP 0x0005 /* Internal only */ +-#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ +-#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ +-#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ +-#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ +-#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ +-#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ +- +-/* +- * This is an Ethernet frame header. +- */ +- +-struct ethhdr +-{ +- unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ +- unsigned char h_source[ETH_ALEN]; /* source ether addr */ +- unsigned short int h_proto; /* packet type ID field */ +-}; +- +-#endif /* net/if_ether.h */ +--- a/sysdeps/mach/hurd/net/if_ppp.h ++++ /dev/null +@@ -1,169 +0,0 @@ +-/* From: if_ppp.h,v 1.3 1995/06/12 11:36:50 paulus Exp */ +- +-/* +- * if_ppp.h - Point-to-Point Protocol definitions. +- * +- * Copyright (c) 1989 Carnegie Mellon University. +- * +- * 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 University 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 CARNEGIE MELLON UNIVERSITY 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 UNIVERSITY 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. +- * +- */ +- +-/* +- * ==FILEVERSION 960926== +- * +- * NOTE TO MAINTAINERS: +- * If you modify this file at all, please set the above date. +- * if_ppp.h is shipped with a PPP distribution as well as with the kernel; +- * if everyone increases the FILEVERSION number above, then scripts +- * can do the right thing when deciding whether to install a new if_ppp.h +- * file. Don't change the format of that line otherwise, so the +- * installation script can recognize it. +- */ +- +- +-#ifndef __NET_IF_PPP_H +-#define __NET_IF_PPP_H 1 +- +-#include +-#include +- +-#include +-#include +-#include +- +-__BEGIN_DECLS +- +-/* +- * Packet sizes +- */ +- +-#define PPP_MTU 1500 /* Default MTU (size of Info field) */ +-#define PPP_MAXMRU 65000 /* Largest MRU we allow */ +-#define PPP_VERSION "2.2.0" +-#define PPP_MAGIC 0x5002 /* Magic value for the ppp structure */ +-#define PROTO_IPX 0x002b /* protocol numbers */ +-#define PROTO_DNA_RT 0x0027 /* DNA Routing */ +- +- +-/* +- * Bit definitions for flags. +- */ +- +-#define SC_COMP_PROT 0x00000001 /* protocol compression (output) */ +-#define SC_COMP_AC 0x00000002 /* header compression (output) */ +-#define SC_COMP_TCP 0x00000004 /* TCP (VJ) compression (output) */ +-#define SC_NO_TCP_CCID 0x00000008 /* disable VJ connection-id comp. */ +-#define SC_REJ_COMP_AC 0x00000010 /* reject adrs/ctrl comp. on input */ +-#define SC_REJ_COMP_TCP 0x00000020 /* reject TCP (VJ) comp. on input */ +-#define SC_CCP_OPEN 0x00000040 /* Look at CCP packets */ +-#define SC_CCP_UP 0x00000080 /* May send/recv compressed packets */ +-#define SC_ENABLE_IP 0x00000100 /* IP packets may be exchanged */ +-#define SC_COMP_RUN 0x00001000 /* compressor has been inited */ +-#define SC_DECOMP_RUN 0x00002000 /* decompressor has been inited */ +-#define SC_DEBUG 0x00010000 /* enable debug messages */ +-#define SC_LOG_INPKT 0x00020000 /* log contents of good pkts recvd */ +-#define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */ +-#define SC_LOG_RAWIN 0x00080000 /* log all chars received */ +-#define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */ +-#define SC_MASK 0x0fE0ffff /* bits that user can change */ +- +-/* state bits */ +-#define SC_ESCAPED 0x80000000 /* saw a PPP_ESCAPE */ +-#define SC_FLUSH 0x40000000 /* flush input until next PPP_FLAG */ +-#define SC_VJ_RESET 0x20000000 /* Need to reset the VJ decompressor */ +-#define SC_XMIT_BUSY 0x10000000 /* ppp_write_wakeup is active */ +-#define SC_RCV_ODDP 0x08000000 /* have rcvd char with odd parity */ +-#define SC_RCV_EVNP 0x04000000 /* have rcvd char with even parity */ +-#define SC_RCV_B7_1 0x02000000 /* have rcvd char with bit 7 = 1 */ +-#define SC_RCV_B7_0 0x01000000 /* have rcvd char with bit 7 = 0 */ +-#define SC_DC_FERROR 0x00800000 /* fatal decomp error detected */ +-#define SC_DC_ERROR 0x00400000 /* non-fatal decomp error detected */ +- +-/* +- * Ioctl definitions. +- */ +- +-struct npioctl { +- int protocol; /* PPP protocol, e.g. PPP_IP */ +- enum NPmode mode; +-}; +- +-/* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */ +-struct ppp_option_data { +- u_int8_t *ptr; +- u_int32_t length; +- int transmit; +-}; +- +-struct ifpppstatsreq { +- struct ifreq b; +- struct ppp_stats stats; /* statistic information */ +-}; +- +-struct ifpppcstatsreq { +- struct ifreq b; +- struct ppp_comp_stats stats; +-}; +- +-#define ifr__name b.ifr_ifrn.ifrn_name +-#define stats_ptr b.ifr_ifru.ifru_data +- +-/* +- * Ioctl definitions. +- */ +- +-#define PPPIOCGFLAGS _IOR('t', 90, int) /* get configuration flags */ +-#define PPPIOCSFLAGS _IOW('t', 89, int) /* set configuration flags */ +-#define PPPIOCGASYNCMAP _IOR('t', 88, int) /* get async map */ +-#define PPPIOCSASYNCMAP _IOW('t', 87, int) /* set async map */ +-#define PPPIOCGUNIT _IOR('t', 86, int) /* get ppp unit number */ +-#define PPPIOCGRASYNCMAP _IOR('t', 85, int) /* get receive async map */ +-#define PPPIOCSRASYNCMAP _IOW('t', 84, int) /* set receive async map */ +-#define PPPIOCGMRU _IOR('t', 83, int) /* get max receive unit */ +-#define PPPIOCSMRU _IOW('t', 82, int) /* set max receive unit */ +-#define PPPIOCSMAXCID _IOW('t', 81, int) /* set VJ max slot ID */ +-#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */ +-#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */ +-#define PPPIOCXFERUNIT _IO('t', 78) /* transfer PPP unit */ +-#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data) +-#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl) /* get NP mode */ +-#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl) /* set NP mode */ +-#define PPPIOCGDEBUG _IOR('t', 65, int) /* Read debug level */ +-#define PPPIOCSDEBUG _IOW('t', 64, int) /* Set debug level */ +-#define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle) /* get idle time */ +- +-#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0) +-#define SIOCGPPPVER (SIOCDEVPRIVATE + 1) /* NEVER change this!! */ +-#define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2) +- +-#if !defined(ifr_mtu) +-#define ifr_mtu ifr_ifru.ifru_metric +-#endif +- +-__END_DECLS +- +-#endif /* net/if_ppp.h */ +--- a/sysdeps/mach/hurd/net/route.h ++++ /dev/null +@@ -1,141 +0,0 @@ +-/* Copyright (C) 1997 Free Software Foundation, Inc.. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Based on the 4.4BSD and Linux version of this file. */ +- +-#ifndef _NET_ROUTE_H +- +-#define _NET_ROUTE_H 1 +-#include +- +-#include +-#include +-#include +- +- +-/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */ +-struct rtentry +- { +- unsigned long int rt_pad1; +- struct sockaddr rt_dst; /* Target address. */ +- struct sockaddr rt_gateway; /* Gateway addr (RTF_GATEWAY). */ +- struct sockaddr rt_genmask; /* Target network mask (IP). */ +- unsigned short int rt_flags; +- short int rt_pad2; +- unsigned long int rt_pad3; +- unsigned char rt_tos; +- unsigned char rt_class; +- short int rt_pad4; +- short int rt_metric; /* +1 for binary compatibility! */ +- char *rt_dev; /* Forcing the device at add. */ +- unsigned long int rt_mtu; /* Per route MTU/Window. */ +- unsigned long int rt_window; /* Window clamping. */ +- unsigned short int rt_irtt; /* Initial RTT. */ +- }; +-/* Compatibility hack. */ +-#define rt_mss rt_mtu +- +- +-struct in6_rtmsg +- { +- struct in6_addr rtmsg_dst; +- struct in6_addr rtmsg_src; +- struct in6_addr rtmsg_gateway; +- u_int32_t rtmsg_type; +- u_int16_t rtmsg_dst_len; +- u_int16_t rtmsg_src_len; +- u_int32_t rtmsg_metric; +- unsigned long int rtmsg_info; +- u_int32_t rtmsg_flags; +- int rtmsg_ifindex; +- }; +- +- +-#define RTF_UP 0x0001 /* Route usable. */ +-#define RTF_GATEWAY 0x0002 /* Destination is a gateway. */ +- +-#define RTF_HOST 0x0004 /* Host entry (net otherwise). */ +-#define RTF_REINSTATE 0x0008 /* Reinstate route after timeout. */ +-#define RTF_DYNAMIC 0x0010 /* Created dyn. (by redirect). */ +-#define RTF_MODIFIED 0x0020 /* Modified dyn. (by redirect). */ +-#define RTF_MTU 0x0040 /* Specific MTU for this route. */ +-#define RTF_MSS RTF_MTU /* Compatibility. */ +-#define RTF_WINDOW 0x0080 /* Per route window clamping. */ +-#define RTF_IRTT 0x0100 /* Initial round trip time. */ +-#define RTF_REJECT 0x0200 /* Reject route. */ +-#define RTF_STATIC 0x0400 /* Manually injected route. */ +-#define RTF_XRESOLVE 0x0800 /* External resolver. */ +-#define RTF_NOFORWARD 0x1000 /* Forwarding inhibited. */ +-#define RTF_THROW 0x2000 /* Go to next class. */ +-#define RTF_NOPMTUDISC 0x4000 /* Do not send packets with DF. */ +- +-/* for IPv6 */ +-#define RTF_DEFAULT 0x00010000 /* default - learned via ND */ +-#define RTF_ALLONLINK 0x00020000 /* fallback, no routers on link */ +-#define RTF_ADDRCONF 0x00040000 /* addrconf route - RA */ +- +-#define RTF_LINKRT 0x00100000 /* link specific - device match */ +-#define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */ +- +-#define RTF_CACHE 0x01000000 /* cache entry */ +-#define RTF_FLOW 0x02000000 /* flow significant route */ +-#define RTF_POLICY 0x04000000 /* policy route */ +- +-#define RTCF_VALVE 0x00200000 +-#define RTCF_MASQ 0x00400000 +-#define RTCF_NAT 0x00800000 +-#define RTCF_DOREDIRECT 0x01000000 +-#define RTCF_LOG 0x02000000 +-#define RTCF_DIRECTSRC 0x04000000 +- +-#define RTF_LOCAL 0x80000000 +-#define RTF_INTERFACE 0x40000000 +-#define RTF_MULTICAST 0x20000000 +-#define RTF_BROADCAST 0x10000000 +-#define RTF_NAT 0x08000000 +- +-#define RTF_ADDRCLASSMASK 0xF8000000 +-#define RT_ADDRCLASS(flags) ((__u_int32_t) flags >> 23) +- +-#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK) +- +-#define RT_LOCALADDR(flags) ((flags & RTF_ADDRCLASSMASK) \ +- == (RTF_LOCAL|RTF_INTERFACE)) +- +-#define RT_CLASS_UNSPEC 0 +-#define RT_CLASS_DEFAULT 253 +- +-#define RT_CLASS_MAIN 254 +-#define RT_CLASS_LOCAL 255 +-#define RT_CLASS_MAX 255 +- +- +-#define RTMSG_ACK NLMSG_ACK +-#define RTMSG_OVERRUN NLMSG_OVERRUN +- +-#define RTMSG_NEWDEVICE 0x11 +-#define RTMSG_DELDEVICE 0x12 +-#define RTMSG_NEWROUTE 0x21 +-#define RTMSG_DELROUTE 0x22 +-#define RTMSG_NEWRULE 0x31 +-#define RTMSG_DELRULE 0x32 +-#define RTMSG_CONTROL 0x40 +- +-#define RTMSG_AR_FAILED 0x51 /* Address Resolution failed. */ +- +-#endif /* net/route.h */ +--- a/sysdeps/unix/sysv/linux/Makefile ++++ b/sysdeps/unix/sysv/linux/Makefile +@@ -102,8 +102,7 @@ + endif + + ifeq ($(subdir),socket) +-sysdep_headers += net/if_ppp.h net/ppp-comp.h \ +- net/ppp_defs.h net/if_arp.h net/route.h net/ethernet.h \ ++sysdep_headers += net/ppp-comp.h net/ppp_defs.h \ + net/if_slip.h net/if_packet.h net/if_shaper.h + sysdep_routines += cmsg_nxthdr sa_len + endif +--- a/sysdeps/unix/sysv/linux/net/ethernet.h ++++ /dev/null +@@ -1,84 +0,0 @@ +-/* Copyright (C) 1997, 1999, 2001, 2008 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Based on the FreeBSD version of this file. Curiously, that file +- lacks a copyright in the header. */ +- +-#ifndef __NET_ETHERNET_H +-#define __NET_ETHERNET_H 1 +- +-#include +-#include +-#include /* IEEE 802.3 Ethernet constants */ +- +-__BEGIN_DECLS +- +-/* This is a name for the 48 bit ethernet address available on many +- systems. */ +-struct ether_addr +-{ +- u_int8_t ether_addr_octet[ETH_ALEN]; +-} __attribute__ ((__packed__)); +- +-/* 10Mb/s ethernet header */ +-struct ether_header +-{ +- u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ +- u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ +- u_int16_t ether_type; /* packet type ID field */ +-} __attribute__ ((__packed__)); +- +-/* Ethernet protocol ID's */ +-#define ETHERTYPE_PUP 0x0200 /* Xerox PUP */ +-#define ETHERTYPE_SPRITE 0x0500 /* Sprite */ +-#define ETHERTYPE_IP 0x0800 /* IP */ +-#define ETHERTYPE_ARP 0x0806 /* Address resolution */ +-#define ETHERTYPE_REVARP 0x8035 /* Reverse ARP */ +-#define ETHERTYPE_AT 0x809B /* AppleTalk protocol */ +-#define ETHERTYPE_AARP 0x80F3 /* AppleTalk ARP */ +-#define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */ +-#define ETHERTYPE_IPX 0x8137 /* IPX */ +-#define ETHERTYPE_IPV6 0x86dd /* IP protocol version 6 */ +-#define ETHERTYPE_LOOPBACK 0x9000 /* used to test interfaces */ +- +- +-#define ETHER_ADDR_LEN ETH_ALEN /* size of ethernet addr */ +-#define ETHER_TYPE_LEN 2 /* bytes in type field */ +-#define ETHER_CRC_LEN 4 /* bytes in CRC field */ +-#define ETHER_HDR_LEN ETH_HLEN /* total octets in header */ +-#define ETHER_MIN_LEN (ETH_ZLEN + ETHER_CRC_LEN) /* min packet length */ +-#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN) /* max packet length */ +- +-/* make sure ethenet length is valid */ +-#define ETHER_IS_VALID_LEN(foo) \ +- ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) +- +-/* +- * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have +- * (type-ETHERTYPE_TRAIL)*512 bytes of data followed +- * by an ETHER type (as given above) and then the (variable-length) header. +- */ +-#define ETHERTYPE_TRAIL 0x1000 /* Trailer packet */ +-#define ETHERTYPE_NTRAILER 16 +- +-#define ETHERMTU ETH_DATA_LEN +-#define ETHERMIN (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) +- +-__END_DECLS +- +-#endif /* net/ethernet.h */ +--- a/sysdeps/unix/sysv/linux/net/if_arp.h ++++ /dev/null +@@ -1,184 +0,0 @@ +-/* Definitions for Address Resolution Protocol. +- Copyright (C) 1997,1999,2001,2006,2009 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 1997. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Based on the 4.4BSD and Linux version of this file. */ +- +-#ifndef _NET_IF_ARP_H +- +-#define _NET_IF_ARP_H 1 +-#include +- +-#include +-#include +- +-__BEGIN_DECLS +- +-/* Some internals from deep down in the kernel. */ +-#define MAX_ADDR_LEN 7 +- +- +-/* This structure defines an ethernet arp header. */ +- +-/* ARP protocol opcodes. */ +-#define ARPOP_REQUEST 1 /* ARP request. */ +-#define ARPOP_REPLY 2 /* ARP reply. */ +-#define ARPOP_RREQUEST 3 /* RARP request. */ +-#define ARPOP_RREPLY 4 /* RARP reply. */ +-#define ARPOP_InREQUEST 8 /* InARP request. */ +-#define ARPOP_InREPLY 9 /* InARP reply. */ +-#define ARPOP_NAK 10 /* (ATM)ARP NAK. */ +- +-/* See RFC 826 for protocol description. ARP packets are variable +- in size; the arphdr structure defines the fixed-length portion. +- Protocol type values are the same as those for 10 Mb/s Ethernet. +- It is followed by the variable-sized fields ar_sha, arp_spa, +- arp_tha and arp_tpa in that order, according to the lengths +- specified. Field names used correspond to RFC 826. */ +- +-struct arphdr +- { +- unsigned short int ar_hrd; /* Format of hardware address. */ +- unsigned short int ar_pro; /* Format of protocol address. */ +- unsigned char ar_hln; /* Length of hardware address. */ +- unsigned char ar_pln; /* Length of protocol address. */ +- unsigned short int ar_op; /* ARP opcode (command). */ +-#if 0 +- /* Ethernet looks like this : This bit is variable sized +- however... */ +- unsigned char __ar_sha[ETH_ALEN]; /* Sender hardware address. */ +- unsigned char __ar_sip[4]; /* Sender IP address. */ +- unsigned char __ar_tha[ETH_ALEN]; /* Target hardware address. */ +- unsigned char __ar_tip[4]; /* Target IP address. */ +-#endif +- }; +- +- +-/* ARP protocol HARDWARE identifiers. */ +-#define ARPHRD_NETROM 0 /* From KA9Q: NET/ROM pseudo. */ +-#define ARPHRD_ETHER 1 /* Ethernet 10/100Mbps. */ +-#define ARPHRD_EETHER 2 /* Experimental Ethernet. */ +-#define ARPHRD_AX25 3 /* AX.25 Level 2. */ +-#define ARPHRD_PRONET 4 /* PROnet token ring. */ +-#define ARPHRD_CHAOS 5 /* Chaosnet. */ +-#define ARPHRD_IEEE802 6 /* IEEE 802.2 Ethernet/TR/TB. */ +-#define ARPHRD_ARCNET 7 /* ARCnet. */ +-#define ARPHRD_APPLETLK 8 /* APPLEtalk. */ +-#define ARPHRD_DLCI 15 /* Frame Relay DLCI. */ +-#define ARPHRD_ATM 19 /* ATM. */ +-#define ARPHRD_METRICOM 23 /* Metricom STRIP (new IANA id). */ +-#define ARPHRD_IEEE1394 24 /* IEEE 1394 IPv4 - RFC 2734. */ +-#define ARPHRD_EUI64 27 /* EUI-64. */ +-#define ARPHRD_INFINIBAND 32 /* InfiniBand. */ +- +-/* Dummy types for non ARP hardware */ +-#define ARPHRD_SLIP 256 +-#define ARPHRD_CSLIP 257 +-#define ARPHRD_SLIP6 258 +-#define ARPHRD_CSLIP6 259 +-#define ARPHRD_RSRVD 260 /* Notional KISS type. */ +-#define ARPHRD_ADAPT 264 +-#define ARPHRD_ROSE 270 +-#define ARPHRD_X25 271 /* CCITT X.25. */ +-#define ARPHRD_HWX25 272 /* Boards with X.25 in firmware. */ +-#define ARPHRD_PPP 512 +-#define ARPHRD_CISCO 513 /* Cisco HDLC. */ +-#define ARPHRD_HDLC ARPHRD_CISCO +-#define ARPHRD_LAPB 516 /* LAPB. */ +-#define ARPHRD_DDCMP 517 /* Digital's DDCMP. */ +-#define ARPHRD_RAWHDLC 518 /* Raw HDLC. */ +- +-#define ARPHRD_TUNNEL 768 /* IPIP tunnel. */ +-#define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel. */ +-#define ARPHRD_FRAD 770 /* Frame Relay Access Device. */ +-#define ARPHRD_SKIP 771 /* SKIP vif. */ +-#define ARPHRD_LOOPBACK 772 /* Loopback device. */ +-#define ARPHRD_LOCALTLK 773 /* Localtalk device. */ +-#define ARPHRD_FDDI 774 /* Fiber Distributed Data Interface. */ +-#define ARPHRD_BIF 775 /* AP1000 BIF. */ +-#define ARPHRD_SIT 776 /* sit0 device - IPv6-in-IPv4. */ +-#define ARPHRD_IPDDP 777 /* IP-in-DDP tunnel. */ +-#define ARPHRD_IPGRE 778 /* GRE over IP. */ +-#define ARPHRD_PIMREG 779 /* PIMSM register interface. */ +-#define ARPHRD_HIPPI 780 /* High Performance Parallel I'face. */ +-#define ARPHRD_ASH 781 /* (Nexus Electronics) Ash. */ +-#define ARPHRD_ECONET 782 /* Acorn Econet. */ +-#define ARPHRD_IRDA 783 /* Linux-IrDA. */ +-#define ARPHRD_FCPP 784 /* Point to point fibrechanel. */ +-#define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */ +-#define ARPHRD_FCPL 786 /* Fibrechanel public loop. */ +-#define ARPHRD_FCFABRIC 787 /* Fibrechanel fabric. */ +-#define ARPHRD_IEEE802_TR 800 /* Magic type ident for TR. */ +-#define ARPHRD_IEEE80211 801 /* IEEE 802.11. */ +-#define ARPHRD_IEEE80211_PRISM 802 /* IEEE 802.11 + Prism2 header. */ +-#define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header. */ +-#define ARPHRD_IEEE802154 804 /* IEEE 802.15.4 header. */ +-#define ARPHRD_IEEE802154_PHY 805 /* IEEE 802.15.4 PHY header. */ +- +-#define ARPHRD_VOID 0xFFFF /* Void type, nothing is known. */ +-#define ARPHRD_NONE 0xFFFE /* Zero header length. */ +- +- +-/* ARP ioctl request. */ +-struct arpreq +- { +- struct sockaddr arp_pa; /* Protocol address. */ +- struct sockaddr arp_ha; /* Hardware address. */ +- int arp_flags; /* Flags. */ +- struct sockaddr arp_netmask; /* Netmask (only for proxy arps). */ +- char arp_dev[16]; +- }; +- +-struct arpreq_old +- { +- struct sockaddr arp_pa; /* Protocol address. */ +- struct sockaddr arp_ha; /* Hardware address. */ +- int arp_flags; /* Flags. */ +- struct sockaddr arp_netmask; /* Netmask (only for proxy arps). */ +- }; +- +-/* ARP Flag values. */ +-#define ATF_COM 0x02 /* Completed entry (ha valid). */ +-#define ATF_PERM 0x04 /* Permanent entry. */ +-#define ATF_PUBL 0x08 /* Publish entry. */ +-#define ATF_USETRAILERS 0x10 /* Has requested trailers. */ +-#define ATF_NETMASK 0x20 /* Want to use a netmask (only +- for proxy entries). */ +-#define ATF_DONTPUB 0x40 /* Don't answer this addresses. */ +-#define ATF_MAGIC 0x80 /* Automatically added entry. */ +- +- +-/* Support for the user space arp daemon, arpd. */ +-#define ARPD_UPDATE 0x01 +-#define ARPD_LOOKUP 0x02 +-#define ARPD_FLUSH 0x03 +- +-struct arpd_request +- { +- unsigned short int req; /* Request type. */ +- u_int32_t ip; /* IP address of entry. */ +- unsigned long int dev; /* Device entry is tied to. */ +- unsigned long int stamp; +- unsigned long int updated; +- unsigned char ha[MAX_ADDR_LEN]; /* Hardware address. */ +- }; +- +-__END_DECLS +- +-#endif /* net/if_arp.h */ +--- /dev/null ++++ b/sysdeps/unix/sysv/linux/net/if_ether.h +@@ -0,0 +1,7 @@ ++#ifndef _NET_IF_ETHER_H ++#define _NET_IF_ETHER_H 1 ++ ++/* Get definitions from kernel header file. */ ++#include ++ ++#endif /* net/if_ether.h */ +--- a/sysdeps/unix/sysv/linux/net/if_ppp.h ++++ /dev/null +@@ -1,169 +0,0 @@ +-/* From: if_ppp.h,v 1.3 1995/06/12 11:36:50 paulus Exp */ +- +-/* +- * if_ppp.h - Point-to-Point Protocol definitions. +- * +- * Copyright (c) 1989 Carnegie Mellon University. +- * +- * 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 University 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 CARNEGIE MELLON UNIVERSITY 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 UNIVERSITY 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. +- * +- */ +- +-/* +- * ==FILEVERSION 960926== +- * +- * NOTE TO MAINTAINERS: +- * If you modify this file at all, please set the above date. +- * if_ppp.h is shipped with a PPP distribution as well as with the kernel; +- * if everyone increases the FILEVERSION number above, then scripts +- * can do the right thing when deciding whether to install a new if_ppp.h +- * file. Don't change the format of that line otherwise, so the +- * installation script can recognize it. +- */ +- +- +-#ifndef __NET_IF_PPP_H +-#define __NET_IF_PPP_H 1 +- +-#include +-#include +- +-#include +-#include +-#include +- +-__BEGIN_DECLS +- +-/* +- * Packet sizes +- */ +- +-#define PPP_MTU 1500 /* Default MTU (size of Info field) */ +-#define PPP_MAXMRU 65000 /* Largest MRU we allow */ +-#define PPP_VERSION "2.2.0" +-#define PPP_MAGIC 0x5002 /* Magic value for the ppp structure */ +-#define PROTO_IPX 0x002b /* protocol numbers */ +-#define PROTO_DNA_RT 0x0027 /* DNA Routing */ +- +- +-/* +- * Bit definitions for flags. +- */ +- +-#define SC_COMP_PROT 0x00000001 /* protocol compression (output) */ +-#define SC_COMP_AC 0x00000002 /* header compression (output) */ +-#define SC_COMP_TCP 0x00000004 /* TCP (VJ) compression (output) */ +-#define SC_NO_TCP_CCID 0x00000008 /* disable VJ connection-id comp. */ +-#define SC_REJ_COMP_AC 0x00000010 /* reject adrs/ctrl comp. on input */ +-#define SC_REJ_COMP_TCP 0x00000020 /* reject TCP (VJ) comp. on input */ +-#define SC_CCP_OPEN 0x00000040 /* Look at CCP packets */ +-#define SC_CCP_UP 0x00000080 /* May send/recv compressed packets */ +-#define SC_ENABLE_IP 0x00000100 /* IP packets may be exchanged */ +-#define SC_COMP_RUN 0x00001000 /* compressor has been inited */ +-#define SC_DECOMP_RUN 0x00002000 /* decompressor has been inited */ +-#define SC_DEBUG 0x00010000 /* enable debug messages */ +-#define SC_LOG_INPKT 0x00020000 /* log contents of good pkts recvd */ +-#define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */ +-#define SC_LOG_RAWIN 0x00080000 /* log all chars received */ +-#define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */ +-#define SC_MASK 0x0fE0ffff /* bits that user can change */ +- +-/* state bits */ +-#define SC_ESCAPED 0x80000000 /* saw a PPP_ESCAPE */ +-#define SC_FLUSH 0x40000000 /* flush input until next PPP_FLAG */ +-#define SC_VJ_RESET 0x20000000 /* Need to reset the VJ decompressor */ +-#define SC_XMIT_BUSY 0x10000000 /* ppp_write_wakeup is active */ +-#define SC_RCV_ODDP 0x08000000 /* have rcvd char with odd parity */ +-#define SC_RCV_EVNP 0x04000000 /* have rcvd char with even parity */ +-#define SC_RCV_B7_1 0x02000000 /* have rcvd char with bit 7 = 1 */ +-#define SC_RCV_B7_0 0x01000000 /* have rcvd char with bit 7 = 0 */ +-#define SC_DC_FERROR 0x00800000 /* fatal decomp error detected */ +-#define SC_DC_ERROR 0x00400000 /* non-fatal decomp error detected */ +- +-/* +- * Ioctl definitions. +- */ +- +-struct npioctl { +- int protocol; /* PPP protocol, e.g. PPP_IP */ +- enum NPmode mode; +-}; +- +-/* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */ +-struct ppp_option_data { +- u_int8_t *ptr; +- u_int32_t length; +- int transmit; +-}; +- +-struct ifpppstatsreq { +- struct ifreq b; +- struct ppp_stats stats; /* statistic information */ +-}; +- +-struct ifpppcstatsreq { +- struct ifreq b; +- struct ppp_comp_stats stats; +-}; +- +-#define ifr__name b.ifr_ifrn.ifrn_name +-#define stats_ptr b.ifr_ifru.ifru_data +- +-/* +- * Ioctl definitions. +- */ +- +-#define PPPIOCGFLAGS _IOR('t', 90, int) /* get configuration flags */ +-#define PPPIOCSFLAGS _IOW('t', 89, int) /* set configuration flags */ +-#define PPPIOCGASYNCMAP _IOR('t', 88, int) /* get async map */ +-#define PPPIOCSASYNCMAP _IOW('t', 87, int) /* set async map */ +-#define PPPIOCGUNIT _IOR('t', 86, int) /* get ppp unit number */ +-#define PPPIOCGRASYNCMAP _IOR('t', 85, int) /* get receive async map */ +-#define PPPIOCSRASYNCMAP _IOW('t', 84, int) /* set receive async map */ +-#define PPPIOCGMRU _IOR('t', 83, int) /* get max receive unit */ +-#define PPPIOCSMRU _IOW('t', 82, int) /* set max receive unit */ +-#define PPPIOCSMAXCID _IOW('t', 81, int) /* set VJ max slot ID */ +-#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */ +-#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */ +-#define PPPIOCXFERUNIT _IO('t', 78) /* transfer PPP unit */ +-#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data) +-#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl) /* get NP mode */ +-#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl) /* set NP mode */ +-#define PPPIOCGDEBUG _IOR('t', 65, int) /* Read debug level */ +-#define PPPIOCSDEBUG _IOW('t', 64, int) /* Set debug level */ +-#define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle) /* get idle time */ +- +-#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0) +-#define SIOCGPPPVER (SIOCDEVPRIVATE + 1) /* NEVER change this!! */ +-#define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2) +- +-#if !defined(ifr_mtu) +-#define ifr_mtu ifr_ifru.ifru_metric +-#endif +- +-__END_DECLS +- +-#endif /* net/if_ppp.h */ +--- a/sysdeps/unix/sysv/linux/net/route.h ++++ /dev/null +@@ -1,145 +0,0 @@ +-/* Copyright (C) 1997, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-/* Based on the 4.4BSD and Linux version of this file. */ +- +-#ifndef _NET_ROUTE_H +-#define _NET_ROUTE_H 1 +- +-#include +-#include +-#include +-#include +-#include +- +- +-/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */ +-struct rtentry +- { +- unsigned long int rt_pad1; +- struct sockaddr rt_dst; /* Target address. */ +- struct sockaddr rt_gateway; /* Gateway addr (RTF_GATEWAY). */ +- struct sockaddr rt_genmask; /* Target network mask (IP). */ +- unsigned short int rt_flags; +- short int rt_pad2; +- unsigned long int rt_pad3; +- unsigned char rt_tos; +- unsigned char rt_class; +-#if __WORDSIZE == 64 +- short int rt_pad4[3]; +-#else +- short int rt_pad4; +-#endif +- short int rt_metric; /* +1 for binary compatibility! */ +- char *rt_dev; /* Forcing the device at add. */ +- unsigned long int rt_mtu; /* Per route MTU/Window. */ +- unsigned long int rt_window; /* Window clamping. */ +- unsigned short int rt_irtt; /* Initial RTT. */ +- }; +-/* Compatibility hack. */ +-#define rt_mss rt_mtu +- +- +-struct in6_rtmsg +- { +- struct in6_addr rtmsg_dst; +- struct in6_addr rtmsg_src; +- struct in6_addr rtmsg_gateway; +- u_int32_t rtmsg_type; +- u_int16_t rtmsg_dst_len; +- u_int16_t rtmsg_src_len; +- u_int32_t rtmsg_metric; +- unsigned long int rtmsg_info; +- u_int32_t rtmsg_flags; +- int rtmsg_ifindex; +- }; +- +- +-#define RTF_UP 0x0001 /* Route usable. */ +-#define RTF_GATEWAY 0x0002 /* Destination is a gateway. */ +- +-#define RTF_HOST 0x0004 /* Host entry (net otherwise). */ +-#define RTF_REINSTATE 0x0008 /* Reinstate route after timeout. */ +-#define RTF_DYNAMIC 0x0010 /* Created dyn. (by redirect). */ +-#define RTF_MODIFIED 0x0020 /* Modified dyn. (by redirect). */ +-#define RTF_MTU 0x0040 /* Specific MTU for this route. */ +-#define RTF_MSS RTF_MTU /* Compatibility. */ +-#define RTF_WINDOW 0x0080 /* Per route window clamping. */ +-#define RTF_IRTT 0x0100 /* Initial round trip time. */ +-#define RTF_REJECT 0x0200 /* Reject route. */ +-#define RTF_STATIC 0x0400 /* Manually injected route. */ +-#define RTF_XRESOLVE 0x0800 /* External resolver. */ +-#define RTF_NOFORWARD 0x1000 /* Forwarding inhibited. */ +-#define RTF_THROW 0x2000 /* Go to next class. */ +-#define RTF_NOPMTUDISC 0x4000 /* Do not send packets with DF. */ +- +-/* for IPv6 */ +-#define RTF_DEFAULT 0x00010000 /* default - learned via ND */ +-#define RTF_ALLONLINK 0x00020000 /* fallback, no routers on link */ +-#define RTF_ADDRCONF 0x00040000 /* addrconf route - RA */ +- +-#define RTF_LINKRT 0x00100000 /* link specific - device match */ +-#define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */ +- +-#define RTF_CACHE 0x01000000 /* cache entry */ +-#define RTF_FLOW 0x02000000 /* flow significant route */ +-#define RTF_POLICY 0x04000000 /* policy route */ +- +-#define RTCF_VALVE 0x00200000 +-#define RTCF_MASQ 0x00400000 +-#define RTCF_NAT 0x00800000 +-#define RTCF_DOREDIRECT 0x01000000 +-#define RTCF_LOG 0x02000000 +-#define RTCF_DIRECTSRC 0x04000000 +- +-#define RTF_LOCAL 0x80000000 +-#define RTF_INTERFACE 0x40000000 +-#define RTF_MULTICAST 0x20000000 +-#define RTF_BROADCAST 0x10000000 +-#define RTF_NAT 0x08000000 +- +-#define RTF_ADDRCLASSMASK 0xF8000000 +-#define RT_ADDRCLASS(flags) ((__u_int32_t) flags >> 23) +- +-#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK) +- +-#define RT_LOCALADDR(flags) ((flags & RTF_ADDRCLASSMASK) \ +- == (RTF_LOCAL|RTF_INTERFACE)) +- +-#define RT_CLASS_UNSPEC 0 +-#define RT_CLASS_DEFAULT 253 +- +-#define RT_CLASS_MAIN 254 +-#define RT_CLASS_LOCAL 255 +-#define RT_CLASS_MAX 255 +- +- +-#define RTMSG_ACK NLMSG_ACK +-#define RTMSG_OVERRUN NLMSG_OVERRUN +- +-#define RTMSG_NEWDEVICE 0x11 +-#define RTMSG_DELDEVICE 0x12 +-#define RTMSG_NEWROUTE 0x21 +-#define RTMSG_DELROUTE 0x22 +-#define RTMSG_NEWRULE 0x31 +-#define RTMSG_DELRULE 0x32 +-#define RTMSG_CONTROL 0x40 +- +-#define RTMSG_AR_FAILED 0x51 /* Address Resolution failed. */ +- +-#endif /* net/route.h */ +--- a/sysdeps/unix/sysv/linux/netinet/if_ether.h ++++ /dev/null +@@ -1,105 +0,0 @@ +-/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#ifndef __NETINET_IF_ETHER_H +- +-#define __NETINET_IF_ETHER_H 1 +-#include +-#include +- +-/* Get definitions from kernel header file. */ +-#include +- +-#ifdef __USE_BSD +-/* +- * Copyright (c) 1982, 1986, 1993 +- * The Regents of the University of California. 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. +- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. +- * +- * @(#)if_ether.h 8.3 (Berkeley) 5/2/95 +- * $FreeBSD$ +- */ +- +-#include +-#include +- +-__BEGIN_DECLS +-/* +- * Ethernet Address Resolution Protocol. +- * +- * See RFC 826 for protocol description. Structure below is adapted +- * to resolving internet addresses. Field names used correspond to +- * RFC 826. +- */ +-struct ether_arp { +- struct arphdr ea_hdr; /* fixed-size header */ +- u_int8_t arp_sha[ETH_ALEN]; /* sender hardware address */ +- u_int8_t arp_spa[4]; /* sender protocol address */ +- u_int8_t arp_tha[ETH_ALEN]; /* target hardware address */ +- u_int8_t arp_tpa[4]; /* target protocol address */ +-}; +-#define arp_hrd ea_hdr.ar_hrd +-#define arp_pro ea_hdr.ar_pro +-#define arp_hln ea_hdr.ar_hln +-#define arp_pln ea_hdr.ar_pln +-#define arp_op ea_hdr.ar_op +- +-/* +- * Macro to map an IP multicast address to an Ethernet multicast address. +- * The high-order 25 bits of the Ethernet address are statically assigned, +- * and the low-order 23 bits are taken from the low end of the IP address. +- */ +-#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \ +- /* struct in_addr *ipaddr; */ \ +- /* u_char enaddr[ETH_ALEN]; */ \ +-{ \ +- (enaddr)[0] = 0x01; \ +- (enaddr)[1] = 0x00; \ +- (enaddr)[2] = 0x5e; \ +- (enaddr)[3] = ((u_int8_t *)ipaddr)[1] & 0x7f; \ +- (enaddr)[4] = ((u_int8_t *)ipaddr)[2]; \ +- (enaddr)[5] = ((u_int8_t *)ipaddr)[3]; \ +-} +- +-__END_DECLS +-#endif /* __USE_BSD */ +- +-#endif /* netinet/if_ether.h */ --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-unlockpt-chroot.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-unlockpt-chroot.diff @@ -0,0 +1,17 @@ +when e.g. using a chroot, the pty path is not so short. + +--- + sysdeps/unix/bsd/unlockpt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sysdeps/unix/bsd/unlockpt.c ++++ b/sysdeps/unix/bsd/unlockpt.c +@@ -28,7 +28,7 @@ + int + unlockpt (int fd) + { +- char buf[sizeof (_PATH_TTY) + 2]; ++ char buf[1024]; /* XXX */ + + /* BSD doesn't have a lock, but it does have `revoke'. */ + if (__ptsname_r (fd, buf, sizeof (buf))) --- eglibc-2.13.orig/debian/patches/hurd-i386/submitted-extern_inline.diff +++ eglibc-2.13/debian/patches/hurd-i386/submitted-extern_inline.diff @@ -0,0 +1,723 @@ +Fix compilation of extern inlines with recent gcc. + +http://www.cygwin.com/ml/libc-alpha/2007-11/msg00058.html + +--- + hurd/hurd.h | 4 ++++ + hurd/hurd/fd.h | 20 ++++++++++++++++++++ + hurd/hurd/port.h | 31 +++++++++++++++++++++++++++++++ + hurd/hurd/signal.h | 16 +++++++++++++--- + hurd/hurd/threadvar.h | 5 +++++ + hurd/hurd/userlink.h | 14 ++++++++++++++ + mach/lock-intern.h | 20 ++++++++++++++++++++ + mach/mach/mig_support.h | 3 +++ + mach/spin-lock.c | 1 + + ports/sysdeps/mach/alpha/machine-lock.h | 12 ++++++++++++ + ports/sysdeps/mach/alpha/machine-sp.h | 4 ++++ + sysdeps/generic/machine-lock.h | 12 ++++++++++++ + sysdeps/generic/machine-sp.h | 4 ++++ + sysdeps/mach/i386/machine-lock.h | 12 ++++++++++++ + sysdeps/mach/powerpc/machine-lock.h | 12 ++++++++++++ + sysdeps/mach/powerpc/machine-sp.h | 4 ++++ + 16 files changed, 171 insertions(+), 3 deletions(-) + +--- a/hurd/hurd.h ++++ b/hurd/hurd.h +@@ -48,6 +48,9 @@ + #define _HURD_H_EXTERN_INLINE __extern_inline + #endif + ++int __hurd_fail (error_t err); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_H_EXTERN_INLINE int + __hurd_fail (error_t err) + { +@@ -77,6 +80,7 @@ + errno = err; + return -1; + } ++#endif + + /* Basic ports and info, initialized by startup. */ + +--- a/hurd/hurd/fd.h ++++ b/hurd/hurd/fd.h +@@ -60,6 +60,9 @@ + NULL. The cell is unlocked; when ready to use it, lock it and check for + it being unused. */ + ++struct hurd_fd *_hurd_fd_get (int fd); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_FD_H_EXTERN_INLINE struct hurd_fd * + _hurd_fd_get (int fd) + { +@@ -90,6 +93,7 @@ + + return descriptor; + } ++#endif + + + /* Evaluate EXPR with the variable `descriptor' bound to a pointer to the +@@ -137,6 +141,9 @@ + /* Check if ERR should generate a signal. + Returns the signal to take, or zero if none. */ + ++int _hurd_fd_error_signal (error_t err); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_FD_H_EXTERN_INLINE int + _hurd_fd_error_signal (error_t err) + { +@@ -153,11 +160,15 @@ + return 0; + } + } ++#endif + + /* Handle an error from an RPC on a file descriptor's port. You should + always use this function to handle errors from RPCs made on file + descriptor ports. Some errors are translated into signals. */ + ++error_t _hurd_fd_error (int fd, error_t err); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_FD_H_EXTERN_INLINE error_t + _hurd_fd_error (int fd, error_t err) + { +@@ -170,20 +181,28 @@ + } + return err; + } ++#endif + + /* Handle error code ERR from an RPC on file descriptor FD's port. + Set `errno' to the appropriate error code, and always return -1. */ + ++int __hurd_dfail (int fd, error_t err); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_FD_H_EXTERN_INLINE int + __hurd_dfail (int fd, error_t err) + { + errno = _hurd_fd_error (fd, err); + return -1; + } ++#endif + + /* Likewise, but do not raise SIGPIPE on EPIPE if flags contain + MSG_NOSIGNAL. */ + ++int __hurd_sockfail (int fd, int flags, error_t err); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_FD_H_EXTERN_INLINE int + __hurd_sockfail (int fd, int flags, error_t err) + { +@@ -192,6 +211,7 @@ + errno = err; + return -1; + } ++#endif + + /* Set up *FD to have PORT its server port, doing appropriate ctty magic. + Does no locking or unlocking. */ +--- a/hurd/hurd/port.h ++++ b/hurd/hurd/port.h +@@ -62,6 +62,9 @@ + + /* Initialize *PORT to INIT. */ + ++void _hurd_port_init (struct hurd_port *port, mach_port_t init); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_PORT_H_EXTERN_INLINE void + _hurd_port_init (struct hurd_port *port, mach_port_t init) + { +@@ -69,6 +72,7 @@ + port->users = NULL; + port->port = init; + } ++#endif + + + /* Cleanup function for non-local exits. */ +@@ -77,6 +81,11 @@ + /* Get a reference to *PORT, which is locked. + Pass return value and LINK to _hurd_port_free when done. */ + ++mach_port_t ++_hurd_port_locked_get (struct hurd_port *port, ++ struct hurd_userlink *link); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_PORT_H_EXTERN_INLINE mach_port_t + _hurd_port_locked_get (struct hurd_port *port, + struct hurd_userlink *link) +@@ -92,9 +101,15 @@ + __spin_unlock (&port->lock); + return result; + } ++#endif + + /* Same, but locks PORT first. */ + ++mach_port_t ++_hurd_port_get (struct hurd_port *port, ++ struct hurd_userlink *link); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_PORT_H_EXTERN_INLINE mach_port_t + _hurd_port_get (struct hurd_port *port, + struct hurd_userlink *link) +@@ -106,10 +121,17 @@ + HURD_CRITICAL_END; + return result; + } ++#endif + + + /* Free a reference gotten with `USED_PORT = _hurd_port_get (PORT, LINK);' */ + ++void ++_hurd_port_free (struct hurd_port *port, ++ struct hurd_userlink *link, ++ mach_port_t used_port); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_PORT_H_EXTERN_INLINE void + _hurd_port_free (struct hurd_port *port, + struct hurd_userlink *link, +@@ -129,11 +151,15 @@ + if (dealloc) + __mach_port_deallocate (__mach_task_self (), used_port); + } ++#endif + + + /* Set *PORT's port to NEWPORT. NEWPORT's reference is consumed by PORT->port. + PORT->lock is locked. */ + ++void _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_PORT_H_EXTERN_INLINE void + _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport) + { +@@ -144,9 +170,13 @@ + if (old != MACH_PORT_NULL) + __mach_port_deallocate (__mach_task_self (), old); + } ++#endif + + /* Same, but locks PORT first. */ + ++void _hurd_port_set (struct hurd_port *port, mach_port_t newport); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_PORT_H_EXTERN_INLINE void + _hurd_port_set (struct hurd_port *port, mach_port_t newport) + { +@@ -155,6 +185,7 @@ + _hurd_port_locked_set (port, newport); + HURD_CRITICAL_END; + } ++#endif + + + #endif /* hurd/port.h */ +--- a/hurd/hurd/signal.h ++++ b/hurd/hurd/signal.h +@@ -131,15 +131,17 @@ + #define _HURD_SIGNAL_H_EXTERN_INLINE __extern_inline + #endif + ++#ifdef __USE_EXTERN_INLINES + _HURD_SIGNAL_H_EXTERN_INLINE struct hurd_sigstate * + _hurd_self_sigstate (void) + { +- struct hurd_sigstate **location = ++ struct hurd_sigstate **location = (struct hurd_sigstate **) + (void *) __hurd_threadvar_location (_HURD_THREADVAR_SIGSTATE); + if (*location == NULL) + *location = _hurd_thread_sigstate (__mach_thread_self ()); + return *location; + } ++#endif + + /* Thread listening on our message port; also called the "signal thread". */ + +@@ -166,10 +168,13 @@ + interrupted lest the signal handler try to take the same lock and + deadlock result. */ + ++void *_hurd_critical_section_lock (void); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_SIGNAL_H_EXTERN_INLINE void * + _hurd_critical_section_lock (void) + { +- struct hurd_sigstate **location = ++ struct hurd_sigstate **location = (struct hurd_sigstate **) + (void *) __hurd_threadvar_location (_HURD_THREADVAR_SIGSTATE); + struct hurd_sigstate *ss = *location; + if (ss == NULL) +@@ -191,7 +196,11 @@ + _hurd_critical_section_unlock to unlock it. */ + return ss; + } ++#endif + ++void _hurd_critical_section_unlock (void *our_lock); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_SIGNAL_H_EXTERN_INLINE void + _hurd_critical_section_unlock (void *our_lock) + { +@@ -201,7 +210,7 @@ + else + { + /* It was us who acquired the critical section lock. Unlock it. */ +- struct hurd_sigstate *ss = our_lock; ++ struct hurd_sigstate *ss = (struct hurd_sigstate *) our_lock; + sigset_t pending; + __spin_lock (&ss->lock); + __spin_unlock (&ss->critical_section_lock); +@@ -214,6 +223,7 @@ + __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ()); + } + } ++#endif + + /* Convenient macros for simple uses of critical sections. + These two must be used as a pair at the same C scoping level. */ +--- a/hurd/hurd/threadvar.h ++++ b/hurd/hurd/threadvar.h +@@ -82,6 +82,8 @@ + + extern unsigned long int *__hurd_threadvar_location_from_sp + (enum __hurd_threadvar_index __index, void *__sp); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_THREADVAR_H_EXTERN_INLINE unsigned long int * + __hurd_threadvar_location_from_sp (enum __hurd_threadvar_index __index, + void *__sp) +@@ -93,6 +95,7 @@ + : (unsigned long int *) ((__stack & __hurd_threadvar_stack_mask) + + __hurd_threadvar_stack_offset))[__index]; + } ++#endif + + #include /* Define __thread_stack_pointer. */ + +@@ -106,12 +109,14 @@ + the same stack frame by different threads. */ + __attribute__ ((__const__)); + ++#ifdef __USE_EXTERN_INLINES + _HURD_THREADVAR_H_EXTERN_INLINE unsigned long int * + __hurd_threadvar_location (enum __hurd_threadvar_index __index) + { + return __hurd_threadvar_location_from_sp (__index, + __thread_stack_pointer ()); + } ++#endif + + + #endif /* hurd/threadvar.h */ +--- a/hurd/hurd/userlink.h ++++ b/hurd/hurd/userlink.h +@@ -77,6 +77,11 @@ + + /* Attach LINK to the chain of users at *CHAINP. */ + ++void ++_hurd_userlink_link (struct hurd_userlink **chainp, ++ struct hurd_userlink *link); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_USERLINK_H_EXTERN_INLINE void + _hurd_userlink_link (struct hurd_userlink **chainp, + struct hurd_userlink *link) +@@ -97,11 +102,15 @@ + link->thread.prevp = thread_chainp; + *thread_chainp = link; + } ++#endif + + + /* Detach LINK from its chain. Returns nonzero iff this was the + last user of the resource and it should be deallocated. */ + ++int _hurd_userlink_unlink (struct hurd_userlink *link); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_USERLINK_H_EXTERN_INLINE int + _hurd_userlink_unlink (struct hurd_userlink *link) + { +@@ -124,6 +133,7 @@ + + return dealloc; + } ++#endif + + + /* Clear all users from *CHAINP. Call this when the resource *CHAINP +@@ -132,6 +142,9 @@ + value is zero, someone is still using the resource and they will + deallocate it when they are finished. */ + ++int _hurd_userlink_clear (struct hurd_userlink **chainp); ++ ++#ifdef __USE_EXTERN_INLINES + _HURD_USERLINK_H_EXTERN_INLINE int + _hurd_userlink_clear (struct hurd_userlink **chainp) + { +@@ -144,5 +157,6 @@ + *chainp = NULL; + return 0; + } ++#endif + + #endif /* hurd/userlink.h */ +--- a/mach/lock-intern.h ++++ b/mach/lock-intern.h +@@ -29,11 +29,15 @@ + + /* Initialize LOCK. */ + ++void __spin_lock_init (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __spin_lock_init (__spin_lock_t *__lock) + { + *__lock = __SPIN_LOCK_INITIALIZER; + } ++#endif + + + /* Lock LOCK, blocking if we can't get it. */ +@@ -41,12 +45,16 @@ + + /* Lock the spin lock LOCK. */ + ++void __spin_lock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __spin_lock (__spin_lock_t *__lock) + { + if (! __spin_try_lock (__lock)) + __spin_lock_solid (__lock); + } ++#endif + + /* Name space-clean internal interface to mutex locks. + +@@ -71,27 +79,39 @@ + + /* Lock the mutex lock LOCK. */ + ++void __mutex_lock (void *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __mutex_lock (void *__lock) + { + if (! __spin_try_lock ((__spin_lock_t *) __lock)) + __mutex_lock_solid (__lock); + } ++#endif + + /* Unlock the mutex lock LOCK. */ + ++void __mutex_unlock (void *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __mutex_unlock (void *__lock) + { + __spin_unlock ((__spin_lock_t *) __lock); + __mutex_unlock_solid (__lock); + } ++#endif ++ + ++int __mutex_trylock (void *__lock); + ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __mutex_trylock (void *__lock) + { + return __spin_try_lock ((__spin_lock_t *) __lock); + } ++#endif + + #endif /* lock-intern.h */ +--- a/mach/mach/mig_support.h ++++ b/mach/mach/mig_support.h +@@ -67,6 +67,8 @@ + /* Idiocy support function. */ + extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len); + extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t); ++ ++#ifdef __USE_EXTERN_INLINES + __extern_inline vm_size_t + __mig_strncpy (char *__dst, const char *__src, vm_size_t __len) + { +@@ -77,6 +79,7 @@ + { + return __mig_strncpy (__dst, __src, __len); + } ++#endif + + + +--- a/sysdeps/generic/machine-lock.h ++++ b/sysdeps/generic/machine-lock.h +@@ -35,14 +35,21 @@ + + /* Unlock LOCK. */ + ++void __spin_unlock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __spin_unlock (__spin_lock_t *__lock) + { + *__lock = 0; + } ++#endif + + /* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ + ++int __spin_try_lock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_try_lock (__spin_lock_t *__lock) + { +@@ -51,14 +58,19 @@ + *__lock = 1; + return 1; + } ++#endif + + /* Return nonzero if LOCK is locked. */ + ++int __spin_lock_locked (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_lock_locked (__spin_lock_t *__lock) + { + return *__lock != 0; + } ++#endif + + + #endif /* machine-lock.h */ +--- a/sysdeps/generic/machine-sp.h ++++ b/sysdeps/generic/machine-sp.h +@@ -26,11 +26,15 @@ + #define _EXTERN_INLINE __extern_inline + #endif + ++void * __thread_stack_pointer (void); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void * + __thread_stack_pointer (void) + { + register void *__sp__ ("{STACK-POINTER}"); + return __sp__; + } ++#endif + + #endif /* machine-sp.h */ +--- a/ports/sysdeps/mach/alpha/machine-lock.h ++++ b/ports/sysdeps/mach/alpha/machine-lock.h +@@ -35,15 +35,22 @@ + + /* Unlock LOCK. */ + ++void __spin_unlock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __spin_unlock (__spin_lock_t *__lock) + { + __asm__ __volatile__ ("mb; stq $31, %0; mb" + : "=m" (__lock)); + } ++#endif + + /* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ + ++int __spin_try_lock (register __spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_try_lock (register __spin_lock_t *__lock) + { +@@ -67,14 +74,19 @@ + /* RTN is now nonzero; we have the lock. */ + return __rtn; + } ++#endif + + /* Return nonzero if LOCK is locked. */ + ++int __spin_lock_locked (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_lock_locked (__spin_lock_t *__lock) + { + return *__lock != 0; + } ++#endif + + + #endif /* machine-lock.h */ +--- a/ports/sysdeps/mach/alpha/machine-sp.h ++++ b/ports/sysdeps/mach/alpha/machine-sp.h +@@ -26,11 +26,15 @@ + #define _EXTERN_INLINE __extern_inline + #endif + ++void * __thread_stack_pointer (void); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void * + __thread_stack_pointer (void) + { + register void *__sp__ __asm__ ("$30"); + return __sp__; + } ++#endif + + #endif /* machine-sp.h */ +--- a/sysdeps/mach/i386/machine-lock.h ++++ b/sysdeps/mach/i386/machine-lock.h +@@ -35,6 +35,9 @@ + + /* Unlock LOCK. */ + ++void __spin_unlock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __spin_unlock (__spin_lock_t *__lock) + { +@@ -43,9 +46,13 @@ + : "=&r" (__unlocked), "=m" (*__lock) : "0" (0) + : "memory"); + } ++#endif + + /* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ + ++int __spin_try_lock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_try_lock (__spin_lock_t *__lock) + { +@@ -55,14 +62,19 @@ + : "memory"); + return !__locked; + } ++#endif + + /* Return nonzero if LOCK is locked. */ + ++int __spin_lock_locked (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_lock_locked (__spin_lock_t *__lock) + { + return *__lock != 0; + } ++#endif + + + #endif /* machine-lock.h */ +--- a/sysdeps/mach/powerpc/machine-lock.h ++++ b/sysdeps/mach/powerpc/machine-lock.h +@@ -35,6 +35,9 @@ + + /* Unlock LOCK. */ + ++void __spin_unlock (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void + __spin_unlock (__spin_lock_t *__lock) + { +@@ -45,9 +48,13 @@ + bne- 0b\n\ + " : "=&r" (__locked) : "r" (__lock), "r" (0) : "cr0"); + } ++#endif + + /* Try to lock LOCK; return nonzero if we locked it, zero if another has. */ + ++int __spin_try_lock (register __spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_try_lock (register __spin_lock_t *__lock) + { +@@ -59,9 +66,13 @@ + " : "=&r" (__rtn) : "r" (__lock), "r" (1) : "cr0"); + return !__rtn; + } ++#endif + + /* Return nonzero if LOCK is locked. */ + ++int __spin_lock_locked (__spin_lock_t *__lock); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE int + __spin_lock_locked (__spin_lock_t *__lock) + { +@@ -73,6 +84,7 @@ + " : "=&r" (__rtn) : "r" (__lock) : "cr0"); + return __rtn; + } ++#endif + + + #endif /* machine-lock.h */ +--- a/sysdeps/mach/powerpc/machine-sp.h ++++ b/sysdeps/mach/powerpc/machine-sp.h +@@ -31,6 +31,9 @@ + # endif + #endif + ++void * __thread_stack_pointer (void); ++ ++#ifdef __USE_EXTERN_INLINES + _EXTERN_INLINE void * + __thread_stack_pointer (void) + { +@@ -38,5 +41,6 @@ + __asm__ ("mr %0, 1" : "=r" (__sp__)); + return __sp__; + } ++#endif + + #endif /* machine-sp.h */ +--- a/mach/spin-lock.c ++++ b/mach/spin-lock.c +@@ -1,3 +1,4 @@ ++#define __USE_EXTERN_INLINES 1 + #define _EXTERN_INLINE /* Empty to define the real functions. */ + #include "spin-lock.h" + --- eglibc-2.13.orig/debian/patches/hurd-i386/unsubmitted-tls-support.diff +++ eglibc-2.13/debian/patches/hurd-i386/unsubmitted-tls-support.diff @@ -0,0 +1,542 @@ +TLS support +TODO: get rid of threadvar variables + +--- + csu/libc-start.c | 2 + + hurd/hurdfault.c | 2 + + hurd/hurdsig.c | 4 +- + mach/mach.h | 3 + + mach/setup-thread.c | 30 +++++++++++++++- + ports/sysdeps/mach/alpha/thread_state.h | 1 + sysdeps/generic/thread_state.h | 1 + sysdeps/mach/hurd/bits/libc-lock.h | 3 + + sysdeps/mach/hurd/bits/libc-tsd.h | 35 ------------------ + sysdeps/mach/hurd/fork.c | 7 +++ + sysdeps/mach/hurd/i386/init-first.c | 60 +++++++++++++++++++------------- + sysdeps/mach/hurd/i386/tls.h | 55 ++++++++++++++++++++++++----- + sysdeps/mach/hurd/i386/tlsdesc.sym | 17 +++++++++ + sysdeps/mach/hurd/i386/trampoline.c | 2 - + sysdeps/mach/hurd/profil.c | 2 + + sysdeps/mach/hurd/setitimer.c | 3 + + sysdeps/mach/hurd/tls.h | 2 + + sysdeps/mach/i386/thread_state.h | 11 +++++ + sysdeps/mach/powerpc/thread_state.h | 1 + sysdeps/mach/thread_state.h | 3 + + 20 files changed, 169 insertions(+), 75 deletions(-) + +--- a/csu/libc-start.c ++++ b/csu/libc-start.c +@@ -140,10 +140,12 @@ + /* Performe IREL{,A} relocations. */ + __libc_csu_irel (); + ++#ifndef __GNU__ + /* Initialize the thread library at least a bit since the libgcc + functions are using thread functions if these are available and + we need to setup errno. */ + __pthread_initialize_minimal (); ++#endif + + /* Set up the stack checker's canary. */ + uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); +--- a/hurd/hurdfault.c ++++ b/hurd/hurdfault.c +@@ -206,6 +206,8 @@ + /* This state will be restored when we fault. + It runs the function above. */ + memset (&state, 0, sizeof state); ++ ++ MACHINE_THREAD_STATE_FIX_NEW (&state); + MACHINE_THREAD_STATE_SET_PC (&state, faulted); + MACHINE_THREAD_STATE_SET_SP (&state, faultstack, sizeof faultstack); + +--- a/hurd/hurdsig.c ++++ b/hurd/hurdsig.c +@@ -1268,6 +1268,8 @@ + (vm_address_t *) &__hurd_sigthread_stack_base, + &stacksize); + assert_perror (err); ++ err = __mach_setup_tls (_hurd_msgport_thread); ++ assert_perror (err); + + __hurd_sigthread_stack_end = __hurd_sigthread_stack_base + stacksize; + __hurd_sigthread_variables = +@@ -1276,8 +1278,6 @@ + __libc_fatal ("hurd: Can't allocate threadvars for signal thread\n"); + memset (__hurd_sigthread_variables, 0, + __hurd_threadvar_max * sizeof (unsigned long int)); +- __hurd_sigthread_variables[_HURD_THREADVAR_LOCALE] +- = (unsigned long int) &_nl_global_locale; + + /* Reinitialize the MiG support routines so they will use a per-thread + variable for the cached reply port. */ +--- a/mach/mach.h ++++ b/mach/mach.h +@@ -101,5 +101,8 @@ + vm_address_t *stack_base, + vm_size_t *stack_size); + ++/* Give THREAD a TLS area. */ ++kern_return_t __mach_setup_tls (thread_t thread); ++kern_return_t mach_setup_tls (thread_t thread); + + #endif /* mach.h */ +--- a/mach/setup-thread.c ++++ b/mach/setup-thread.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include "sysdep.h" /* Defines stack direction. */ + + #define STACK_SIZE (16 * 1024 * 1024) /* 16MB, arbitrary. */ +@@ -73,8 +74,35 @@ + if (error = __vm_protect (task, stack, __vm_page_size, 0, VM_PROT_NONE)) + return error; + +- return __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR, ++ return __thread_set_state (thread, MACHINE_NEW_THREAD_STATE_FLAVOR, + (natural_t *) &ts, tssize); + } + + weak_alias (__mach_setup_thread, mach_setup_thread) ++ ++/* Give THREAD a TLS area. */ ++kern_return_t ++__mach_setup_tls (thread_t thread) ++{ ++ kern_return_t error; ++ struct machine_thread_state ts; ++ mach_msg_type_number_t tssize = MACHINE_THREAD_STATE_COUNT; ++ tcbhead_t *tcb; ++ ++ if (error = __thread_get_state (thread, MACHINE_THREAD_STATE_FLAVOR, ++ (natural_t *) &ts, &tssize)) ++ return error; ++ assert (tssize == MACHINE_THREAD_STATE_COUNT); ++ ++ tcb = _dl_allocate_tls(NULL); ++ if (!tcb) ++ return KERN_RESOURCE_SHORTAGE; ++ ++ _hurd_tls_new(thread, &ts, tcb); ++ ++ error = __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR, ++ (natural_t *) &ts, tssize); ++ return error; ++} ++ ++weak_alias (__mach_setup_tls, mach_setup_tls) +--- a/sysdeps/generic/thread_state.h ++++ b/sysdeps/generic/thread_state.h +@@ -23,6 +23,7 @@ + + /* Replace with "i386" or "mips" or whatever. */ + ++#define MACHINE_NEW_THREAD_STATE_FLAVOR _NEW_THREAD_STATE + #define MACHINE_THREAD_STATE_FLAVOR _THREAD_STATE + #define MACHINE_THREAD_STATE_COUNT _THREAD_STATE_COUNT + +--- a/ports/sysdeps/mach/alpha/thread_state.h ++++ b/ports/sysdeps/mach/alpha/thread_state.h +@@ -19,6 +19,7 @@ + + #include + ++#define MACHINE_NEW_THREAD_STATE_FLAVOR ALPHA_THREAD_STATE + #define MACHINE_THREAD_STATE_FLAVOR ALPHA_THREAD_STATE + #define MACHINE_THREAD_STATE_COUNT ALPHA_THREAD_STATE_COUNT + +--- a/sysdeps/mach/hurd/bits/libc-tsd.h ++++ /dev/null +@@ -1,35 +0,0 @@ +-/* libc-internal interface for thread-specific data. Hurd version. +- Copyright (C) 1998,2002,2008 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#ifndef _BITS_LIBC_TSD_H +-#define _BITS_LIBC_TSD_H 1 +- +-#include +- +-#define __libc_tsd_define(CLASS, TYPE, KEY) /* nothing, always have threadvars */ +- +-#define __libc_tsd_address(TYPE, KEY) \ +- ((TYPE *) __hurd_threadvar_location (_HURD_THREADVAR_##KEY)) +- +-#define __libc_tsd_get(TYPE, KEY) \ +- (*__libc_tsd_address (TYPE, KEY)) +-#define __libc_tsd_set(TYPE, KEY, VALUE) \ +- (*__libc_tsd_address (TYPE, KEY) = (VALUE)) +- +-#endif /* bits/libc-tsd.h */ +--- a/sysdeps/mach/hurd/fork.c ++++ b/sysdeps/mach/hurd/fork.c +@@ -523,6 +523,11 @@ + #endif + MACHINE_THREAD_STATE_SET_PC (&state, + (unsigned long int) _hurd_msgport_receive); ++ ++ /* Do special thread setup for TLS if needed. */ ++ if (err = _hurd_tls_fork (sigthread, _hurd_msgport_thread, &state)) ++ LOSE; ++ + if (err = __thread_set_state (sigthread, MACHINE_THREAD_STATE_FLAVOR, + (natural_t *) &state, statecount)) + LOSE; +@@ -533,7 +538,7 @@ + _hurd_longjmp_thread_state (&state, env, 1); + + /* Do special thread setup for TLS if needed. */ +- if (err = _hurd_tls_fork (thread, &state)) ++ if (err = _hurd_tls_fork (thread, __mach_thread_self (), &state)) + LOSE; + + if (err = __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR, +--- a/sysdeps/mach/hurd/i386/init-first.c ++++ b/sysdeps/mach/hurd/i386/init-first.c +@@ -104,10 +104,6 @@ + char **argv = &arg0; + char **envp = &argv[argc + 1]; + struct hurd_startup_data *d; +-#ifndef SHARED +- extern ElfW(Phdr) *_dl_phdr; +- extern size_t _dl_phnum; +-#endif + + while (*envp) + ++envp; +@@ -118,27 +114,9 @@ + data block; the argument strings start there. */ + if ((void *) d == argv[0]) + { +-#ifndef SHARED +- /* We may need to see our own phdrs, e.g. for TLS setup. +- Try the usual kludge to find the headers without help from +- the exec server. */ +- extern const void _start; +- const ElfW(Ehdr) *const ehdr = &_start; +- _dl_phdr = (ElfW(Phdr) *) ((const void *) ehdr + ehdr->e_phoff); +- _dl_phnum = ehdr->e_phnum; +- assert (ehdr->e_phentsize == sizeof (ElfW(Phdr))); +-#endif + return; + } + +-#ifndef SHARED +- __libc_enable_secure = d->flags & EXEC_SECURE; +- +- _dl_phdr = (ElfW(Phdr) *) d->phdr; +- _dl_phnum = d->phdrsz / sizeof (ElfW(Phdr)); +- assert (d->phdrsz % sizeof (ElfW(Phdr)) == 0); +-#endif +- + _hurd_init_dtable = d->dtable; + _hurd_init_dtablesize = d->dtablesize; + +@@ -172,13 +150,16 @@ + char **envp = &argv[argc + 1]; + struct hurd_startup_data *d; + unsigned long int threadvars[_HURD_THREADVAR_MAX]; ++#ifndef SHARED ++ extern ElfW(Phdr) *_dl_phdr; ++ extern size_t _dl_phnum; ++#endif + + /* Provide temporary storage for thread-specific variables on the + startup stack so the cthreads initialization code can use them + for malloc et al, or so we can use malloc below for the real + threadvars array. */ + memset (threadvars, 0, sizeof threadvars); +- threadvars[_HURD_THREADVAR_LOCALE] = (unsigned long int) &_nl_global_locale; + __hurd_threadvar_stack_offset = (unsigned long int) threadvars; + + /* Since the cthreads initialization code uses malloc, and the +@@ -192,6 +173,39 @@ + ++envp; + d = (void *) ++envp; + ++ /* If we are the bootstrap task started by the kernel, ++ then after the environment pointers there is no Hurd ++ data block; the argument strings start there. */ ++ if ((void *) d == argv[0]) ++ { ++#ifndef SHARED ++ /* We may need to see our own phdrs, e.g. for TLS setup. ++ Try the usual kludge to find the headers without help from ++ the exec server. */ ++ extern const void __executable_start; ++ const ElfW(Ehdr) *const ehdr = &__executable_start; ++ _dl_phdr = (ElfW(Phdr) *) ((const void *) ehdr + ehdr->e_phoff); ++ _dl_phnum = ehdr->e_phnum; ++ assert (ehdr->e_phentsize == sizeof (ElfW(Phdr))); ++#endif ++ } ++ else ++ { ++#ifndef SHARED ++ __libc_enable_secure = d->flags & EXEC_SECURE; ++ ++ _dl_phdr = (ElfW(Phdr) *) d->phdr; ++ _dl_phnum = d->phdrsz / sizeof (ElfW(Phdr)); ++ assert (d->phdrsz % sizeof (ElfW(Phdr)) == 0); ++#endif ++ } ++ ++#ifndef SHARED ++ /* We need to setup TLS before starting sigthread */ ++ extern void __pthread_initialize_minimal(void); ++ __pthread_initialize_minimal(); ++#endif ++ + /* The user might have defined a value for this, to get more variables. + Otherwise it will be zero on startup. We must make sure it is set + properly before before cthreads initialization, so cthreads can know +--- a/sysdeps/mach/hurd/i386/tls.h ++++ b/sysdeps/mach/hurd/i386/tls.h +@@ -31,6 +31,8 @@ + + # ifndef __ASSEMBLER__ + ++#include ++ + /* Use i386-specific RPCs to arrange that %gs segment register prefix + addresses the TCB in each thread. */ + # include +@@ -72,7 +74,7 @@ + + /* Get the first available selector. */ + int sel = -1; +- error_t err = __i386_set_gdt (tcb->self, &sel, desc); ++ kern_return_t err = __i386_set_gdt (tcb->self, &sel, desc); + if (err == MIG_BAD_ID) + { + /* Old kernel, use a per-thread LDT. */ +@@ -96,16 +98,16 @@ + /* Fetch the selector set by the first call. */ + int sel; + asm ("mov %%gs, %w0" : "=q" (sel) : "0" (0)); +- if (__builtin_expect (sel, 0x50) & 4) /* LDT selector */ ++ if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ + { +- error_t err = __i386_set_ldt (tcb->self, sel, &desc, 1); ++ kern_return_t err = __i386_set_ldt (tcb->self, sel, &desc, 1); + assert_perror (err); + if (err) + return "i386_set_ldt failed"; + } + else + { +- error_t err = __i386_set_gdt (tcb->self, &sel, desc); ++ kern_return_t err = __i386_set_gdt (tcb->self, &sel, desc); + assert_perror (err); + if (err) + return "i386_set_gdt failed"; +@@ -142,9 +144,40 @@ + + #include + +-/* Set up TLS in the new thread of a fork child, copying from our own. */ +-static inline error_t __attribute__ ((unused)) +-_hurd_tls_fork (thread_t child, struct i386_thread_state *state) ++/* Set up TLS in the new thread of a fork child, copying from the original. */ ++static inline kern_return_t __attribute__ ((unused)) ++_hurd_tls_fork (thread_t child, thread_t orig, struct i386_thread_state *state) ++{ ++ /* Fetch the selector set by _hurd_tls_init. */ ++ int sel; ++ asm ("mov %%gs, %w0" : "=q" (sel) : "0" (0)); ++ if (sel == state->ds) /* _hurd_tls_init was never called. */ ++ return 0; ++ ++ struct descriptor desc, *_desc = &desc; ++ int err; ++ unsigned int count; ++ ++ if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ ++ err = __i386_get_ldt (orig, sel, 1, &_desc, &count); ++ else ++ err = __i386_get_gdt (orig, sel, &desc); ++ ++ assert_perror (err); ++ if (err) ++ return err; ++ ++ if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ ++ err = __i386_set_ldt (child, sel, &desc, 1); ++ else ++ err = __i386_set_gdt (child, &sel, desc); ++ ++ state->gs = sel; ++ return err; ++} ++ ++static inline kern_return_t __attribute__ ((unused)) ++_hurd_tls_new (thread_t child, struct i386_thread_state *state, tcbhead_t *tcb) + { + /* Fetch the selector set by _hurd_tls_init. */ + int sel; +@@ -152,11 +185,13 @@ + if (sel == state->ds) /* _hurd_tls_init was never called. */ + return 0; + +- tcbhead_t *const tcb = THREAD_SELF; + HURD_TLS_DESC_DECL (desc, tcb); +- error_t err; ++ kern_return_t err; ++ ++ tcb->tcb = tcb; ++ tcb->self = child; + +- if (__builtin_expect (sel, 0x50) & 4) /* LDT selector */ ++ if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ + err = __i386_set_ldt (child, sel, &desc, 1); + else + err = __i386_set_gdt (child, &sel, desc); +--- a/sysdeps/mach/hurd/i386/trampoline.c ++++ b/sysdeps/mach/hurd/i386/trampoline.c +@@ -65,7 +65,7 @@ + sizeof (state->basic)); + memcpy (&state->fpu, &ss->context->sc_i386_float_state, + sizeof (state->fpu)); +- state->set |= (1 << i386_THREAD_STATE) | (1 << i386_FLOAT_STATE); ++ state->set |= (1 << i386_REGS_SEGS_STATE) | (1 << i386_FLOAT_STATE); + } + } + +--- a/sysdeps/mach/hurd/profil.c ++++ b/sysdeps/mach/hurd/profil.c +@@ -69,6 +69,8 @@ + if (! err) + err = __mach_setup_thread (__mach_task_self (), profile_thread, + &profile_waiter, NULL, NULL); ++ if (! err) ++ err = __mach_setup_tls(profile_thread); + } + else + err = 0; +--- a/sysdeps/mach/hurd/setitimer.c ++++ b/sysdeps/mach/hurd/setitimer.c +@@ -223,11 +223,12 @@ + return __hurd_fail (err); + _hurd_itimer_thread_stack_base = 0; /* Anywhere. */ + _hurd_itimer_thread_stack_size = __vm_page_size; /* Small stack. */ +- if (err = __mach_setup_thread (__mach_task_self (), ++ if ((err = __mach_setup_thread (__mach_task_self (), + _hurd_itimer_thread, + &timer_thread, + &_hurd_itimer_thread_stack_base, + &_hurd_itimer_thread_stack_size)) ++ || (err = __mach_setup_tls(_hurd_itimer_thread))) + { + __thread_terminate (_hurd_itimer_thread); + _hurd_itimer_thread = MACH_PORT_NULL; +--- a/sysdeps/mach/i386/thread_state.h ++++ b/sysdeps/mach/i386/thread_state.h +@@ -19,7 +19,8 @@ + + #include + +-#define MACHINE_THREAD_STATE_FLAVOR i386_THREAD_STATE ++#define MACHINE_NEW_THREAD_STATE_FLAVOR i386_THREAD_STATE ++#define MACHINE_THREAD_STATE_FLAVOR i386_REGS_SEGS_STATE + #define MACHINE_THREAD_STATE_COUNT i386_THREAD_STATE_COUNT + + #define machine_thread_state i386_thread_state +@@ -28,6 +29,14 @@ + #define SP uesp + #define SYSRETURN eax + ++#define MACHINE_THREAD_STATE_FIX_NEW(ts) do { \ ++ asm ("mov %%cs, %w0" : "=q" ((ts)->cs)); \ ++ asm ("mov %%ds, %w0" : "=q" ((ts)->ds)); \ ++ asm ("mov %%es, %w0" : "=q" ((ts)->es)); \ ++ asm ("mov %%fs, %w0" : "=q" ((ts)->fs)); \ ++ asm ("mov %%gs, %w0" : "=q" ((ts)->gs)); \ ++} while(0) ++ + struct machine_thread_all_state + { + int set; /* Mask of bits (1 << FLAVOR). */ +--- a/sysdeps/mach/powerpc/thread_state.h ++++ b/sysdeps/mach/powerpc/thread_state.h +@@ -19,6 +19,7 @@ + + #include + ++#define MACHINE_NEW_THREAD_STATE_FLAVOR PPC_THREAD_STATE + #define MACHINE_THREAD_STATE_FLAVOR PPC_THREAD_STATE + #define MACHINE_THREAD_STATE_COUNT PPC_THREAD_STATE_COUNT + +--- a/sysdeps/mach/thread_state.h ++++ b/sysdeps/mach/thread_state.h +@@ -38,6 +38,9 @@ + ((ts)->SP = (unsigned long int) (stack) + (size)) + #endif + #endif ++#ifndef MACHINE_THREAD_STATE_FIX_NEW ++#define MACHINE_THREAD_STATE_FIX_NEW(ts) ++#endif + + /* These functions are of use in machine-dependent signal trampoline + implementations. */ +--- a/sysdeps/mach/hurd/bits/libc-lock.h ++++ b/sysdeps/mach/hurd/bits/libc-lock.h +@@ -21,6 +21,9 @@ + #define _BITS_LIBC_LOCK_H 1 + + #if (_LIBC - 0) || (_CTHREADS_ - 0) ++#if (_LIBC - 0) ++#include ++#endif + #include + #include + +--- a/sysdeps/mach/hurd/tls.h ++++ b/sysdeps/mach/hurd/tls.h +@@ -23,7 +23,9 @@ + #if defined HAVE_TLS_SUPPORT && !defined __ASSEMBLER__ + + # include ++# include + # include ++# include + # include + # include + +--- /dev/null ++++ b/sysdeps/mach/hurd/i386/tlsdesc.sym +@@ -0,0 +1,17 @@ ++#include ++#include ++#include ++#include ++#include ++ ++-- ++ ++-- Abuse tls.h macros to derive offsets relative to the thread register. ++ ++DTV_OFFSET offsetof(tcbhead_t, dtv) ++ ++TLSDESC_ARG offsetof(struct tlsdesc, arg) ++ ++TLSDESC_GEN_COUNT offsetof(struct tlsdesc_dynamic_arg, gen_count) ++TLSDESC_MODID offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_module) ++TLSDESC_MODOFF offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_offset) --- eglibc-2.13.orig/debian/patches/s390/cvs-iconv-z9-109.diff +++ eglibc-2.13/debian/patches/s390/cvs-iconv-z9-109.diff @@ -0,0 +1,55 @@ +2011-04-13 Andreas Krebbel + + * sysdeps/s390/s390-64/utf16-utf32-z9.c: Wrap the z9-109 + instructions into .machine "z9-109". + * sysdeps/s390/s390-64/utf8-utf16-z9.c: Likewise. + * sysdeps/s390/s390-64/utf8-utf32-z9.c: Likewise. + +diff --git a/sysdeps/s390/s390-64/utf16-utf32-z9.c b/sysdeps/s390/s390-64/utf16-utf32-z9.c +index 14daf21..5bcaaae 100644 +--- a/sysdeps/s390/s390-64/utf16-utf32-z9.c ++++ b/sysdeps/s390/s390-64/utf16-utf32-z9.c +@@ -169,7 +169,10 @@ gconv_end (struct __gconv_step *data) + register unsigned long long outlen asm("11") = outend - outptr; \ + uint64_t cc = 0; \ + \ +- asm volatile ("0: " INSTRUCTION " \n\t" \ ++ asm volatile (".machine push \n\t" \ ++ ".machine \"z9-109\" \n\t" \ ++ "0: " INSTRUCTION " \n\t" \ ++ ".machine pop \n\t" \ + " jo 0b \n\t" \ + " ipm %2 \n" \ + : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ +diff --git a/sysdeps/s390/s390-64/utf8-utf16-z9.c b/sysdeps/s390/s390-64/utf8-utf16-z9.c +index 5f73f3c..812a42f 100644 +--- a/sysdeps/s390/s390-64/utf8-utf16-z9.c ++++ b/sysdeps/s390/s390-64/utf8-utf16-z9.c +@@ -151,7 +151,10 @@ gconv_end (struct __gconv_step *data) + register unsigned long long outlen asm("11") = outend - outptr; \ + uint64_t cc = 0; \ + \ +- asm volatile ("0: " INSTRUCTION " \n\t" \ ++ asm volatile (".machine push \n\t" \ ++ ".machine \"z9-109\" \n\t" \ ++ "0: " INSTRUCTION " \n\t" \ ++ ".machine pop \n\t" \ + " jo 0b \n\t" \ + " ipm %2 \n" \ + : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ +diff --git a/sysdeps/s390/s390-64/utf8-utf32-z9.c b/sysdeps/s390/s390-64/utf8-utf32-z9.c +index 17ef8bc..0ffd848 100644 +--- a/sysdeps/s390/s390-64/utf8-utf32-z9.c ++++ b/sysdeps/s390/s390-64/utf8-utf32-z9.c +@@ -155,7 +155,10 @@ gconv_end (struct __gconv_step *data) + register unsigned long long outlen asm("11") = outend - outptr; \ + uint64_t cc = 0; \ + \ +- asm volatile ("0: " INSTRUCTION " \n\t" \ ++ asm volatile (".machine push \n\t" \ ++ ".machine \"z9-109\" \n\t" \ ++ "0: " INSTRUCTION " \n\t" \ ++ ".machine pop \n\t" \ + " jo 0b \n\t" \ + " ipm %2 \n" \ + : "+a" (pOutput), "+a" (pInput), "+d" (cc), \ --- eglibc-2.13.orig/debian/patches/s390/cvs-vsyscalls.diff +++ eglibc-2.13/debian/patches/s390/cvs-vsyscalls.diff @@ -0,0 +1,49 @@ +2011-07-13 Andreas Krebbel + + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h + (INTERNAL_VSYSCALL_NCS): Use r10 for backing up the return address + register in order to avoid conflicts with the soft frame pointer + being held in r11 when necessary. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h + (INTERNAL_VSYSCALL_NCS): Likewise. + +diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h +index 5bfdc44..13ce9ab 100644 +--- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h ++++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h +@@ -368,12 +368,12 @@ + DECLARGS_##nr(args) \ + register long _ret asm("2"); \ + asm volatile ( \ +- "lr 11,14\n\t" \ ++ "lr 10,14\n\t" \ + "basr 14,%1\n\t" \ +- "lr 14,11\n\t" \ ++ "lr 14,10\n\t" \ + : "=d" (_ret) \ + : "d" (fn) ASMFMT_##nr \ +- : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \ ++ : "cc", "memory", "0", "1", "10" CLOBBER_##nr); \ + _ret; }) + + /* Pointer mangling support. */ +diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h +index 6491a3b..4d45417 100644 +--- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h ++++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h +@@ -370,12 +370,12 @@ + DECLARGS_##nr(args) \ + register long _ret asm("2"); \ + asm volatile ( \ +- "lgr 11,14\n\t" \ ++ "lgr 10,14\n\t" \ + "basr 14,%1\n\t" \ +- "lgr 14,11\n\t" \ ++ "lgr 14,10\n\t" \ + : "=d" (_ret) \ + : "a" (fn) ASMFMT_##nr \ +- : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \ ++ : "cc", "memory", "0", "1", "10" CLOBBER_##nr); \ + _ret; }) + + /* Pointer mangling support. */ --- eglibc-2.13.orig/debian/patches/s390/submitted-nexttowardf.diff +++ eglibc-2.13/debian/patches/s390/submitted-nexttowardf.diff @@ -0,0 +1,37 @@ +2008-05-05 Aurelien Jarno + + * sysdeps/ieee754/ldbl-128/s_nexttowardf.c: Include float.h. + (__nexttowardf): If FLT_EVAL_METHOD is not 0, force x to float + using asm. + +--- + sysdeps/ieee754/ldbl-128/s_nexttowardf.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +--- a/sysdeps/ieee754/ldbl-128/s_nexttowardf.c ++++ b/sysdeps/ieee754/ldbl-128/s_nexttowardf.c +@@ -19,7 +19,8 @@ + #endif + + #include "math.h" +-#include "math_private.h" ++#include ++#include + + #ifdef __STDC__ + float __nexttowardf(float x, long double y) +@@ -69,7 +70,13 @@ + } + } + hy = hx&0x7f800000; +- if(hy>=0x7f800000) return x+x; /* overflow */ ++ if(hy>=0x7f800000) { ++ x = x+x; /* overflow */ ++ if (FLT_EVAL_METHOD != 0) ++ /* Force conversion to float. */ ++ asm ("" : "+m"(x)); ++ return x; ++ } + if(hy<0x00800000) { + float u = x*x; /* underflow */ + math_force_eval (u); /* raise underflow flag */ --- eglibc-2.13.orig/debian/patches/arm/unsubmitted-ldso-abi-check.diff +++ eglibc-2.13/debian/patches/arm/unsubmitted-ldso-abi-check.diff @@ -0,0 +1,241 @@ +--- eglibc-2.13.old/elf/dl-load.c 2011-02-04 22:13:20.000000000 +0000 ++++ eglibc-2.13/elf/dl-load.c 2011-11-23 16:21:27.000000000 +0000 +@@ -1547,6 +1551,208 @@ + _dl_debug_printf_c ("\t\t(%s)\n", what); + } + ++#ifdef __arm__ ++/* Read an unsigned leb128 value from P, store the value in VAL, return ++ P incremented past the value. We assume that a word is large enough to ++ hold any value so encoded; if it is smaller than a pointer on some target, ++ pointers should not be leb128 encoded on that target. */ ++static const unsigned char * ++read_uleb128 (const unsigned char *p, unsigned long *val) ++{ ++ unsigned int shift = 0; ++ unsigned char byte; ++ unsigned long result; ++ ++ result = 0; ++ do ++ { ++ byte = *p++; ++ result |= (byte & 0x7f) << shift; ++ shift += 7; ++ } ++ while (byte & 0x80); ++ ++ *val = result; ++ return p; ++} ++ ++ ++#define ATTR_TAG_FILE 1 ++#define ABI_VFP_args 28 ++#define VFP_ARGS_IN_VFP_REGS 1 ++ ++/* Check consistency of ABI in the ARM attributes. Search through the ++ section headers looking for the ARM attributes section, then ++ check the VFP_ARGS attribute. */ ++static int ++check_arm_attributes_hfabi(int fd, ElfW(Ehdr) *ehdr, bool *is_hf) ++{ ++ unsigned int i; ++ ElfW(Shdr) *shdrs; ++ int sh_size = ehdr->e_shentsize * ehdr->e_shnum; ++ ++ /* Load in the section headers so we can look for the attributes ++ * section */ ++ shdrs = alloca(sh_size); ++ __lseek (fd, ehdr->e_shoff, SEEK_SET); ++ if ((size_t) __libc_read (fd, (void *) shdrs, sh_size) != sh_size) ++ return -1; ++ ++ for (i = 0; i < ehdr->e_shnum; i++) ++ { ++ if (SHT_ARM_ATTRIBUTES == shdrs[i].sh_type) ++ { ++ /* We've found a likely section. Load the contents and ++ * check the tags */ ++ unsigned char *contents = alloca(shdrs[i].sh_size); ++ unsigned char *p = contents; ++ unsigned char * end; ++ ++ __lseek (fd, shdrs[i].sh_offset, SEEK_SET); ++ if ((size_t) __libc_read (fd, (void *) contents, shdrs[i].sh_size) != shdrs[i].sh_size) ++ return -1; ++ ++ /* Sanity-check the attribute section details. Make sure ++ * that it's the "aeabi" section, that's all we care ++ * about. */ ++ if (*p == 'A') ++ { ++ unsigned long len = shdrs[i].sh_size - 1; ++ unsigned long namelen; ++ p++; ++ ++ while (len > 0) ++ { ++ unsigned long section_len = p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24; ++ if (section_len > len) ++ { ++ _dl_debug_printf_c (" invalid section len %lu, max remaining %lu\n", section_len, len); ++ section_len = len; ++ } ++ ++ p += 4; ++ len -= section_len; ++ section_len -= 4; ++ ++ if (0 != strcmp((char *)p, "aeabi")) ++ { ++ _dl_debug_printf_c (" ignoring unknown attr section %s\n", p); ++ p += section_len; ++ continue; ++ } ++ namelen = strlen((char *)p) + 1; ++ p += namelen; ++ section_len -= namelen; ++ ++ /* We're in a valid section. Walk through this ++ * section looking for the tag we care about ++ * (ABI_VFP_args) */ ++ while (section_len > 0) ++ { ++ unsigned long tag, val; ++ unsigned long size; ++ ++ end = p; ++ tag = (*p++); ++ ++ size = p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24; ++ if (size > section_len) ++ { ++ _dl_debug_printf_c (" invalid subsection length %lu, max allowed %lu\n", size, section_len); ++ size = section_len; ++ } ++ p += 4; ++ ++ section_len -= size; ++ end += size; ++ if (ATTR_TAG_FILE != tag) ++ { ++ /* ignore, we don't care */ ++ _dl_debug_printf_c (" ignoring unknown subsection with type %u length %lu\n", tag, size); ++ p = end; ++ continue; ++ } ++ while (p < end) ++ { ++ p = read_uleb128 (p, &tag); ++ /* Handle the different types of tag. */ ++ if ( (tag == 4) || (tag == 5) || (tag == 67) ) ++ { ++ /* Special cases for string values */ ++ namelen = strlen((char *)p) + 1; ++ p += namelen; ++ } ++ else ++ { ++ p = read_uleb128 (p, &val); ++ } ++ if ( (tag == ABI_VFP_args) && (val == VFP_ARGS_IN_VFP_REGS) ) ++ { ++ *is_hf = 1; ++ return 0; ++ } ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ return 0; ++} ++ ++ ++/* ARM-specific checks. If we're built using the HF ABI, then fail any ++ attempts to use the SF ABI (and vice versa). Then, check for ++ consistency of ABI in terms of passing VFP args. */ ++static int ++arm_specific_checks(int fd, const char *name, ElfW(Ehdr) *ehdr) ++{ ++ static int all_hf = -1; /* unset */ ++ bool is_hf = false; ++ int ret; ++ ++ ret = check_arm_attributes_hfabi(fd, ehdr, &is_hf); ++ if (ret != 0) ++ return ret; ++ ++#ifdef __ARM_PCS_VFP ++ if (!is_hf) ++ _exit(1); ++#else ++ if (is_hf) ++ _exit(1); ++#endif ++ ++ if (all_hf == -1) ++ { ++ if (is_hf) ++ all_hf = 1; ++ else ++ all_hf = 0; ++ } ++ else if (all_hf == 1 && !is_hf) ++ return EINVAL; ++ else if (all_hf == 0 && is_hf) ++ return EINVAL; ++ return 0; ++} ++#endif ++ ++ ++/* Run any architecture-specific checks that might be needed for the ++ current architecture. */ ++static int ++arch_specific_checks(int fd, const char *name, ElfW(Ehdr) *ehdr) ++{ ++#ifdef __arm__ ++ return arm_specific_checks(fd, name, ehdr); ++#endif ++ ++ return 0; ++} ++ ++ + /* Open a file and verify it is an ELF file for this architecture. We + ignore only ELF files for other architectures. Non-ELF files and + ELF files with different header information cause fatal errors since +@@ -1745,6 +1951,7 @@ + + /* Check .note.ABI-tag if present. */ + for (ph = phdr; ph < &phdr[ehdr->e_phnum]; ++ph) ++ { + if (ph->p_type == PT_NOTE && ph->p_filesz >= 32 && ph->p_align >= 4) + { + ElfW(Addr) size = ph->p_filesz; +@@ -1793,6 +2000,21 @@ + break; + } + } ++ if (-1 != fd) ++ { ++ int error = arch_specific_checks(fd, name, ehdr); ++ if (EINVAL == error) ++ { ++ goto close_and_out; ++ } ++ if (0 != error) ++ { ++ errstring = N_("Unable to run arch-specific checks\n"); ++ goto call_lose; ++ } ++ } ++ ++ } + + return fd; + } --- eglibc-2.13.orig/debian/patches/arm/local-lowlevellock.diff +++ eglibc-2.13/debian/patches/arm/local-lowlevellock.diff @@ -0,0 +1,19 @@ +2010-02-09 Aurelien Jarno + + * sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h: remove + useless include. + +--- + ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h ++++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h +@@ -23,7 +23,6 @@ + #include + #include + #include +-#include + #include + + #define FUTEX_WAIT 0 --- eglibc-2.13.orig/debian/patches/arm/unsubmitted-ldconfig-cache-abi.diff +++ eglibc-2.13/debian/patches/arm/unsubmitted-ldconfig-cache-abi.diff @@ -0,0 +1,247 @@ +--- eglibc-2.13.old/elf/cache.c 2007-10-15 21:14:17.000000000 +0100 ++++ eglibc-2.13/elf/cache.c 2011-11-03 21:56:14.000000000 +0000 +@@ -91,6 +91,8 @@ + break; + case FLAG_MIPS64_LIBN64: + fputs (",64bit", stdout); ++ case FLAG_ARM_HFABI: ++ fputs (",hard-float", stdout); + case 0: + break; + default: +--- eglibc-2.13.old/sysdeps/generic/ldconfig.h 2007-09-12 17:26:54.000000000 +0100 ++++ eglibc-2.13/sysdeps/generic/ldconfig.h 2011-11-09 14:48:44.481643107 +0000 +@@ -34,6 +34,7 @@ + #define FLAG_POWERPC_LIB64 0x0500 + #define FLAG_MIPS64_LIBN32 0x0600 + #define FLAG_MIPS64_LIBN64 0x0700 ++#define FLAG_ARM_HFABI 0x0800 + + /* Name of auxiliary cache. */ + #define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache" +--- eglibc-2.13.old/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h 1970-01-01 01:00:00.000000000 +0100 ++++ eglibc-2.13/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h 2011-11-09 16:14:19.939065832 +0000 +@@ -0,0 +1,34 @@ ++/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Steve McIntyre ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++ ++/* Redefine the cache ID for the new hf ABI; the sf ABI inverts the check. */ ++#define _DL_CACHE_ARMHF_ID (FLAG_ARM_HFABI | FLAG_ELF_LIBC6) ++ ++#ifdef __ARM_PCS_VFP ++#define _dl_cache_check_flags(flags) \ ++ ((flags) == _DL_CACHE_ARMHF_ID) ++#else ++#define _dl_cache_check_flags(flags) \ ++ ((flags) != _DL_CACHE_ARMHF_ID) ++#endif ++ ++#include_next +--- eglibc-2.13.old/ports/sysdeps/unix/sysv/linux/arm/readelflib.c 1970-01-01 01:00:00.000000000 +0100 ++++ eglibc-2.13/ports/sysdeps/unix/sysv/linux/arm/readelflib.c 2011-11-09 16:14:25.797641640 +0000 +@@ -0,0 +1,186 @@ ++/* Copyright (C) 2011 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Steve McIntyre ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++ ++int process_elf32_file (const char *file_name, const char *lib, int *flag, ++ unsigned int *osversion, char **soname, ++ void *file_contents, size_t file_length); ++ ++/* Read an unsigned leb128 value from P, store the value in VAL, return ++ P incremented past the value. We assume that a word is large enough to ++ hold any value so encoded; if it is smaller than a pointer on some target, ++ pointers should not be leb128 encoded on that target. */ ++static const unsigned char * ++read_uleb128 (const unsigned char *p, unsigned long *val) ++{ ++ unsigned int shift = 0; ++ unsigned char byte; ++ unsigned long result; ++ ++ result = 0; ++ do ++ { ++ byte = *p++; ++ result |= (byte & 0x7f) << shift; ++ shift += 7; ++ } ++ while (byte & 0x80); ++ ++ *val = result; ++ return p; ++} ++ ++ ++#define ATTR_TAG_FILE 1 ++#define ABI_VFP_args 28 ++#define VFP_ARGS_IN_VFP_REGS 1 ++ ++/* Check the ABI in the ARM attributes. Search through the section ++ headers looking for the ARM attributes section, then check the ++ VFP_ARGS attribute. */ ++static int is_library_hf(const char *file_name, void *file_contents, size_t file_length) ++{ ++ unsigned int i; ++ ElfW(Ehdr) *ehdr = (ElfW(Ehdr) *) file_contents; ++ ElfW(Shdr) *shdrs; ++ ++ shdrs = file_contents + ehdr->e_shoff; ++ for (i = 0; i < ehdr->e_shnum; i++) ++ { ++ if (SHT_ARM_ATTRIBUTES == shdrs[i].sh_type) ++ { ++ /* We've found a likely section. Load the contents and ++ * check the tags */ ++ unsigned char *p = (unsigned char *)file_contents + shdrs[i].sh_offset; ++ unsigned char * end; ++ ++ /* Sanity-check the attribute section details. Make sure ++ * that it's the "aeabi" section, that's all we care ++ * about. */ ++ if (*p == 'A') ++ { ++ unsigned long len = shdrs[i].sh_size - 1; ++ unsigned long namelen; ++ p++; ++ ++ while (len > 0) ++ { ++ unsigned long section_len = p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24; ++ if (section_len > len) ++ section_len = len; ++ ++ p += 4; ++ len -= section_len; ++ section_len -= 4; ++ ++ if (0 != strcmp((char *)p, "aeabi")) ++ { ++ p += section_len; ++ continue; ++ } ++ namelen = strlen((char *)p) + 1; ++ p += namelen; ++ section_len -= namelen; ++ ++ /* We're in a valid section. Walk through this ++ * section looking for the tag we care about ++ * (ABI_VFP_args) */ ++ while (section_len > 0) ++ { ++ unsigned long tag, val; ++ unsigned long size; ++ ++ end = p; ++ tag = (*p++); ++ ++ size = p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24; ++ if (size > section_len) ++ size = section_len; ++ p += 4; ++ ++ section_len -= size; ++ end += size; ++ if (ATTR_TAG_FILE != tag) ++ { ++ /* ignore, we don't care */ ++ p = end; ++ continue; ++ } ++ while (p < end) ++ { ++ p = read_uleb128 (p, &tag); ++ /* Handle the different types of tag. */ ++ if ( (tag == 4) || (tag == 5) || (tag == 67) ) ++ { ++ /* Special cases for string values */ ++ namelen = strlen((char *)p) + 1; ++ p += namelen; ++ } ++ else ++ { ++ p = read_uleb128 (p, &val); ++ } ++ if ( (tag == ABI_VFP_args) && (val == VFP_ARGS_IN_VFP_REGS) ) ++ return 1; ++ } ++ } ++ } ++ } ++ } ++ } ++ return 0; ++} ++ ++/* Returns 0 if everything is ok, != 0 in case of error. */ ++int ++process_elf_file (const char *file_name, const char *lib, int *flag, ++ unsigned int *osversion, char **soname, void *file_contents, ++ size_t file_length) ++{ ++ ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents; ++ int ret; ++ ++ if (elf_header->e_machine != EM_ARM) ++ { ++ error (0, 0, _("%s is for unknown machine %d.\n"), ++ file_name, elf_header->e_machine); ++ return 1; ++ } ++ ++ /* Explicitly not coping with 64-bit yet... */ ++ if (elf_header->e_ident [EI_CLASS] != ELFCLASS32) ++ { ++ error (0, 0, _("%s is not 32-bit.\n"), file_name); ++ return 1; ++ } ++ ret = process_elf32_file (file_name, lib, flag, osversion, soname, ++ file_contents, file_length); ++ ++ if (!ret) ++ /* Do we have a hard-float ABI library? */ ++ if (is_library_hf(file_name, file_contents, file_length)) ++ *flag = FLAG_ARM_HFABI|FLAG_ELF_LIBC6; ++ return ret; ++} ++ ++#undef __ELF_NATIVE_CLASS ++#undef process_elf_file ++#define process_elf_file process_elf32_file ++#define __ELF_NATIVE_CLASS 32 ++#include "elf/readelflib.c" --- eglibc-2.13.orig/debian/patches/arm/submitted-armhf-triplet.diff +++ eglibc-2.13/debian/patches/arm/submitted-armhf-triplet.diff @@ -0,0 +1,20 @@ +--- a/ports/sysdeps/arm/preconfigure ++++ b/ports/sysdeps/arm/preconfigure +@@ -2,7 +2,7 @@ + arm*) + base_machine=arm + case $config_os in +- linux-gnueabi) ++ linux-gnueabi*) + machine=arm/eabi/$machine + if [ "${CFLAGS+set}" != "set" ]; then + CFLAGS="-g -O2" +--- a/ports/sysdeps/arm/shlib-versions ++++ b/ports/sysdeps/arm/shlib-versions +@@ -1,4 +1,4 @@ +-arm.*-.*-linux-gnueabi DEFAULT GLIBC_2.4 ++arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4 + +-arm.*-.*-linux-gnueabi ld=ld-linux.so.3 ++arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3 + arm.*-.*-linux.* ld=ld-linux.so.2 --- eglibc-2.13.orig/debian/patches/arm/cvs-clone-cantunwind.diff +++ eglibc-2.13/debian/patches/arm/cvs-clone-cantunwind.diff @@ -0,0 +1,29 @@ +2011-08-02 Andrew Haley + + * ports/sysdeps/unix/sysv/linux/arm/clone.S: Mark as .cantunwind. + +diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S +index 178b0f1..f3d6741 100644 +--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S ++++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S +@@ -81,8 +81,11 @@ ENTRY(__clone) + RETINSTR(, lr) + + cfi_startproc +- cfi_undefined (lr) ++PSEUDO_END (__clone) ++ + 1: ++ .fnstart ++ .cantunwind + #ifdef RESET_PID + tst ip, #CLONE_THREAD + bne 3f +@@ -116,6 +119,6 @@ ENTRY(__clone) + @ and we are done, passing the return value through r0 + b PLTJMP(HIDDEN_JUMPTARGET(_exit)) + +-PSEUDO_END (__clone) ++ .fnend + + weak_alias (__clone, clone) --- eglibc-2.13.orig/debian/patches/arm/local-eabi-wchar.diff +++ eglibc-2.13/debian/patches/arm/local-eabi-wchar.diff @@ -0,0 +1,33 @@ +--- + ports/sysdeps/arm/eabi/bits/wchar.h | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +--- /dev/null ++++ b/ports/sysdeps/arm/eabi/bits/wchar.h +@@ -0,0 +1,26 @@ ++/* wchar_t type related definitions. ++ Copyright (C) 2000 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_WCHAR_H ++#define _BITS_WCHAR_H 1 ++ ++#define __WCHAR_MIN ( 0 ) ++#define __WCHAR_MAX ( (wchar_t) - 1 ) ++ ++#endif /* bits/wchar.h */ --- eglibc-2.13.orig/debian/patches/arm/local-atomic.diff +++ eglibc-2.13/debian/patches/arm/local-atomic.diff @@ -0,0 +1,19 @@ +2010-02-09 Aurelien Jarno + + * sysdeps/unix/sysv/linux/arm/nptl/bits/atomic.h: remove useless + include. + +--- + ports/sysdeps/unix/sysv/linux/arm/nptl/bits/atomic.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/atomic.h ++++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/atomic.h +@@ -17,7 +17,6 @@ + 02111-1307 USA. */ + + #include +-#include + + + typedef int8_t atomic8_t; --- eglibc-2.13.orig/debian/patches/arm/local-linaro-cortex-strings.diff +++ eglibc-2.13/debian/patches/arm/local-linaro-cortex-strings.diff @@ -0,0 +1,227 @@ +2011-02-24 Dave Gilbert + + * ports/sysdeps/arm/memchr.S: Import fast multibyte memchr optimised + for ARM v7 from linaro cortex-strings bzr repo + * ports/sysdeps/arm/strchr.S: Import simple strchr optimised for + ARM v7 from linaro cortex-strings bzr repo, add index weak + +Index: eglibc-2.13/ports/sysdeps/arm/memchr.S +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ eglibc-2.13/ports/sysdeps/arm/memchr.S 2011-02-24 14:38:54.000000000 +0000 +@@ -0,0 +1,134 @@ ++ .syntax unified ++ .arch armv7-a ++ ++@ Copyright (c) 2010-2011, Linaro Limited ++@ 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 Linaro Limited 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 HOLDER 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. ++ ++@ Written by Dave Gilbert ++ ++@ This memchr routine is optimised on a Cortex-A9 and should work on all ARMv7 ++@ processors. It has a fast past for short sizes, and has an optimised ++@ path for large data sets; the worst case is finding the match early in a large ++@ data set. ++ ++@ 2011-02-07 david.gilbert@linaro.org ++@ Extracted from local git a5b438d861 ++ ++@ 2011-02-11 david.gilbert@linaro.org ++@ Imported into eglibc build from cortex-strings bzr rev 17, fixed up entry/exit/includes ++@ to match the eglibc way of doing things ++ ++@ TODO: Before upstreaming we need to add fallbacks for older CPUs ++ ++#include ++ ++ .text ++ .thumb ++ ++@ --------------------------------------------------------------------------- ++ .thumb_func ++ .align 2 ++ .p2align 4,,15 ++ .global memchr ++ .type memchr,%function ++ENTRY(memchr) ++ @ r0 = start of memory to scan ++ @ r1 = character to look for ++ @ r2 = length ++ @ returns r0 = pointer to character or NULL if not found ++ and r1,r1,#0xff @ Don't think we can trust the caller to actually pass a char ++ ++ cmp r2,#16 @ If it's short don't bother with anything clever ++ blt 20f ++ ++ tst r0, #7 @ If it's already aligned skip the next bit ++ beq 10f ++ ++ @ Work up to an aligned point ++5: ++ ldrb r3, [r0],#1 ++ subs r2, r2, #1 ++ cmp r3, r1 ++ beq 50f @ If it matches exit found ++ tst r0, #7 ++ cbz r2, 40f @ If we run off the end, exit not found ++ bne 5b @ If not aligned yet then do next byte ++ ++10: ++ @ At this point, we are aligned, we know we have at least 8 bytes to work with ++ push {r4,r5,r6,r7} ++ orr r1, r1, r1, lsl #8 @ expand the match word across to all bytes ++ orr r1, r1, r1, lsl #16 ++ bic r4, r2, #7 @ Number of double words to work with ++ mvns r7, #0 @ all F's ++ movs r3, #0 ++ ++15: ++ ldmia r0!,{r5,r6} ++ subs r4, r4, #8 ++ eor r5,r5, r1 @ Get it so that r5,r6 have 00's where the bytes match the target ++ eor r6,r6, r1 ++ uadd8 r5, r5, r7 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0 ++ sel r5, r3, r7 @ bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION ++ uadd8 r6, r6, r7 @ Parallel add 0xff - sets the GE bits for anything that wasn't 0 ++ sel r6, r5, r7 @ chained....bytes are 00 for none-00 bytes, or ff for 00 bytes - NOTE INVERSION ++ cbnz r6, 60f ++ bne 15b @ (Flags from the subs above) If not run out of bytes then go around again ++ ++ pop {r4,r5,r6,r7} ++ and r1,r1,#0xff @ Get r1 back to a single character from the expansion above ++ and r2,r2,#7 @ Leave the count remaining as the number after the double words have been done ++ ++20: ++ cbz r2, 40f @ 0 length or hit the end already then not found ++ ++21: @ Post aligned section, or just a short call ++ ldrb r3,[r0],#1 ++ subs r2,r2,#1 ++ eor r3,r3,r1 @ r3 = 0 if match - doesn't break flags from sub ++ cbz r3, 50f ++ bne 21b @ on r2 flags ++ ++40: ++ movs r0,#0 @ not found ++ DO_RET(lr) ++ ++50: ++ subs r0,r0,#1 @ found ++ DO_RET(lr) ++ ++60: @ We're here because the fast path found a hit - now we have to track down exactly which word it was ++ @ r0 points to the start of the double word after the one that was tested ++ @ r5 has the 00/ff pattern for the first word, r6 has the chained value ++ cmp r5, #0 ++ itte eq ++ moveq r5, r6 @ the end is in the 2nd word ++ subeq r0,r0,#3 @ Points to 2nd byte of 2nd word ++ subne r0,r0,#7 @ or 2nd byte of 1st word ++ ++ @ r0 currently points to the 3rd byte of the word containing the hit ++ tst r5, # (1<<0) @ 1st character ++ bne 61f ++ adds r0,r0,#1 ++ tst r5, # (1<<8) @ 2nd character ++ ittt eq ++ addeq r0,r0,#1 ++ tsteq r5, # (3<<15) @ 2nd & 3rd character ++ @ If not the 3rd must be the last one ++ addeq r0,r0,#1 ++ ++61: ++ pop {r4,r5,r6,r7} ++ subs r0,r0,#1 ++ DO_RET(lr) ++ ++END(memchr) ++libc_hidden_builtin_def(memchr) +Index: eglibc-2.13/ports/sysdeps/arm/strchr.S +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ eglibc-2.13/ports/sysdeps/arm/strchr.S 2011-02-24 14:49:37.000000000 +0000 +@@ -0,0 +1,76 @@ ++ .syntax unified ++ .arch armv7-a ++ ++@ Copyright (c) 2010-2011, Linaro Limited ++@ 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 Linaro Limited 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 HOLDER 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. ++ ++@ Written by Dave Gilbert ++ ++@ A very simple strchr routine, from benchmarks on A9 it's a bit faster than the ++@ current version in eglibc (2.12.1-0ubuntu14 package) ++@ I don't think doing a word at a time version is worth it since a lot ++@ of strchr cases are very short anyway ++ ++@ 2011-02-07 david.gilbert@linaro.org ++@ Extracted from local git a5b438d861 ++ ++@ 2011-02-11 david.gilbert@linaro.org ++@ Imported into eglibc build from cortex-strings bzr rev 17, fixed up entry/exit/includes ++@ to match the eglibc way of doing things ++ ++@ 2011-02-22 david.gilbert@linaro.org ++@ Added weak alias for index ++@ ++@ 2011-09-07 david.gilbert@linaro.org ++@ Mask r1 input to strchr as per lp:842258 ++ ++@ TODO: Prior to upstreaming we need to add fallbacks for older CPUs ++ ++#include ++ ++ .text ++ .thumb ++ ++@ --------------------------------------------------------------------------- ++ ++ .thumb_func ++ .align 2 ++ .p2align 4,,15 ++ .global strchr ++ .type strchr,%function ++ENTRY(strchr) ++ @ r0 = start of string ++ @ r1 = character to match ++ @ returns NULL for no match, or a pointer to the match ++ ++ and r1,r1,#255 @ C standard requires us to turn it into char ++1: ++ ldrb r2,[r0],#1 ++ cmp r2,r1 ++ cbz r2,10f ++ bne 1b ++ ++ @ We're here if it matched ++5: ++ subs r0,r0,#1 ++ DO_RET(lr) ++ ++10: ++ @ We're here if we ran off the end ++ cmp r1, #0 @ Corner case - you're allowed to search for the nil and get a pointer to it ++ beq 5b @ A bit messy, if it's common we should branch at the start to a special loop ++ mov r0,#0 ++ DO_RET(lr) ++ ++END(strchr) ++ ++weak_alias (strchr, index) ++libc_hidden_builtin_def(strchr) --- eglibc-2.13.orig/debian/patches/arm/local-syscall-mcount.diff +++ eglibc-2.13/debian/patches/arm/local-syscall-mcount.diff @@ -0,0 +1,25 @@ +Description: unset CALL_MCOUNT for __libc_do_syscall + unset CALL_MCOUNT before __libc_do_syscall, because it only supports Thumb-2 + and ARM mode, not Thumb-1; and because profiling this internal routine + is of dubious value. +Origin: https://bugs.launchpad.net/linaro-toolchain-misc/+bug/605030/+attachment/1484534/+files/libc-do-syscall.S +Author: Peter Pearse +Bug-Linaro: https://bugs.launchpad.net/linaro-toolchain-misc/+bug/605030 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/605030 +Reviewed-by: Steve Langasek + +--- a/ports/sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S ++++ b/ports/sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S +@@ -29,6 +29,12 @@ + .syntax unified + .hidden __libc_do_syscall + ++/* ++ * PMP Work round for https://bugs.launchpad.net/gcc-linaro/+bug/605030 ++ */ ++#undef CALL_MCOUNT ++#define CALL_MCOUNT ++ + ENTRY (__libc_do_syscall) + .fnstart + push {r7, lr} --- eglibc-2.13.orig/debian/patches/arm/local-sigaction.diff +++ eglibc-2.13/debian/patches/arm/local-sigaction.diff @@ -0,0 +1,38 @@ +--- + ports/sysdeps/unix/sysv/linux/arm/sigaction.c | 18 ++++-------------- + 1 file changed, 4 insertions(+), 14 deletions(-) + +--- a/ports/sysdeps/unix/sysv/linux/arm/sigaction.c ++++ b/ports/sysdeps/unix/sysv/linux/arm/sigaction.c +@@ -98,13 +98,8 @@ + memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t)); + kact.sa_flags = act->sa_flags; + # ifdef HAVE_SA_RESTORER +- if (kact.sa_flags & SA_RESTORER) +- kact.sa_restorer = act->sa_restorer; +- else +- { +- kact.sa_restorer = choose_restorer (kact.sa_flags); +- kact.sa_flags |= SA_RESTORER; +- } ++ kact.sa_restorer = choose_restorer (kact.sa_flags); ++ kact.sa_flags |= SA_RESTORER; + # endif + } + +@@ -144,13 +139,8 @@ + k_sigact.sa_mask = act->sa_mask.__val[0]; + k_sigact.sa_flags = act->sa_flags; + # ifdef HAVE_SA_RESTORER +- if (k_sigact.sa_flags & SA_RESTORER) +- k_sigact.sa_restorer = act->sa_restorer; +- else +- { +- k_sigact.sa_restorer = choose_restorer (k_sigact.sa_flags); +- k_sigact.sa_flags |= SA_RESTORER; +- } ++ k_sigact.sa_restorer = choose_restorer (k_sigact.sa_flags); ++ k_sigact.sa_flags |= SA_RESTORER; + # endif + } + result = INLINE_SYSCALL (sigaction, 3, sig, --- eglibc-2.13.orig/debian/patches/arm/local-ioperm.diff +++ eglibc-2.13/debian/patches/arm/local-ioperm.diff @@ -0,0 +1,30 @@ +# DP: Description: fix ioperm build error on arm + +--- + ports/sysdeps/unix/sysv/linux/arm/ioperm.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +--- a/ports/sysdeps/unix/sysv/linux/arm/ioperm.c ++++ b/ports/sysdeps/unix/sysv/linux/arm/ioperm.c +@@ -95,19 +95,13 @@ + * values. + */ + +-/* The Linux kernel headers renamed this constant between 2.5.26 and +- 2.5.27. It was backported to 2.4 between 2.4.22 and 2.4.23. */ +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,23) +-# define BUS_ISA CTL_BUS_ISA +-#endif +- + static int + init_iosys (void) + { + char systype[256]; + int i, n; +- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; +- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; ++ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; ++ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; + size_t len = sizeof(io.base); + + if (! __sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) --- eglibc-2.13.orig/debian/patches/ubuntu/no-sprintf-pre-truncate.diff +++ eglibc-2.13/debian/patches/ubuntu/no-sprintf-pre-truncate.diff @@ -0,0 +1,21 @@ +Description: when a program is compiled with -D_FORTIFY_SOURCE=2, the + vsprintf_chk function is called to handle sprintf/snprintf, but it + needlessly pretruncates the destination which changes the results of + sprintf(foo, "%sbar", baz). +Bug: http://sourceware.org/bugzilla/show_bug.cgi?id=7075 +Bug-Ubuntu: https://launchpad.net/bugs/305901 +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=563637 +Author: Kees Cook + +Index: glibc-2.9/debug/vsprintf_chk.c +=================================================================== +--- glibc-2.9.orig/debug/vsprintf_chk.c 2008-12-23 21:30:07.000000000 -0800 ++++ glibc-2.9/debug/vsprintf_chk.c 2008-12-23 21:30:19.000000000 -0800 +@@ -76,7 +76,6 @@ + + _IO_no_init (&f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); + _IO_JUMPS (&f._sbf) = &_IO_str_chk_jumps; +- s[0] = '\0'; + _IO_str_init_static_internal (&f, s, slen - 1, s); + + /* For flags > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n --- eglibc-2.13.orig/debian/patches/ubuntu/core-i357-avx.diff +++ eglibc-2.13/debian/patches/ubuntu/core-i357-avx.diff @@ -0,0 +1,44 @@ +From 3d29045b5e8329d97693eda8d98f1d1e60b99c8f Mon Sep 17 00:00:00 2001 +From: H.J. Lu +Date: Fri, 3 Jun 2011 07:01:25 -0400 +Subject: [PATCH] Assume Intel Core i3/i5/i7 processor if AVX is available + +--- + ChangeLog | 5 +++++ + sysdeps/x86_64/multiarch/init-arch.c | 7 +++++++ + 2 files changed, 12 insertions(+), 0 deletions(-) + +2011-06-02 H.J. Lu + + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Assume Intel Core i3/i5/i7 processor if AVX is available. + + +diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c +index 34ec2df..809d105 100644 +--- a/sysdeps/x86_64/multiarch/init-arch.c ++++ b/sysdeps/x86_64/multiarch/init-arch.c +@@ -74,6 +74,7 @@ __init_cpu_features (void) + } + else if (family == 0x06) + { ++ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; + model += extended_model; + switch (model) + { +@@ -83,6 +84,12 @@ __init_cpu_features (void) + __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; + break; + ++ default: ++ /* Unknown family 0x06 processors. Assuming this is one ++ of Core i3/i5/i7 processors if AVX is available. */ ++ if ((ecx & bit_AVX) == 0) ++ break; ++ + case 0x1a: + case 0x1e: + case 0x1f: +-- +1.7.3.4 + --- eglibc-2.13.orig/debian/patches/ubuntu/ia64-include.diff +++ eglibc-2.13/debian/patches/ubuntu/ia64-include.diff @@ -0,0 +1,10 @@ +--- ./sysdeps/ia64/elf/start.S~ 2009-05-11 13:24:14.000000000 +0200 ++++ ./sysdeps/ia64/elf/start.S 2009-05-12 18:14:39.000000000 +0200 +@@ -37,6 +37,7 @@ + #include + + #include ++#include + #include + + /* --- eglibc-2.13.orig/debian/patches/ubuntu/local-altlocaledir.diff +++ eglibc-2.13/debian/patches/ubuntu/local-altlocaledir.diff @@ -0,0 +1,35 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: support alternative gettext tree in +# DP: /usr/share/locale-langpack +# DP: Dpatch author: Martin Pitt +# DP: Patch author: Martin Pitt +# DP: Upstream status: Ubuntu-Specific +# DP: Date: 2004-12-06 20:44:10 CET + +--- glibc-2.3.5.orig/intl/l10nflist.c ++++ glibc-2.3.5/intl/l10nflist.c +@@ -267,7 +267,7 @@ _nl_make_l10nflist (l10nfile_list, dirli + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) +- * (1 << pop (mask)) ++ * 2 * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; +@@ -310,6 +310,15 @@ _nl_make_l10nflist (l10nfile_list, dirli + language, territory, codeset, + normalized_codeset, modifier, filename, 1); + } ++ const char* langpack_dir = "/usr/share/locale-langpack"; ++ for (cnt = mask; cnt >= 0; --cnt) ++ if ((cnt & ~mask) == 0) ++ { ++ retval->successor[entries++] ++ = _nl_make_l10nflist (l10nfile_list, langpack_dir, strlen (langpack_dir) + 1, cnt, ++ language, territory, codeset, ++ normalized_codeset, modifier, filename, 1); ++ } + retval->successor[entries] = NULL; + + return retval; --- eglibc-2.13.orig/debian/patches/ubuntu/disable-ld_audit.diff +++ eglibc-2.13/debian/patches/ubuntu/disable-ld_audit.diff @@ -0,0 +1,16 @@ +Description: pro-actively disable LD_AUDIT for setuid binaries (CVE-2010-3856). +Author: Kees Cook + +Index: eglibc-2.12.1/elf/rtld.c +=================================================================== +--- eglibc-2.12.1.orig/elf/rtld.c 2010-10-21 12:48:16.429357188 -0700 ++++ eglibc-2.12.1/elf/rtld.c 2010-10-21 12:48:36.260524091 -0700 +@@ -2488,7 +2488,7 @@ + while ((p = (strsep) (&str, ":")) != NULL) + if (p[0] != '\0' + && (__builtin_expect (! INTUSE(__libc_enable_secure), 1) +- || strchr (p, '/') == NULL)) ++ )) + { + /* This is using the local malloc, not the system malloc. The + memory can never be freed. */ --- eglibc-2.13.orig/debian/patches/ubuntu/README +++ eglibc-2.13/debian/patches/ubuntu/README @@ -0,0 +1,3 @@ +Patches in this directory are hacks done for Ubuntu directly. These might +include things like splitting out langpacks or launchpad/rosetta integration. + --- eglibc-2.13.orig/debian/patches/ubuntu/no-asm-mtune-i686.diff +++ eglibc-2.13/debian/patches/ubuntu/no-asm-mtune-i686.diff @@ -0,0 +1,39 @@ +--- a/sysdeps/i386/i686/Makefile ++++ b/sysdeps/i386/i686/Makefile +@@ -10,18 +10,21 @@ ifeq ($(subdir),string) + sysdep_routines += cacheinfo + endif + +-ifeq (yes,$(config-asflags-i686)) +-CFLAGS-.o += -Wa,-mtune=i686 +-CFLAGS-.os += -Wa,-mtune=i686 +-CFLAGS-.op += -Wa,-mtune=i686 +-CFLAGS-.og += -Wa,-mtune=i686 +-CFLAGS-.ob += -Wa,-mtune=i686 +-CFLAGS-.oS += -Wa,-mtune=i686 +- +-ASFLAGS-.o += -Wa,-mtune=i686 +-ASFLAGS-.os += -Wa,-mtune=i686 +-ASFLAGS-.op += -Wa,-mtune=i686 +-ASFLAGS-.og += -Wa,-mtune=i686 +-ASFLAGS-.ob += -Wa,-mtune=i686 +-ASFLAGS-.oS += -Wa,-mtune=i686 +-endif ++# Disabled for Geode LX support ++# see https://bugzilla.redhat.com/show_bug.cgi?id=579838 ++# see https://launchpad.net/bugs/587186 ++#ifeq (yes,$(config-asflags-i686)) ++#CFLAGS-.o += -Wa,-mtune=i686 ++#CFLAGS-.os += -Wa,-mtune=i686 ++#CFLAGS-.op += -Wa,-mtune=i686 ++#CFLAGS-.og += -Wa,-mtune=i686 ++#CFLAGS-.ob += -Wa,-mtune=i686 ++#CFLAGS-.oS += -Wa,-mtune=i686 ++# ++#ASFLAGS-.o += -Wa,-mtune=i686 ++#ASFLAGS-.os += -Wa,-mtune=i686 ++#ASFLAGS-.op += -Wa,-mtune=i686 ++#ASFLAGS-.og += -Wa,-mtune=i686 ++#ASFLAGS-.ob += -Wa,-mtune=i686 ++#ASFLAGS-.oS += -Wa,-mtune=i686 ++#endif --- eglibc-2.13.orig/debian/patches/ubuntu/machine-sparcv2.diff +++ eglibc-2.13/debian/patches/ubuntu/machine-sparcv2.diff @@ -0,0 +1,38 @@ +Recognize sparcv9v2 and sparc64v2 as valid machine names. The configure.in +still supports these machines, and the Debian build system misuses this as +the name of the build directory. + +--- ./scripts/config.sub~ 2009-05-13 02:14:37.000000000 +0200 ++++ ./scripts/config.sub 2009-05-13 09:43:56.000000000 +0200 +@@ -284,8 +284,8 @@ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ +- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ +- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc64v2 | sparc86x | sparclet | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sparcv9v2 \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ +@@ -368,9 +368,9 @@ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ +- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ ++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc64v2-* | sparc86x-* | sparclet-* \ + | sparclite-* \ +- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ ++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sparcv9v2-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ +@@ -1193,7 +1193,7 @@ + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) ++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sparcv9v2) + basic_machine=sparc-sun + ;; + cydra) --- eglibc-2.13.orig/debian/patches/ubuntu/delete-header-pot.diff +++ eglibc-2.13/debian/patches/ubuntu/delete-header-pot.diff @@ -0,0 +1,23 @@ +Remove header.pot file. LP: #670678 + +Index: eglibc-2.12.1/po/header.pot +=================================================================== +--- eglibc-2.12.1.orig/po/header.pot 2010-11-15 00:24:31.600647912 +0000 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,16 +0,0 @@ +-# SOME DESCRIPTIVE TITLE. +-# Copyright (C) YEAR Free Software Foundation, Inc. +-# FIRST AUTHOR , YEAR. +-# +-#, fuzzy +-msgid "" +-msgstr "" +-"Project-Id-Version: libc VERSION\n" +-"POT-Creation-Date: DATE\n" +-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +-"Last-Translator: FULL NAME \n" +-"Language-Team: LANGUAGE \n" +-"MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=CHARSET\n" +-"Content-Transfer-Encoding: 8bit\n" +- --- eglibc-2.13.orig/debian/patches/localedata/fix-lang.diff +++ eglibc-2.13/debian/patches/localedata/fix-lang.diff @@ -0,0 +1,40 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix lang_* fields in LC_ADDRESS +# DP: Related bugs: +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: Not submitted +# DP: Status Details: +# DP: Date: 2006-01-20 + +--- + localedata/locales/tr_TR | 6 +++--- + localedata/locales/wal_ET | 1 - + 2 files changed, 3 insertions(+), 4 deletions(-) + +--- a/localedata/locales/tr_TR ++++ b/localedata/locales/tr_TR +@@ -1591,10 +1591,10 @@ + country_ab3 "" + % Turkish + lang_name "" +-% tr ++% tur + lang_term "" ++% tur ++lang_lib "" + % tr +-lang_lib "" +-%tr + lang_ab "" + END LC_ADDRESS +--- a/localedata/locales/wal_ET ++++ b/localedata/locales/wal_ET +@@ -110,7 +110,6 @@ + % country_car unknown + % country_isbn unknown, Need ISO 2108 + lang_name "" +-lang_ab "" + lang_term "" + lang_lib "" + --- eglibc-2.13.orig/debian/patches/localedata/locale-sv_FI.diff +++ eglibc-2.13/debian/patches/localedata/locale-sv_FI.diff @@ -0,0 +1,28 @@ +2011-05-15 Ulrich Drepper + + [BZ #9730] + * locales/sv_FI (LC_TIME): Fix d_t_fmt and add first_weekday and + first_workday. + Patch by Johan Heikkila . + +diff a/localedata/locales/sv_FI b/localedata/locales/sv_FI +--- a/localedata/locales/sv_FI ++++ b/localedata/locales/sv_FI +@@ -98,7 +98,7 @@ mon "";/ + "";/ + "" + d_t_fmt "/ +-/ ++/ + " + d_fmt "" + t_fmt "" +@@ -107,6 +107,8 @@ t_fmt_ampm "" + date_fmt "/ + / + " ++first_weekday 2 % Monday ++first_workday 2 % Monday + END LC_TIME + + LC_PAPER --- eglibc-2.13.orig/debian/patches/localedata/supported.diff +++ eglibc-2.13/debian/patches/localedata/supported.diff @@ -0,0 +1,65 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add several locales to localedata.SUPPORTED +# DP: - ru_RU.CP1251 was requested in #225516 +# DP: - uz_UZ.UTF-8 was clearly missing, uz_UZ had no UTF-8 variant +# DP: - da_DK.ISO-8859-15, en_GB.ISO-8859-15, en_US.ISO-8859-15, no_NO.UTF-8, +# DP: no_NO and sv_SE.ISO-8859-15 are found in fedora-branch CVS branch. +# DP: Related bugs: #225516 (ru_RU.CP1251) +# DP: Dpatch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +--- + localedata/SUPPORTED | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -116,6 +116,7 @@ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ ++en_GB.ISO-8859-15/ISO-8859-15 \ + en_HK.UTF-8/UTF-8 \ + en_HK/ISO-8859-1 \ + en_IE.UTF-8/UTF-8 \ +@@ -131,6 +132,7 @@ + en_SG/ISO-8859-1 \ + en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ ++en_US.ISO-8859-15/ISO-8859-15 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ + en_ZW.UTF-8/UTF-8 \ +@@ -254,6 +256,7 @@ + ka_GE/GEORGIAN-PS \ + kk_KZ.UTF-8/UTF-8 \ + kk_KZ/PT154 \ ++kk_KZ/RK1048 \ + kl_GL.UTF-8/UTF-8 \ + kl_GL/ISO-8859-1 \ + km_KH/UTF-8 \ +@@ -331,6 +334,7 @@ + ru_RU.UTF-8/UTF-8 \ + ru_RU.KOI8-R/KOI8-R \ + ru_RU/ISO-8859-5 \ ++ru_RU.CP1251/CP1251 \ + ru_UA.UTF-8/UTF-8 \ + ru_UA/KOI8-U \ + rw_RW/UTF-8 \ +@@ -367,6 +371,7 @@ + sv_FI@euro/ISO-8859-15 \ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ ++sv_SE.ISO-8859-15/ISO-8859-15 \ + ta_IN/UTF-8 \ + te_IN/UTF-8 \ + tg_TJ.UTF-8/UTF-8 \ +@@ -391,6 +396,7 @@ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ + ur_PK/UTF-8 \ ++uz_UZ.UTF-8/UTF-8 \ + uz_UZ/ISO-8859-1 \ + uz_UZ@cyrillic/UTF-8 \ + ve_ZA/UTF-8 \ --- eglibc-2.13.orig/debian/patches/localedata/locale-zh_TW.diff +++ eglibc-2.13/debian/patches/localedata/locale-zh_TW.diff @@ -0,0 +1,25 @@ +See BTS #352600. +Not submitted yet. + +--- + localedata/locales/zh_TW | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/localedata/locales/zh_TW ++++ b/localedata/locales/zh_TW +@@ -107,13 +107,13 @@ + "";"";"" + + % d_t_fmt: "%Y%m%d (%A) %H
%M%S" +-d_t_fmt "/ ++d_t_fmt "/ + / + / + / + " + +-d_fmt "/ ++d_fmt "/ + " + + t_fmt "" --- eglibc-2.13.orig/debian/patches/localedata/locale-ff_SN.diff +++ eglibc-2.13/debian/patches/localedata/locale-ff_SN.diff @@ -0,0 +1,220 @@ +2011-05-09 Ulrich Drepper + + [BZ #12611] + * locales/ff_SN: New file. + * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entry. + +--- + localedata/SUPPORTED | 1 + localedata/locales/ff_SN | 196 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 197 insertions(+) + +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -196,6 +196,7 @@ + eu_FR/ISO-8859-1 \ + eu_FR@euro/ISO-8859-15 \ + fa_IR/UTF-8 \ ++ff_SN/UTF-8 \ + fi_FI.UTF-8/UTF-8 \ + fi_FI/ISO-8859-1 \ + fi_FI@euro/ISO-8859-15 \ +--- /dev/null ++++ b/localedata/locales/ff_SN +@@ -0,0 +1,196 @@ ++comment_char % ++escape_char / ++% Charset: UTF-8 ++% Authors: ++% 2011-03-28, admin@pulaar-fulfulde.org ++% 2011-03-28, info@2xlibre.net ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Fulah locale for Senegal" ++source "Pular-Fulfulde.org" ++contact "Ibrahima Sarr" ++email "admin@pulaar-fulfulde.org" ++language "ff" ++territory "Senegal" ++revision "1.0" ++date "2011-03-28" ++% ++category "ff_SN:2000";LC_IDENTIFICATION ++category "ff_SN:2000";LC_CTYPE ++category "ff_SN:2000";LC_COLLATE ++category "ff_SN:2000";LC_TIME ++category "ff_SN:2000";LC_NUMERIC ++category "ff_SN:2000";LC_MONETARY ++category "ff_SN:2000";LC_PAPER ++category "ff_SN:2000";LC_MEASUREMENT ++category "ff_SN:2000";LC_MESSAGES ++category "ff_SN:2000";LC_NAME ++category "ff_SN:2000";LC_ADDRESS ++category "ff_SN:2000";LC_TELEPHONE ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_TIME ++% siilo, colte, mbooy, seeÉ—to, duujal, korse, morso, juko, siilto, yarkomaa, jolal, bowte ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% sii, col, mbo, see, duu, kor, mor, juk, slt, yar, jol, bow ++abmon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% dewo, aaÉ“nde, mawbaare, njeslaare, naasaande, mawnde, hoore-biir ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% dew, aaÉ“, maw, nje, naa, mwd, hbi ++abday "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++week 7;19971129;1 ++first_weekday 1 ++% %a %d %b %Y %R %Z ++d_t_fmt "/ ++" ++% %d/%m/%Y ++d_fmt "" ++% %R ++t_fmt "" ++% subaka, kikiiÉ—e ++am_pm "";/ ++ "" ++END LC_TIME ++ ++LC_NUMERIC ++% , ++decimal_point "" ++% . ++thousands_sep "" ++grouping 3 ++END LC_NUMERIC ++ ++LC_MONETARY ++% CFA ++currency_symbol "" ++% XOF ++int_curr_symbol "" ++% . ++mon_decimal_point "" ++% , ++mon_thousands_sep "" ++mon_grouping 3 ++positive_sign "" ++% - ++negative_sign "" ++frac_digits 2 ++int_frac_digits 2 ++p_cs_precedes 0 ++p_sep_by_space 1 ++n_cs_precedes 0 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_PAPER ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_MEASUREMENT ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_MESSAGES ++% ^[yYeE].* ++yesexpr "" ++% ^[nNaA].* ++noexpr "" ++END LC_MESSAGES ++ ++LC_NAME ++% %p%t%g%m%t%f ++name_fmt "" ++% kaddol ++name_gen "" ++% sokna ++name_miss "" ++% ceerno ++name_mr "" ++% sokna ++name_mrs "" ++% sokna ++name_ms "" ++END LC_NAME ++ ++LC_ADDRESS ++% %a%N%f%N%d%N%b%N%h %s %e %r%N%T, %S %z%N%c%N ++postal_fmt "/ ++/ ++/ ++" ++% Senegaal ++country_name "" ++% SN ++country_post "" ++% SN ++country_ab2 "" ++% SEN ++country_ab3 "" ++country_num 686 ++% Pulaar ++lang_name "" ++% ff ++lang_ab "" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% %c %a %l ++tel_int_fmt "" ++% %a %l ++tel_dom_fmt "" ++% 00 ++int_select "" ++% 221 ++int_prefix "" ++END LC_TELEPHONE ++ --- eglibc-2.13.orig/debian/patches/localedata/fr_LU-first_weekday.diff +++ eglibc-2.13/debian/patches/localedata/fr_LU-first_weekday.diff @@ -0,0 +1,15 @@ +--- + localedata/locales/fr_LU | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/localedata/locales/fr_LU ++++ b/localedata/locales/fr_LU +@@ -122,6 +122,8 @@ + / + / + " ++week 7;19971130;4 ++first_weekday 2 + END LC_TIME + + LC_PAPER --- eglibc-2.13.orig/debian/patches/localedata/locale-csb_PL.diff +++ eglibc-2.13/debian/patches/localedata/locale-csb_PL.diff @@ -0,0 +1,59 @@ +Modify collation rules which could cause errors in regular expressions +with character ranges, as was reported in #362514 for another locale. + +--- + localedata/locales/csb_PL | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +--- a/localedata/locales/csb_PL ++++ b/localedata/locales/csb_PL +@@ -93,38 +93,45 @@ + + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE + ;;;IGNORE + + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE + ;;;IGNORE + + reorder-after + ;;;IGNORE ++reorder-after + ;;;IGNORE + + reorder-after + ;;;IGNORE ++reorder-after + ;;;IGNORE + + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + + reorder-after + ;;;IGNORE ++reorder-after + ;;;IGNORE + + reorder-after + ;;;IGNORE ++reorder-after + ;;;IGNORE + + reorder-end --- eglibc-2.13.orig/debian/patches/localedata/locale-eo_EO.diff +++ eglibc-2.13/debian/patches/localedata/locale-eo_EO.diff @@ -0,0 +1,243 @@ +# DP: Description: Add Esperanto locale (eo_EO) +# DP: Related bugs: #78085 #233308 +# DP: Dpatch author: Ben Collins +# DP: Patch author: Robert Thomson and Edmund GRIMLEY +# DP: Upstream status: Not submitted +# DP: Status Details: +# DP: Date: 2001-03-23 + +--- + localedata/SUPPORTED | 2 + localedata/locales/eo | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 218 insertions(+) + +--- /dev/null ++++ b/localedata/locales/eo +@@ -0,0 +1,216 @@ ++comment_char % ++escape_char / ++ ++% Esperanto language locale for ... ++% Edmund GRIMLEY EVANS ++ ++LC_IDENTIFICATION ++title "Esperanto locale" ++source "" ++address "" ++contact "" ++email "debian-esperanto@lists.debian.org" ++tel "" ++fax "" ++language "Esperanto" ++territory "" ++revision "draft" ++date "2002-07-04" ++% ++category "eo:2000";LC_IDENTIFICATION ++category "eo:2000";LC_CTYPE ++category "eo:2000";LC_COLLATE ++category "eo:2000";LC_TIME ++category "eo:2000";LC_NUMERIC ++category "eo:2000";LC_MONETARY ++category "eo:2000";LC_MESSAGES ++category "eo:2000";LC_PAPER ++category "eo:2000";LC_NAME ++category "eo:2000";LC_ADDRESS ++category "eo:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE % Ĉ ++reorder-after ++ ;;;IGNORE % ĉ ++reorder-after ++ ;;;IGNORE % Äœ ++reorder-after ++ ;;;IGNORE % Ä ++reorder-after ++ ;;;IGNORE % Ĥ ++reorder-after ++ ;;;IGNORE % Ä¥ ++reorder-after ++ ;;;IGNORE % Ä´ ++reorder-after ++ ;;;IGNORE % ĵ ++reorder-after ++ ;;;IGNORE % Åœ ++reorder-after ++ ;;;IGNORE % Å ++reorder-after ++ ;;;IGNORE % Ŭ ++reorder-after ++ ;;;IGNORE % Å­ ++ ++reorder-end ++ ++END LC_COLLATE ++ ++LC_MONETARY ++int_curr_symbol "" % "EUR" ++currency_symbol "" % "EUR" ++% "" ne eblas en ISO-8859-3 ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3;3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 1 ++n_cs_precedes 1 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_NUMERIC ++decimal_point "" ++thousands_sep "" ++grouping 0;0 ++END LC_NUMERIC ++ ++LC_TIME ++ ++% "dim";"lun";"mar";"mer";"ĵaÅ­";"ven";"sab" ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++ ++% "dimanĉo";"lundo";"mardo";"merkredo";"ĵaÅ­do";"vendredo";"sabato" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++% "Jan";"Feb";"Mar";"Apr";"Maj";"Jun";"Jul";"AÅ­g";"Sep";"Okt";"Nov";"Dec" ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++ ++% "Januaro";"Februaro";"Marto";"Aprilo";"Majo";"Junio"; ++% "Julio";"AÅ­gusto";"Septembro";"Oktobro";"Novembro";"Decembro" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++am_pm "";"" ++ ++% "%a %d %b %Y %T %z" ++d_t_fmt "" ++ ++% "%Y-%m-%d" ++d_fmt "" ++ ++% "%T" ++t_fmt "" ++ ++t_fmt_ampm "" ++ ++% date_fmt ? ++ ++END LC_TIME ++ ++LC_MESSAGES ++% "^[JjYy].*" ++yesexpr "" ++% "^[Nn].*" ++noexpr "" ++END LC_MESSAGES ++ ++LC_PAPER ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_TELEPHONE ++% "+%c %a %l" ++tel_int_fmt "/ ++" ++% "00" ++int_select "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_NAME ++% "%d%t%g%t%m%t%f" ++name_fmt "/ ++" ++name_mr "" % "s-ro" ++name_mrs "" % "s-ino" ++name_ms "" % "s-ino" ++END LC_NAME ++ ++LC_ADDRESS ++% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N" ++postal_fmt "/ ++/ ++/ ++/ ++" ++% "Esperanto" ++lang_name "" ++lang_ab "" % "eo" ++lang_term "" % "epo" ++END LC_ADDRESS +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -137,6 +137,8 @@ + en_ZA/ISO-8859-1 \ + en_ZW.UTF-8/UTF-8 \ + en_ZW/ISO-8859-1 \ ++eo.UTF-8/UTF-8 \ ++eo/ISO-8859-3 \ + es_AR.UTF-8/UTF-8 \ + es_AR/ISO-8859-1 \ + es_BO.UTF-8/UTF-8 \ --- eglibc-2.13.orig/debian/patches/localedata/tailor-iso14651_t1.diff.TODO +++ eglibc-2.13/debian/patches/localedata/tailor-iso14651_t1.diff.TODO @@ -0,0 +1,2110 @@ +--- a/localedata/locales/et_EE ++++ b/localedata/locales/et_EE +@@ -55,2067 +55,48 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + --- eglibc-2.13.orig/debian/patches/localedata/locale-os_RU.diff +++ eglibc-2.13/debian/patches/localedata/locale-os_RU.diff @@ -0,0 +1,196 @@ +2011-05-09 Ulrich Drepper + + [BZ #12738] + * locales/os_RU: New file. + Contributed by Soslan Khubulov . + * SUPPORTED: Add entry for os_RU. + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index d665961..81d5e11 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -315,6 +315,7 @@ om_ET/UTF-8 \ + om_KE.UTF-8/UTF-8 \ + om_KE/ISO-8859-1 \ + or_IN/UTF-8 \ ++os_RU/UTF-8 \ + pa_IN/UTF-8 \ + pa_PK/UTF-8 \ + pap_AN/UTF-8 \ +diff --git a/localedata/locales/os_RU b/localedata/locales/os_RU +new file mode 100644 +index 0000000..c914d18 +--- /dev/null ++++ b/localedata/locales/os_RU +@@ -0,0 +1,171 @@ ++comment_char % ++escape_char / ++ ++% ++% Ossetian Language Locale for Russia ++% Language: os ++% Territory: RU ++% Revision: 1.0 ++% Date: 2011-05-06 ++% Application: general ++% Users: general ++% Charset: UTF-8 ++% Distribution and use is free, also ++% for commercial purposes. ++% ++% Based on ru_RU, cv_RU, da_DK ++% Modifed by: ++% Soslan Khubulov ++% ++ ++LC_IDENTIFICATION ++title "Ossetian locale for Russia" ++source "RAP" ++address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark" ++contact "" ++email "bug-glibc-locales@gnu.org" ++tel "" ++fax "" ++language "Ossetian" ++territory "Russia" ++revision "1.0" ++date "2000-06-29" ++ ++category "os_RU:2000";LC_IDENTIFICATION ++category "os_RU:2000";LC_CTYPE ++category "os_RU:2000";LC_COLLATE ++category "os_RU:2000";LC_TIME ++category "os_RU:2000";LC_NUMERIC ++category "os_RU:2000";LC_MONETARY ++category "os_RU:2000";LC_MESSAGES ++category "os_RU:2000";LC_PAPER ++category "os_RU:2000";LC_NAME ++category "os_RU:2000";LC_ADDRESS ++category "os_RU:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++ ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-end ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++ ++END LC_CTYPE ++ ++LC_MESSAGES ++yesexpr "" ++noexpr "" ++END LC_MESSAGES ++ ++LC_MONETARY ++int_curr_symbol "" ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3;3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 0 ++p_sep_by_space 1 ++n_cs_precedes 0 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "ru_RU" ++END LC_NUMERIC ++ ++LC_TIME ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++ ++abmon "";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"" ++ ++mon "";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"";/ ++"" ++d_t_fmt "/ ++" ++d_fmt "" ++t_fmt "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" ++first_weekday 2 ++first_workday 2 ++ ++END LC_TIME ++ ++LC_PAPER ++copy "ru_RU" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "ru_RU" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "ru_RU" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "ru_RU" ++END LC_NAME ++ ++LC_ADDRESS ++copy "ru_RU" ++END LC_ADDRESS ++ --- eglibc-2.13.orig/debian/patches/localedata/submitted-bz9912-locale-ru_UA.diff +++ eglibc-2.13/debian/patches/localedata/submitted-bz9912-locale-ru_UA.diff @@ -0,0 +1,14 @@ +--- + localedata/locales/ru_UA | 1 + + 1 file changed, 1 insertion(+) + +--- a/localedata/locales/ru_UA ++++ b/localedata/locales/ru_UA +@@ -141,6 +141,7 @@ + date_fmt "/ + / + " ++week 7;19971201;4 + END LC_TIME + + LC_PAPER --- eglibc-2.13.orig/debian/patches/localedata/fr_CH-first_weekday.diff +++ eglibc-2.13/debian/patches/localedata/fr_CH-first_weekday.diff @@ -0,0 +1,15 @@ +--- + localedata/locales/fr_CH | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/localedata/locales/fr_CH ++++ b/localedata/locales/fr_CH +@@ -107,6 +107,8 @@ + / + / + " ++week 7;19971130;4 ++first_weekday 2 + END LC_TIME + + LC_PAPER --- eglibc-2.13.orig/debian/patches/localedata/locales-fr.diff +++ eglibc-2.13/debian/patches/localedata/locales-fr.diff @@ -0,0 +1,274 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Various fixes for all French locales +# DP: Related bugs: #248377 #351786 #345481 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +--- + localedata/locales/fr_BE | 20 +++++++++++++++----- + localedata/locales/fr_CA | 15 ++++++++++----- + localedata/locales/fr_CH | 23 +++++++++++++++-------- + localedata/locales/fr_FR | 21 ++++++++++++++++++--- + localedata/locales/fr_LU | 23 ++++++++++++++++------- + 5 files changed, 74 insertions(+), 28 deletions(-) + +--- a/localedata/locales/fr_BE ++++ b/localedata/locales/fr_BE +@@ -42,6 +42,7 @@ + category "fr_BE:2000";LC_NAME + category "fr_BE:2000";LC_ADDRESS + category "fr_BE:2000";LC_TELEPHONE ++category "fr_BE:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -117,9 +118,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + + week 7;19971130;4 + first_weekday 2 +@@ -146,8 +148,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -159,4 +160,13 @@ + country_ab2 "" + country_ab3 "" + country_num 056 ++country_name "" ++country_car "" ++% FIXME ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +--- a/localedata/locales/fr_CA ++++ b/localedata/locales/fr_CA +@@ -43,6 +43,7 @@ + category "fr_CA:2000";LC_NAME + category "fr_CA:2000";LC_ADDRESS + category "fr_CA:2000";LC_TELEPHONE ++category "fr_CA:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -118,9 +119,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -136,8 +138,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -149,6 +150,10 @@ + country_ab2 "" + country_ab3 "" + country_num 124 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 + lang_name "" + lang_ab "" + lang_term "" +--- a/localedata/locales/fr_CH ++++ b/localedata/locales/fr_CH +@@ -43,6 +43,7 @@ + category "fr_CH:2000";LC_NAME + category "fr_CH:2000";LC_ADDRESS + category "fr_CH:2000";LC_TELEPHONE ++category "fr_CH:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -64,9 +65,7 @@ + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 0;0 ++copy "de_CH" + END LC_NUMERIC + + LC_TIME +@@ -104,9 +103,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -128,8 +128,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -141,4 +140,12 @@ + country_ab2 "" + country_ab3 "" + country_num 756 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +--- a/localedata/locales/fr_FR ++++ b/localedata/locales/fr_FR +@@ -44,6 +44,7 @@ + category "fr_FR:2000";LC_NAME + category "fr_FR:2000";LC_ADDRESS + category "fr_FR:2000";LC_TELEPHONE ++category "fr_FR:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -137,9 +138,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + + week 7;19971130;4 + first_weekday 2 +@@ -166,6 +168,11 @@ + LC_NAME + name_fmt "/ + " ++name_gen "" ++name_mr "" ++name_mrs "" ++name_miss "" ++name_ms "" + END LC_NAME + + LC_ADDRESS +@@ -177,4 +184,12 @@ + country_ab2 "" + country_ab3 "" + country_num 250 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS +--- a/localedata/locales/fr_LU ++++ b/localedata/locales/fr_LU +@@ -42,6 +42,7 @@ + category "fr_LU:2000";LC_NAME + category "fr_LU:2000";LC_ADDRESS + category "fr_LU:2000";LC_TELEPHONE ++category "fr_LU:2000";LC_MEASUREMENT + + END LC_IDENTIFICATION + +@@ -78,8 +79,8 @@ + + LC_NUMERIC + decimal_point "" +-thousands_sep "" +-grouping 0;0 ++thousands_sep "" ++grouping 3;3 + END LC_NUMERIC + + LC_TIME +@@ -117,9 +118,10 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++" + END LC_TIME + + LC_PAPER +@@ -141,8 +143,7 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "fr_FR" + END LC_NAME + + LC_ADDRESS +@@ -154,4 +155,12 @@ + country_ab2 "" + country_ab3 "" + country_num 442 ++country_name "" ++country_car "" ++country_post "" ++country_isbn 2 ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS --- eglibc-2.13.orig/debian/patches/localedata/sort-UTF8-first.diff +++ eglibc-2.13/debian/patches/localedata/sort-UTF8-first.diff @@ -0,0 +1,79 @@ +--- + localedata/SUPPORTED | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -227,8 +227,8 @@ + hne_IN/UTF-8 \ + hr_HR.UTF-8/UTF-8 \ + hr_HR/ISO-8859-2 \ +-hsb_DE/ISO-8859-2 \ + hsb_DE.UTF-8/UTF-8 \ ++hsb_DE/ISO-8859-2 \ + ht_HT/UTF-8 \ + hu_HU.UTF-8/UTF-8 \ + hu_HU/ISO-8859-2 \ +@@ -248,8 +248,8 @@ + iu_CA/UTF-8 \ + iw_IL.UTF-8/UTF-8 \ + iw_IL/ISO-8859-8 \ +-ja_JP.EUC-JP/EUC-JP \ + ja_JP.UTF-8/UTF-8 \ ++ja_JP.EUC-JP/EUC-JP \ + ka_GE.UTF-8/UTF-8 \ + ka_GE/GEORGIAN-PS \ + kk_KZ.UTF-8/UTF-8 \ +@@ -258,8 +258,8 @@ + kl_GL/ISO-8859-1 \ + km_KH/UTF-8 \ + kn_IN/UTF-8 \ +-ko_KR.EUC-KR/EUC-KR \ + ko_KR.UTF-8/UTF-8 \ ++ko_KR.EUC-KR/EUC-KR \ + kok_IN/UTF-8 \ + ks_IN/UTF-8 \ + ks_IN@devanagari/UTF-8 \ +@@ -328,8 +328,8 @@ + pt_PT@euro/ISO-8859-15 \ + ro_RO.UTF-8/UTF-8 \ + ro_RO/ISO-8859-2 \ +-ru_RU.KOI8-R/KOI8-R \ + ru_RU.UTF-8/UTF-8 \ ++ru_RU.KOI8-R/KOI8-R \ + ru_RU/ISO-8859-5 \ + ru_UA.UTF-8/UTF-8 \ + ru_UA/KOI8-U \ +@@ -394,28 +394,28 @@ + uz_UZ/ISO-8859-1 \ + uz_UZ@cyrillic/UTF-8 \ + ve_ZA/UTF-8 \ +-vi_VN.TCVN/TCVN5712-1 \ + vi_VN/UTF-8 \ ++vi_VN.TCVN/TCVN5712-1 \ ++wa_BE.UTF-8/UTF-8 \ + wa_BE/ISO-8859-1 \ + wa_BE@euro/ISO-8859-15 \ +-wa_BE.UTF-8/UTF-8 \ + wo_SN/UTF-8 \ + xh_ZA.UTF-8/UTF-8 \ + xh_ZA/ISO-8859-1 \ + yi_US.UTF-8/UTF-8 \ + yi_US/CP1255 \ + yo_NG/UTF-8 \ ++zh_CN.UTF-8/UTF-8 \ + zh_CN.GB18030/GB18030 \ + zh_CN.GBK/GBK \ +-zh_CN.UTF-8/UTF-8 \ + zh_CN/GB2312 \ + zh_HK.UTF-8/UTF-8 \ + zh_HK/BIG5-HKSCS \ + zh_SG.UTF-8/UTF-8 \ + zh_SG.GBK/GBK \ + zh_SG/GB2312 \ +-zh_TW.EUC-TW/EUC-TW \ + zh_TW.UTF-8/UTF-8 \ ++zh_TW.EUC-TW/EUC-TW \ + zh_TW/BIG5 \ + zu_ZA.UTF-8/UTF-8 \ + zu_ZA/ISO-8859-1 \ --- eglibc-2.13.orig/debian/patches/localedata/local-all-no-archive.diff +++ eglibc-2.13/debian/patches/localedata/local-all-no-archive.diff @@ -0,0 +1,15 @@ +--- + localedata/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/localedata/Makefile ++++ b/localedata/Makefile +@@ -255,7 +255,7 @@ + echo -n `echo $$locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \ + echo -n '...'; \ + input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ +- $(LOCALEDEF) --alias-file=../intl/locale.alias \ ++ $(LOCALEDEF) --alias-file=../intl/locale.alias --no-archive \ + -i locales/$$input -c -f charmaps/$$charset \ + $(addprefix --prefix=,$(install_root)) $$locale; \ + echo ' done'; \ --- eglibc-2.13.orig/debian/patches/localedata/tailor-iso14651_t1-common.diff +++ eglibc-2.13/debian/patches/localedata/tailor-iso14651_t1-common.diff @@ -0,0 +1,43 @@ +--- + localedata/locales/iso14651_t1_common | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +--- a/localedata/locales/iso14651_t1_common ++++ b/localedata/locales/iso14651_t1_common +@@ -2810,7 +2810,11 @@ + # SYMB. N° + # + ++ifdef UPPERCASE_FIRST ++ ++else + ++endif + # forme de base (bas de casse, arabe intrinsèque, + # hébreu intrinsèque, etc. + # basic form (lower case, intrinsic Arabic +@@ -2829,14 +2833,21 @@ + # medial/mdian + # 6 + # ++ifdef UPPERCASE_FIRST ++ # 7 ++ # 8 ++ # 9 ++ # 10 ++ # 11 ++ # 12 ++else + # 7 + # 8 + # 9 + # 10 + # 11 +- +-#alternate lower case/ +-# 12 ++ # 12 alternate lower case ++endif + # + #minuscules spéciales après majuscules + # / --- eglibc-2.13.orig/debian/patches/localedata/locale-de_LI.diff +++ eglibc-2.13/debian/patches/localedata/locale-de_LI.diff @@ -0,0 +1,112 @@ +--- + localedata/SUPPORTED | 1 + localedata/locales/de_LI | 94 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 95 insertions(+) + +--- /dev/null ++++ b/localedata/locales/de_LI +@@ -0,0 +1,94 @@ ++comment_char % ++escape_char / ++% ++% German locale for Liechtenstein ++% Language: de ++% Territory: LI ++% Revision: 1.0 ++% Date: 2007-11-27 ++% Users: general ++% Repertoiremap: mnemonic.ds ++% Charset: ISO-8859-1 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "German locale for Liechtenstein" ++source "" ++address "" ++contact "" ++email "bug-glibc-locales@gnu.org" ++tel "" ++fax "" ++language "German" ++territory "Liechtenstein" ++revision "1.0" ++date "2007-11-27" ++% ++category "de_LI:2000";LC_IDENTIFICATION ++category "de_LI:2000";LC_CTYPE ++category "de_LI:2000";LC_COLLATE ++category "de_LI:2000";LC_TIME ++category "de_LI:2000";LC_NUMERIC ++category "de_LI:2000";LC_MONETARY ++category "de_LI:2000";LC_MESSAGES ++category "de_LI:2000";LC_PAPER ++category "de_LI:2000";LC_NAME ++category "de_LI:2000";LC_ADDRESS ++category "de_LI:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "de_CH" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "de_CH" ++END LC_COLLATE ++ ++LC_MESSAGES ++copy "de_CH" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "de_CH" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "de_CH" ++END LC_NUMERIC ++ ++LC_TIME ++copy "de_CH" ++END LC_TIME ++ ++LC_PAPER ++copy "de_CH" ++END LC_PAPER ++ ++LC_TELEPHONE ++tel_int_fmt "/ ++" ++int_prefix "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "de_CH" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "de_CH" ++END LC_NAME ++ ++LC_ADDRESS ++postal_fmt "/ ++/ ++/ ++/ ++" ++country_ab2 "" ++country_ab3 "" ++country_num 438 ++END LC_ADDRESS ++ +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -98,6 +98,7 @@ + de_DE.UTF-8/UTF-8 \ + de_DE/ISO-8859-1 \ + de_DE@euro/ISO-8859-15 \ ++de_LI.UTF-8/UTF-8 \ + de_LU.UTF-8/UTF-8 \ + de_LU/ISO-8859-1 \ + de_LU@euro/ISO-8859-15 \ --- eglibc-2.13.orig/debian/patches/localedata/cy_GB-first_weekday.diff +++ eglibc-2.13/debian/patches/localedata/cy_GB-first_weekday.diff @@ -0,0 +1,15 @@ +--- + localedata/locales/cy_GB | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/localedata/locales/cy_GB ++++ b/localedata/locales/cy_GB +@@ -253,6 +253,8 @@ + date_fmt "/ + / + " ++week 7;19971130;4 ++first_weekday 2 + END LC_TIME + + LC_MESSAGES --- eglibc-2.13.orig/debian/patches/localedata/fo_FO-date_fmt.diff +++ eglibc-2.13/debian/patches/localedata/fo_FO-date_fmt.diff @@ -0,0 +1,37 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix d_t_fmt and date_fmt in fo_FO +# DP: Related bugs: #307194 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Jacob Sparre Andersen +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +--- + localedata/locales/fo_FO | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +--- a/localedata/locales/fo_FO ++++ b/localedata/locales/fo_FO +@@ -95,14 +95,18 @@ + "";/ + "";/ + "" +-d_t_fmt "" ++d_t_fmt "/ ++/ ++" + d_fmt "" + t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++date_fmt "/ ++/ ++/ ++/ ++" + END LC_TIME + + LC_MESSAGES --- eglibc-2.13.orig/debian/patches/localedata/locale-en_DK.diff +++ eglibc-2.13/debian/patches/localedata/locale-en_DK.diff @@ -0,0 +1,86 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Improve en_DK and add en_DK.ISO-8859-15 to SUPPORTED +# DP: This locale is only useful to provide ISO8601 date formats. +# DP: Related bugs: #323159 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Jakob Bohm +# DP: Upstream status: not submitted +# DP: Date: 2006-01-16 + +--- + localedata/SUPPORTED | 1 + + localedata/locales/en_DK | 35 +++++------------------------------ + 2 files changed, 6 insertions(+), 30 deletions(-) + +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -115,6 +115,7 @@ + en_CA.UTF-8/UTF-8 \ + en_CA/ISO-8859-1 \ + en_DK.UTF-8/UTF-8 \ ++en_DK.ISO-8859-15/ISO-8859-15 \ + en_DK/ISO-8859-1 \ + en_GB.UTF-8/UTF-8 \ + en_GB/ISO-8859-1 \ +--- a/localedata/locales/en_DK ++++ b/localedata/locales/en_DK +@@ -60,27 +60,11 @@ + END LC_CTYPE + + LC_MONETARY +-int_curr_symbol "" +-currency_symbol "" +-mon_decimal_point "" +-mon_thousands_sep "" +-mon_grouping 3;3 +-positive_sign "" +-negative_sign "" +-int_frac_digits 2 +-frac_digits 2 +-p_cs_precedes 1 +-p_sep_by_space 0 +-n_cs_precedes 1 +-n_sep_by_space 0 +-p_sign_posn 1 +-n_sign_posn 1 ++copy "da_DK" + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 3;3 ++copy "da_DK" + END LC_NUMERIC + + LC_TIME +@@ -128,8 +112,7 @@ + END LC_TIME + + LC_MESSAGES +-yesexpr "" +-noexpr "" ++copy "da_DK" + END LC_MESSAGES + + LC_PAPER +@@ -145,17 +128,9 @@ + END LC_MEASUREMENT + + LC_NAME +-name_fmt "/ +-" ++copy "da_DK" + END LC_NAME + + LC_ADDRESS +-postal_fmt "/ +-/ +-/ +-/ +-" +-country_ab2 "" +-country_ab3 "" +-country_num 208 ++copy "da_DK" + END LC_ADDRESS --- eglibc-2.13.orig/debian/patches/localedata/fr_CA-first_weekday.diff +++ eglibc-2.13/debian/patches/localedata/fr_CA-first_weekday.diff @@ -0,0 +1,15 @@ +--- + localedata/locales/fr_CA | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/localedata/locales/fr_CA ++++ b/localedata/locales/fr_CA +@@ -123,6 +123,8 @@ + / + / + " ++week 7;19971130;4 ++first_weekday 2 + END LC_TIME + + LC_PAPER --- eglibc-2.13.orig/debian/patches/localedata/locale-sw.diff +++ eglibc-2.13/debian/patches/localedata/locale-sw.diff @@ -0,0 +1,321 @@ +2011-05-09 Ulrich Drepper + + [BZ #12551] + * locales/sw_KE: New file. + * locales/sw_TZ: New file. + * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entries. + +--- + localedata/SUPPORTED | 2 + localedata/locales/sw_KE | 170 +++++++++++++++++++++++++++++++++++++++++++++++ + localedata/locales/sw_TZ | 121 +++++++++++++++++++++++++++++++++ + 3 files changed, 293 insertions(+) + +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -385,6 +385,8 @@ + sv_SE.UTF-8/UTF-8 \ + sv_SE/ISO-8859-1 \ + sv_SE.ISO-8859-15/ISO-8859-15 \ ++sw_KE/UTF-8 \ ++sw_TZ/UTF-8 \ + ta_IN/UTF-8 \ + te_IN/UTF-8 \ + tg_TJ.UTF-8/UTF-8 \ +--- /dev/null ++++ b/localedata/locales/sw_KE +@@ -0,0 +1,170 @@ ++comment_char % ++escape_char / ++% Charset: UTF-8 ++% Authors: ++% 2011-03-07, locales@kamusi.org ++% 2011-03-07, info@2xlibre.net ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Swahili locale for Kenya" ++source "Kamusi Project" ++contact "Martin Benjamin" ++email "locales@kamusi.org" ++tel "" ++fax "" ++language "sw" ++territory "Kenya" ++revision "1.0" ++date "2011-03-07" ++% ++category "sw_KE:2000";LC_IDENTIFICATION ++category "sw_KE:2000";LC_CTYPE ++category "sw_KE:2000";LC_COLLATE ++category "sw_KE:2000";LC_TIME ++category "sw_KE:2000";LC_NUMERIC ++category "sw_KE:2000";LC_MONETARY ++category "sw_KE:2000";LC_PAPER ++category "sw_KE:2000";LC_MEASUREMENT ++category "sw_KE:2000";LC_MESSAGES ++category "sw_KE:2000";LC_NAME ++category "sw_KE:2000";LC_ADDRESS ++category "sw_KE:2000";LC_TELEPHONE ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_TIME ++% Januari, Februari, Machi, Aprili, Mei, Juni, Julai, Agosti, Septemba, Oktoba, Novemba, Desemba ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Jan, Feb, Mac, Apr, Mei, Jun, Jul, Ago, Sep, Okt, Nov, Des ++abmon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Jumapili, Jumatatu, Jumanne, Jumatano, Alhamisi, Ijumaa, Jumamosi ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% J2, J3, J4, J5, Alh, Ij, J1 ++abday "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++week 7;19971130;4 ++first_weekday 2 ++first_workday 2 ++% %e %B %Y %I:%M:%S %p %Z ++d_t_fmt "/ ++" ++% %d/%m/%Y ++d_fmt "" ++% %I:%M:%S %p ++t_fmt "" ++% asubuhi, alasiri ++am_pm "";/ ++ "" ++% %I:%M:%S %p ++t_fmt_ampm "" ++END LC_TIME ++ ++LC_NUMERIC ++copy "om_KE" ++END LC_NUMERIC ++ ++LC_MONETARY ++copy "om_KE" ++END LC_MONETARY ++ ++LC_PAPER ++copy "om_KE" ++END LC_PAPER ++ ++LC_MEASUREMENT ++copy "om_KE" ++END LC_MEASUREMENT ++ ++LC_MESSAGES ++% ^[nNyY].* ++yesexpr "" ++% ^[hHlL].* ++noexpr "" ++END LC_MESSAGES ++ ++LC_NAME ++% %p%t%g%m%t%f ++name_fmt "" ++% Bw. ++name_mr "" ++% Bi. ++name_ms "" ++END LC_NAME ++ ++LC_ADDRESS ++% %a%N%f%N%d%N%b%N%h %s %e %r%N%T, %S %z%N%c%N ++postal_fmt "/ ++/ ++/ ++" ++% Kenya ++country_name "" ++% KE ++country_post "" ++% KE ++country_ab2 "" ++% KEN ++country_ab3 "" ++country_num 404 ++% Kiswahili ++lang_name "" ++% sw ++lang_ab "" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% %c %a %l ++tel_int_fmt "" ++% %A %l ++tel_dom_fmt "" ++% 000 ++int_select "" ++% 254 ++int_prefix "" ++END LC_TELEPHONE +--- /dev/null ++++ b/localedata/locales/sw_TZ +@@ -0,0 +1,121 @@ ++comment_char % ++escape_char / ++% Charset: UTF-8 ++% Authors: ++% 2011-03-07, locales@kamusi.org ++% 2011-03-07, info@2xlibre.net ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Swahili locale for Tanzania" ++source "Kamusi Project" ++contact "Martin Benjamin" ++email "locales@kamusi.org" ++tel "" ++fax "" ++language "sw" ++territory "Tanzania" ++revision "1.0" ++date "2011-03-07" ++% ++category "sw_TZ:2000";LC_IDENTIFICATION ++category "sw_TZ:2000";LC_CTYPE ++category "sw_TZ:2000";LC_COLLATE ++category "sw_TZ:2000";LC_TIME ++category "sw_TZ:2000";LC_NUMERIC ++category "sw_TZ:2000";LC_MONETARY ++category "sw_TZ:2000";LC_PAPER ++category "sw_TZ:2000";LC_MEASUREMENT ++category "sw_TZ:2000";LC_MESSAGES ++category "sw_TZ:2000";LC_NAME ++category "sw_TZ:2000";LC_ADDRESS ++category "sw_TZ:2000";LC_TELEPHONE ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "sw_KE" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_TIME ++copy "sw_KE" ++END LC_TIME ++ ++LC_NUMERIC ++copy "sw_KE" ++END LC_NUMERIC ++ ++LC_MONETARY ++% TSh ++currency_symbol "" ++% TZS ++int_curr_symbol "" ++% . ++mon_decimal_point "" ++% , ++mon_thousands_sep "" ++mon_grouping 3 ++positive_sign "" ++% - ++negative_sign "" ++frac_digits 2 ++int_frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 0 ++n_cs_precedes 1 ++n_sep_by_space 0 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_PAPER ++copy "sw_KE" ++END LC_PAPER ++ ++LC_MEASUREMENT ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_MESSAGES ++copy "sw_KE" ++END LC_MESSAGES ++ ++LC_NAME ++copy "sw_KE" ++END LC_NAME ++ ++LC_ADDRESS ++% %a%N%f%N%d%N%b%N%h %s %e %r%N%T, %S %z%N%c%N ++postal_fmt "/ ++/ ++/ ++" ++% Tanzania ++country_name "" ++% TZ ++country_post "" ++% TZ ++country_ab2 "" ++% TZA ++country_ab3 "" ++country_num 834 ++% Kiswahili ++lang_name "" ++% sw ++lang_ab "" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% %c %a %l ++tel_int_fmt "" ++% %A %l ++tel_dom_fmt "" ++% 000 ++int_select "" ++% 255 ++int_prefix "" ++END LC_TELEPHONE --- eglibc-2.13.orig/debian/patches/localedata/tl_PH-yesexpr.diff +++ eglibc-2.13/debian/patches/localedata/tl_PH-yesexpr.diff @@ -0,0 +1,35 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix yesexpr/noexpr/yesstr/nostr +# DP: Related bugs: #295810 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: eric pareja +# DP: Upstream status: not submitted +# DP: Date: 2006-01-10 + +--- + localedata/locales/tl_PH | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +--- a/localedata/locales/tl_PH ++++ b/localedata/locales/tl_PH +@@ -140,7 +140,19 @@ + END LC_TIME + + LC_MESSAGES +-copy "en_US" ++ ++% "^[oOyY].*" for "Yes" ++yesexpr "" ++ ++% "^[hHnN].*" for "No" ++noexpr "" ++ ++% "Oo" for "Yes" ++yesstr "" ++ ++% "Hindi" for "No" ++nostr "" ++ + END LC_MESSAGES + + LC_PAPER --- eglibc-2.13.orig/debian/patches/localedata/cvs-rupee.diff +++ eglibc-2.13/debian/patches/localedata/cvs-rupee.diff @@ -0,0 +1,4897 @@ +2011-05-09 Ulrich Drepper + + [BZ #12711] + * locale/C-translit.h.in: Add entry for U20B9. + Patch by pravin.d.s@gmail.com. + +2011-05-09 Ulrich Drepper + + [BZ #12711] + * localedata/charmaps/UTF-8: Update from reason Unidata.txt file. + +diff --git a/locale/C-translit.h.in b/locale/C-translit.h.in +index ab0b130..4508b45 100644 +--- a/locale/C-translit.h.in ++++ b/locale/C-translit.h.in +@@ -105,6 +105,7 @@ + "\x2063" "" /* INVISIBLE SEPARATOR */ + "\x20a8" "Rs" /* RUPEE SIGN */ + "\x20ac" "EUR" /* EURO SIGN */ ++"\x20b9" "INR" /* INDIAN RUPEE SIGN */ + "\x2100" "a/c" /* ACCOUNT OF */ + "\x2101" "a/s" /* ADDRESSED TO THE SUBJECT */ + "\x2102" "C" /* DOUBLE-STRUCK CAPITAL C */ +diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8 +index 736a283..4cb9bcb 100644 +--- a/localedata/charmaps/UTF-8 ++++ b/localedata/charmaps/UTF-8 +@@ -1312,6 +1312,10 @@ CHARMAP + /xd4/xa1 CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK + /xd4/xa2 CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK + /xd4/xa3 CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK ++ /xd4/xa4 CYRILLIC CAPITAL LETTER PE WITH DESCENDER ++ /xd4/xa5 CYRILLIC SMALL LETTER PE WITH DESCENDER ++ /xd4/xa6 CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER ++ /xd4/xa7 CYRILLIC SMALL LETTER SHHA WITH DESCENDER + /xd4/xb1 ARMENIAN CAPITAL LETTER AYB + /xd4/xb2 ARMENIAN CAPITAL LETTER BEN + /xd4/xb3 ARMENIAN CAPITAL LETTER GIM +@@ -1513,6 +1517,7 @@ CHARMAP + /xd8/x9b ARABIC SEMICOLON + /xd8/x9e ARABIC TRIPLE DOT PUNCTUATION MARK + /xd8/x9f ARABIC QUESTION MARK ++ /xd8/xa0 ARABIC LETTER KASHMIRI YEH + /xd8/xa1 ARABIC LETTER HAMZA + /xd8/xa2 ARABIC LETTER ALEF WITH MADDA ABOVE + /xd8/xa3 ARABIC LETTER ALEF WITH HAMZA ABOVE +@@ -1575,6 +1580,7 @@ CHARMAP + /xd9/x9c ARABIC VOWEL SIGN DOT BELOW + /xd9/x9d ARABIC REVERSED DAMMA + /xd9/x9e ARABIC FATHA WITH TWO DOTS ++ /xd9/x9f ARABIC WAVY HAMZA BELOW + /xd9/xa0 ARABIC-INDIC DIGIT ZERO + /xd9/xa1 ARABIC-INDIC DIGIT ONE + /xd9/xa2 ARABIC-INDIC DIGIT TWO +@@ -1969,6 +1975,97 @@ CHARMAP + /xdf/xb8 NKO COMMA + /xdf/xb9 NKO EXCLAMATION MARK + /xdf/xba NKO LAJANYALAN ++ /xe0/xa0/x80 SAMARITAN LETTER ALAF ++ /xe0/xa0/x81 SAMARITAN LETTER BIT ++ /xe0/xa0/x82 SAMARITAN LETTER GAMAN ++ /xe0/xa0/x83 SAMARITAN LETTER DALAT ++ /xe0/xa0/x84 SAMARITAN LETTER IY ++ /xe0/xa0/x85 SAMARITAN LETTER BAA ++ /xe0/xa0/x86 SAMARITAN LETTER ZEN ++ /xe0/xa0/x87 SAMARITAN LETTER IT ++ /xe0/xa0/x88 SAMARITAN LETTER TIT ++ /xe0/xa0/x89 SAMARITAN LETTER YUT ++ /xe0/xa0/x8a SAMARITAN LETTER KAAF ++ /xe0/xa0/x8b SAMARITAN LETTER LABAT ++ /xe0/xa0/x8c SAMARITAN LETTER MIM ++ /xe0/xa0/x8d SAMARITAN LETTER NUN ++ /xe0/xa0/x8e SAMARITAN LETTER SINGAAT ++ /xe0/xa0/x8f SAMARITAN LETTER IN ++ /xe0/xa0/x90 SAMARITAN LETTER FI ++ /xe0/xa0/x91 SAMARITAN LETTER TSAADIY ++ /xe0/xa0/x92 SAMARITAN LETTER QUF ++ /xe0/xa0/x93 SAMARITAN LETTER RISH ++ /xe0/xa0/x94 SAMARITAN LETTER SHAN ++ /xe0/xa0/x95 SAMARITAN LETTER TAAF ++ /xe0/xa0/x96 SAMARITAN MARK IN ++ /xe0/xa0/x97 SAMARITAN MARK IN-ALAF ++ /xe0/xa0/x98 SAMARITAN MARK OCCLUSION ++ /xe0/xa0/x99 SAMARITAN MARK DAGESH ++ /xe0/xa0/x9a SAMARITAN MODIFIER LETTER EPENTHETIC YUT ++ /xe0/xa0/x9b SAMARITAN MARK EPENTHETIC YUT ++ /xe0/xa0/x9c SAMARITAN VOWEL SIGN LONG E ++ /xe0/xa0/x9d SAMARITAN VOWEL SIGN E ++ /xe0/xa0/x9e SAMARITAN VOWEL SIGN OVERLONG AA ++ /xe0/xa0/x9f SAMARITAN VOWEL SIGN LONG AA ++ /xe0/xa0/xa0 SAMARITAN VOWEL SIGN AA ++ /xe0/xa0/xa1 SAMARITAN VOWEL SIGN OVERLONG A ++ /xe0/xa0/xa2 SAMARITAN VOWEL SIGN LONG A ++ /xe0/xa0/xa3 SAMARITAN VOWEL SIGN A ++ /xe0/xa0/xa4 SAMARITAN MODIFIER LETTER SHORT A ++ /xe0/xa0/xa5 SAMARITAN VOWEL SIGN SHORT A ++ /xe0/xa0/xa6 SAMARITAN VOWEL SIGN LONG U ++ /xe0/xa0/xa7 SAMARITAN VOWEL SIGN U ++ /xe0/xa0/xa8 SAMARITAN MODIFIER LETTER I ++ /xe0/xa0/xa9 SAMARITAN VOWEL SIGN LONG I ++ /xe0/xa0/xaa SAMARITAN VOWEL SIGN I ++ /xe0/xa0/xab SAMARITAN VOWEL SIGN O ++ /xe0/xa0/xac SAMARITAN VOWEL SIGN SUKUN ++ /xe0/xa0/xad SAMARITAN MARK NEQUDAA ++ /xe0/xa0/xb0 SAMARITAN PUNCTUATION NEQUDAA ++ /xe0/xa0/xb1 SAMARITAN PUNCTUATION AFSAAQ ++ /xe0/xa0/xb2 SAMARITAN PUNCTUATION ANGED ++ /xe0/xa0/xb3 SAMARITAN PUNCTUATION BAU ++ /xe0/xa0/xb4 SAMARITAN PUNCTUATION ATMAAU ++ /xe0/xa0/xb5 SAMARITAN PUNCTUATION SHIYYAALAA ++ /xe0/xa0/xb6 SAMARITAN ABBREVIATION MARK ++ /xe0/xa0/xb7 SAMARITAN PUNCTUATION MELODIC QITSA ++ /xe0/xa0/xb8 SAMARITAN PUNCTUATION ZIQAA ++ /xe0/xa0/xb9 SAMARITAN PUNCTUATION QITSA ++ /xe0/xa0/xba SAMARITAN PUNCTUATION ZAEF ++ /xe0/xa0/xbb SAMARITAN PUNCTUATION TURU ++ /xe0/xa0/xbc SAMARITAN PUNCTUATION ARKAANU ++ /xe0/xa0/xbd SAMARITAN PUNCTUATION SOF MASHFAAT ++ /xe0/xa0/xbe SAMARITAN PUNCTUATION ANNAAU ++ /xe0/xa1/x80 MANDAIC LETTER HALQA ++ /xe0/xa1/x81 MANDAIC LETTER AB ++ /xe0/xa1/x82 MANDAIC LETTER AG ++ /xe0/xa1/x83 MANDAIC LETTER AD ++ /xe0/xa1/x84 MANDAIC LETTER AH ++ /xe0/xa1/x85 MANDAIC LETTER USHENNA ++ /xe0/xa1/x86 MANDAIC LETTER AZ ++ /xe0/xa1/x87 MANDAIC LETTER IT ++ /xe0/xa1/x88 MANDAIC LETTER ATT ++ /xe0/xa1/x89 MANDAIC LETTER AKSA ++ /xe0/xa1/x8a MANDAIC LETTER AK ++ /xe0/xa1/x8b MANDAIC LETTER AL ++ /xe0/xa1/x8c MANDAIC LETTER AM ++ /xe0/xa1/x8d MANDAIC LETTER AN ++ /xe0/xa1/x8e MANDAIC LETTER AS ++ /xe0/xa1/x8f MANDAIC LETTER IN ++ /xe0/xa1/x90 MANDAIC LETTER AP ++ /xe0/xa1/x91 MANDAIC LETTER ASZ ++ /xe0/xa1/x92 MANDAIC LETTER AQ ++ /xe0/xa1/x93 MANDAIC LETTER AR ++ /xe0/xa1/x94 MANDAIC LETTER ASH ++ /xe0/xa1/x95 MANDAIC LETTER AT ++ /xe0/xa1/x96 MANDAIC LETTER DUSHENNA ++ /xe0/xa1/x97 MANDAIC LETTER KAD ++ /xe0/xa1/x98 MANDAIC LETTER AIN ++ /xe0/xa1/x99 MANDAIC AFFRICATION MARK ++ /xe0/xa1/x9a MANDAIC VOCALIZATION MARK ++ /xe0/xa1/x9b MANDAIC GEMINATION MARK ++ /xe0/xa1/x9e MANDAIC PUNCTUATION ++ /xe0/xa4/x80 DEVANAGARI SIGN INVERTED CANDRABINDU + /xe0/xa4/x81 DEVANAGARI SIGN CANDRABINDU + /xe0/xa4/x82 DEVANAGARI SIGN ANUSVARA + /xe0/xa4/x83 DEVANAGARI SIGN VISARGA +@@ -2026,6 +2123,8 @@ CHARMAP + /xe0/xa4/xb7 DEVANAGARI LETTER SSA + /xe0/xa4/xb8 DEVANAGARI LETTER SA + /xe0/xa4/xb9 DEVANAGARI LETTER HA ++ /xe0/xa4/xba DEVANAGARI VOWEL SIGN OE ++ /xe0/xa4/xbb DEVANAGARI VOWEL SIGN OOE + /xe0/xa4/xbc DEVANAGARI SIGN NUKTA + /xe0/xa4/xbd DEVANAGARI SIGN AVAGRAHA + /xe0/xa4/xbe DEVANAGARI VOWEL SIGN AA +@@ -2044,11 +2143,16 @@ CHARMAP + /xe0/xa5/x8b DEVANAGARI VOWEL SIGN O + /xe0/xa5/x8c DEVANAGARI VOWEL SIGN AU + /xe0/xa5/x8d DEVANAGARI SIGN VIRAMA ++ /xe0/xa5/x8e DEVANAGARI VOWEL SIGN PRISHTHAMATRA E ++ /xe0/xa5/x8f DEVANAGARI VOWEL SIGN AW + /xe0/xa5/x90 DEVANAGARI OM + /xe0/xa5/x91 DEVANAGARI STRESS SIGN UDATTA + /xe0/xa5/x92 DEVANAGARI STRESS SIGN ANUDATTA + /xe0/xa5/x93 DEVANAGARI GRAVE ACCENT + /xe0/xa5/x94 DEVANAGARI ACUTE ACCENT ++ /xe0/xa5/x95 DEVANAGARI VOWEL SIGN CANDRA LONG E ++ /xe0/xa5/x96 DEVANAGARI VOWEL SIGN UE ++ /xe0/xa5/x97 DEVANAGARI VOWEL SIGN UUE + /xe0/xa5/x98 DEVANAGARI LETTER QA + /xe0/xa5/x99 DEVANAGARI LETTER KHHA + /xe0/xa5/x9a DEVANAGARI LETTER GHHA +@@ -2076,6 +2180,13 @@ CHARMAP + /xe0/xa5/xb0 DEVANAGARI ABBREVIATION SIGN + /xe0/xa5/xb1 DEVANAGARI SIGN HIGH SPACING DOT + /xe0/xa5/xb2 DEVANAGARI LETTER CANDRA A ++ /xe0/xa5/xb3 DEVANAGARI LETTER OE ++ /xe0/xa5/xb4 DEVANAGARI LETTER OOE ++ /xe0/xa5/xb5 DEVANAGARI LETTER AW ++ /xe0/xa5/xb6 DEVANAGARI LETTER UE ++ /xe0/xa5/xb7 DEVANAGARI LETTER UUE ++ /xe0/xa5/xb9 DEVANAGARI LETTER ZHA ++ /xe0/xa5/xba DEVANAGARI LETTER HEAVY YA + /xe0/xa5/xbb DEVANAGARI LETTER GGA + /xe0/xa5/xbc DEVANAGARI LETTER JJA + /xe0/xa5/xbd DEVANAGARI LETTER GLOTTAL STOP +@@ -2172,6 +2283,7 @@ CHARMAP + /xe0/xa7/xb8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR + /xe0/xa7/xb9 BENGALI CURRENCY DENOMINATOR SIXTEEN + /xe0/xa7/xba BENGALI ISSHAR ++ /xe0/xa7/xbb BENGALI GANDA MARK + /xe0/xa8/x81 GURMUKHI SIGN ADAK BINDI + /xe0/xa8/x82 GURMUKHI SIGN BINDI + /xe0/xa8/x83 GURMUKHI SIGN VISARGA +@@ -2418,6 +2530,12 @@ CHARMAP + /xe0/xad/xaf ORIYA DIGIT NINE + /xe0/xad/xb0 ORIYA ISSHAR + /xe0/xad/xb1 ORIYA LETTER WA ++ /xe0/xad/xb2 ORIYA FRACTION ONE QUARTER ++ /xe0/xad/xb3 ORIYA FRACTION ONE HALF ++ /xe0/xad/xb4 ORIYA FRACTION THREE QUARTERS ++ /xe0/xad/xb5 ORIYA FRACTION ONE SIXTEENTH ++ /xe0/xad/xb6 ORIYA FRACTION ONE EIGHTH ++ /xe0/xad/xb7 ORIYA FRACTION THREE SIXTEENTHS + /xe0/xae/x82 TAMIL SIGN ANUSVARA + /xe0/xae/x83 TAMIL SIGN VISARGA + /xe0/xae/x85 TAMIL LETTER A +@@ -2705,6 +2823,7 @@ CHARMAP + /xe0/xb4/xa6 MALAYALAM LETTER DA + /xe0/xb4/xa7 MALAYALAM LETTER DHA + /xe0/xb4/xa8 MALAYALAM LETTER NA ++ /xe0/xb4/xa9 MALAYALAM LETTER NNNA + /xe0/xb4/xaa MALAYALAM LETTER PA + /xe0/xb4/xab MALAYALAM LETTER PHA + /xe0/xb4/xac MALAYALAM LETTER BA +@@ -2721,6 +2840,7 @@ CHARMAP + /xe0/xb4/xb7 MALAYALAM LETTER SSA + /xe0/xb4/xb8 MALAYALAM LETTER SA + /xe0/xb4/xb9 MALAYALAM LETTER HA ++ /xe0/xb4/xba MALAYALAM LETTER TTTA + /xe0/xb4/xbd MALAYALAM SIGN AVAGRAHA + /xe0/xb4/xbe MALAYALAM VOWEL SIGN AA + /xe0/xb4/xbf MALAYALAM VOWEL SIGN I +@@ -2736,6 +2856,7 @@ CHARMAP + /xe0/xb5/x8b MALAYALAM VOWEL SIGN OO + /xe0/xb5/x8c MALAYALAM VOWEL SIGN AU + /xe0/xb5/x8d MALAYALAM SIGN VIRAMA ++ /xe0/xb5/x8e MALAYALAM LETTER DOT REPH + /xe0/xb5/x97 MALAYALAM AU LENGTH MARK + /xe0/xb5/xa0 MALAYALAM LETTER VOCALIC RR + /xe0/xb5/xa1 MALAYALAM LETTER VOCALIC LL +@@ -3131,6 +3252,10 @@ CHARMAP + /xe0/xbe/x89 TIBETAN SIGN MCHU CAN + /xe0/xbe/x8a TIBETAN SIGN GRU CAN RGYINGS + /xe0/xbe/x8b TIBETAN SIGN GRU MED RGYINGS ++ /xe0/xbe/x8c TIBETAN SIGN INVERTED MCHU CAN ++ /xe0/xbe/x8d TIBETAN SUBJOINED SIGN LCE TSA CAN ++ /xe0/xbe/x8e TIBETAN SUBJOINED SIGN MCHU CAN ++ /xe0/xbe/x8f TIBETAN SUBJOINED SIGN INVERTED MCHU CAN + /xe0/xbe/x90 TIBETAN SUBJOINED LETTER KA + /xe0/xbe/x91 TIBETAN SUBJOINED LETTER KHA + /xe0/xbe/x92 TIBETAN SUBJOINED LETTER GA +@@ -3197,6 +3322,12 @@ CHARMAP + /xe0/xbf/x92 TIBETAN MARK NYIS TSHEG + /xe0/xbf/x93 TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA + /xe0/xbf/x94 TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA ++ /xe0/xbf/x95 RIGHT-FACING SVASTI SIGN ++ /xe0/xbf/x96 LEFT-FACING SVASTI SIGN ++ /xe0/xbf/x97 RIGHT-FACING SVASTI SIGN WITH DOTS ++ /xe0/xbf/x98 LEFT-FACING SVASTI SIGN WITH DOTS ++ /xe0/xbf/x99 TIBETAN MARK LEADING MCHAN RTAGS ++ /xe0/xbf/x9a TIBETAN MARK TRAILING MCHAN RTAGS + /xe1/x80/x80 MYANMAR LETTER KA + /xe1/x80/x81 MYANMAR LETTER KHA + /xe1/x80/x82 MYANMAR LETTER GA +@@ -3351,6 +3482,10 @@ CHARMAP + /xe1/x82/x97 MYANMAR SHAN DIGIT SEVEN + /xe1/x82/x98 MYANMAR SHAN DIGIT EIGHT + /xe1/x82/x99 MYANMAR SHAN DIGIT NINE ++ /xe1/x82/x9a MYANMAR SIGN KHAMTI TONE-1 ++ /xe1/x82/x9b MYANMAR SIGN KHAMTI TONE-3 ++ /xe1/x82/x9c MYANMAR VOWEL SIGN AITON A ++ /xe1/x82/x9d MYANMAR VOWEL SIGN AITON AI + /xe1/x82/x9e MYANMAR SYMBOL SHAN ONE + /xe1/x82/x9f MYANMAR SYMBOL SHAN EXCLAMATION + /xe1/x82/xa0 GEORGIAN CAPITAL LETTER AN +@@ -3526,6 +3661,11 @@ CHARMAP + /xe1/x85/x97 HANGUL CHOSEONG KAPYEOUNPHIEUPH + /xe1/x85/x98 HANGUL CHOSEONG SSANGHIEUH + /xe1/x85/x99 HANGUL CHOSEONG YEORINHIEUH ++ /xe1/x85/x9a HANGUL CHOSEONG KIYEOK-TIKEUT ++ /xe1/x85/x9b HANGUL CHOSEONG NIEUN-SIOS ++ /xe1/x85/x9c HANGUL CHOSEONG NIEUN-CIEUC ++ /xe1/x85/x9d HANGUL CHOSEONG NIEUN-HIEUH ++ /xe1/x85/x9e HANGUL CHOSEONG TIKEUT-RIEUL + /xe1/x85/x9f HANGUL CHOSEONG FILLER + /xe1/x85/xa0 HANGUL JUNGSEONG FILLER + /xe1/x85/xa1 HANGUL JUNGSEONG A +@@ -3594,6 +3734,11 @@ CHARMAP + /xe1/x86/xa0 HANGUL JUNGSEONG ARAEA-U + /xe1/x86/xa1 HANGUL JUNGSEONG ARAEA-I + /xe1/x86/xa2 HANGUL JUNGSEONG SSANGARAEA ++ /xe1/x86/xa3 HANGUL JUNGSEONG A-EU ++ /xe1/x86/xa4 HANGUL JUNGSEONG YA-U ++ /xe1/x86/xa5 HANGUL JUNGSEONG YEO-YA ++ /xe1/x86/xa6 HANGUL JUNGSEONG O-YA ++ /xe1/x86/xa7 HANGUL JUNGSEONG O-YAE + /xe1/x86/xa8 HANGUL JONGSEONG KIYEOK + /xe1/x86/xa9 HANGUL JONGSEONG SSANGKIYEOK + /xe1/x86/xaa HANGUL JONGSEONG KIYEOK-SIOS +@@ -3676,6 +3821,12 @@ CHARMAP + /xe1/x87/xb7 HANGUL JONGSEONG HIEUH-MIEUM + /xe1/x87/xb8 HANGUL JONGSEONG HIEUH-PIEUP + /xe1/x87/xb9 HANGUL JONGSEONG YEORINHIEUH ++ /xe1/x87/xba HANGUL JONGSEONG KIYEOK-NIEUN ++ /xe1/x87/xbb HANGUL JONGSEONG KIYEOK-PIEUP ++ /xe1/x87/xbc HANGUL JONGSEONG KIYEOK-CHIEUCH ++ /xe1/x87/xbd HANGUL JONGSEONG KIYEOK-KHIEUKH ++ /xe1/x87/xbe HANGUL JONGSEONG KIYEOK-HIEUH ++ /xe1/x87/xbf HANGUL JONGSEONG SSANGNIEUN + /xe1/x88/x80 ETHIOPIC SYLLABLE HA + /xe1/x88/x81 ETHIOPIC SYLLABLE HU + /xe1/x88/x82 ETHIOPIC SYLLABLE HI +@@ -4002,6 +4153,8 @@ CHARMAP + /xe1/x8d/x98 ETHIOPIC SYLLABLE RYA + /xe1/x8d/x99 ETHIOPIC SYLLABLE MYA + /xe1/x8d/x9a ETHIOPIC SYLLABLE FYA ++ /xe1/x8d/x9d ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK ++ /xe1/x8d/x9e ETHIOPIC COMBINING VOWEL LENGTH MARK + /xe1/x8d/x9f ETHIOPIC COMBINING GEMINATION MARK + /xe1/x8d/xa0 ETHIOPIC SECTION MARK + /xe1/x8d/xa1 ETHIOPIC WORDSPACE +@@ -4143,6 +4296,7 @@ CHARMAP + /xe1/x8f/xb2 CHEROKEE LETTER YO + /xe1/x8f/xb3 CHEROKEE LETTER YU + /xe1/x8f/xb4 CHEROKEE LETTER YV ++ /xe1/x90/x80 CANADIAN SYLLABICS HYPHEN + /xe1/x90/x81 CANADIAN SYLLABICS E + /xe1/x90/x82 CANADIAN SYLLABICS AAI + /xe1/x90/x83 CANADIAN SYLLABICS I +@@ -4773,6 +4927,15 @@ CHARMAP + /xe1/x99/xb4 CANADIAN SYLLABICS NNGOO + /xe1/x99/xb5 CANADIAN SYLLABICS NNGA + /xe1/x99/xb6 CANADIAN SYLLABICS NNGAA ++ /xe1/x99/xb7 CANADIAN SYLLABICS WOODS-CREE THWEE ++ /xe1/x99/xb8 CANADIAN SYLLABICS WOODS-CREE THWI ++ /xe1/x99/xb9 CANADIAN SYLLABICS WOODS-CREE THWII ++ /xe1/x99/xba CANADIAN SYLLABICS WOODS-CREE THWO ++ /xe1/x99/xbb CANADIAN SYLLABICS WOODS-CREE THWOO ++ /xe1/x99/xbc CANADIAN SYLLABICS WOODS-CREE THWA ++ /xe1/x99/xbd CANADIAN SYLLABICS WOODS-CREE THWAA ++ /xe1/x99/xbe CANADIAN SYLLABICS WOODS-CREE FINAL TH ++ /xe1/x99/xbf CANADIAN SYLLABICS BLACKFOOT W + /xe1/x9a/x80 OGHAM SPACE MARK + /xe1/x9a/x81 OGHAM LETTER BEITH + /xe1/x9a/x82 OGHAM LETTER LUIS +@@ -5234,6 +5397,76 @@ CHARMAP + /xe1/xa2/xa8 MONGOLIAN LETTER MANCHU ALI GALI BHA + /xe1/xa2/xa9 MONGOLIAN LETTER ALI GALI DAGALGA + /xe1/xa2/xaa MONGOLIAN LETTER MANCHU ALI GALI LHA ++ /xe1/xa2/xb0 CANADIAN SYLLABICS OY ++ /xe1/xa2/xb1 CANADIAN SYLLABICS AY ++ /xe1/xa2/xb2 CANADIAN SYLLABICS AAY ++ /xe1/xa2/xb3 CANADIAN SYLLABICS WAY ++ /xe1/xa2/xb4 CANADIAN SYLLABICS POY ++ /xe1/xa2/xb5 CANADIAN SYLLABICS PAY ++ /xe1/xa2/xb6 CANADIAN SYLLABICS PWOY ++ /xe1/xa2/xb7 CANADIAN SYLLABICS TAY ++ /xe1/xa2/xb8 CANADIAN SYLLABICS KAY ++ /xe1/xa2/xb9 CANADIAN SYLLABICS KWAY ++ /xe1/xa2/xba CANADIAN SYLLABICS MAY ++ /xe1/xa2/xbb CANADIAN SYLLABICS NOY ++ /xe1/xa2/xbc CANADIAN SYLLABICS NAY ++ /xe1/xa2/xbd CANADIAN SYLLABICS LAY ++ /xe1/xa2/xbe CANADIAN SYLLABICS SOY ++ /xe1/xa2/xbf CANADIAN SYLLABICS SAY ++ /xe1/xa3/x80 CANADIAN SYLLABICS SHOY ++ /xe1/xa3/x81 CANADIAN SYLLABICS SHAY ++ /xe1/xa3/x82 CANADIAN SYLLABICS SHWOY ++ /xe1/xa3/x83 CANADIAN SYLLABICS YOY ++ /xe1/xa3/x84 CANADIAN SYLLABICS YAY ++ /xe1/xa3/x85 CANADIAN SYLLABICS RAY ++ /xe1/xa3/x86 CANADIAN SYLLABICS NWI ++ /xe1/xa3/x87 CANADIAN SYLLABICS OJIBWAY NWI ++ /xe1/xa3/x88 CANADIAN SYLLABICS NWII ++ /xe1/xa3/x89 CANADIAN SYLLABICS OJIBWAY NWII ++ /xe1/xa3/x8a CANADIAN SYLLABICS NWO ++ /xe1/xa3/x8b CANADIAN SYLLABICS OJIBWAY NWO ++ /xe1/xa3/x8c CANADIAN SYLLABICS NWOO ++ /xe1/xa3/x8d CANADIAN SYLLABICS OJIBWAY NWOO ++ /xe1/xa3/x8e CANADIAN SYLLABICS RWEE ++ /xe1/xa3/x8f CANADIAN SYLLABICS RWI ++ /xe1/xa3/x90 CANADIAN SYLLABICS RWII ++ /xe1/xa3/x91 CANADIAN SYLLABICS RWO ++ /xe1/xa3/x92 CANADIAN SYLLABICS RWOO ++ /xe1/xa3/x93 CANADIAN SYLLABICS RWA ++ /xe1/xa3/x94 CANADIAN SYLLABICS OJIBWAY P ++ /xe1/xa3/x95 CANADIAN SYLLABICS OJIBWAY T ++ /xe1/xa3/x96 CANADIAN SYLLABICS OJIBWAY K ++ /xe1/xa3/x97 CANADIAN SYLLABICS OJIBWAY C ++ /xe1/xa3/x98 CANADIAN SYLLABICS OJIBWAY M ++ /xe1/xa3/x99 CANADIAN SYLLABICS OJIBWAY N ++ /xe1/xa3/x9a CANADIAN SYLLABICS OJIBWAY S ++ /xe1/xa3/x9b CANADIAN SYLLABICS OJIBWAY SH ++ /xe1/xa3/x9c CANADIAN SYLLABICS EASTERN W ++ /xe1/xa3/x9d CANADIAN SYLLABICS WESTERN W ++ /xe1/xa3/x9e CANADIAN SYLLABICS FINAL SMALL RING ++ /xe1/xa3/x9f CANADIAN SYLLABICS FINAL RAISED DOT ++ /xe1/xa3/xa0 CANADIAN SYLLABICS R-CREE RWE ++ /xe1/xa3/xa1 CANADIAN SYLLABICS WEST-CREE LOO ++ /xe1/xa3/xa2 CANADIAN SYLLABICS WEST-CREE LAA ++ /xe1/xa3/xa3 CANADIAN SYLLABICS THWE ++ /xe1/xa3/xa4 CANADIAN SYLLABICS THWA ++ /xe1/xa3/xa5 CANADIAN SYLLABICS TTHWE ++ /xe1/xa3/xa6 CANADIAN SYLLABICS TTHOO ++ /xe1/xa3/xa7 CANADIAN SYLLABICS TTHAA ++ /xe1/xa3/xa8 CANADIAN SYLLABICS TLHWE ++ /xe1/xa3/xa9 CANADIAN SYLLABICS TLHOO ++ /xe1/xa3/xaa CANADIAN SYLLABICS SAYISI SHWE ++ /xe1/xa3/xab CANADIAN SYLLABICS SAYISI SHOO ++ /xe1/xa3/xac CANADIAN SYLLABICS SAYISI HOO ++ /xe1/xa3/xad CANADIAN SYLLABICS CARRIER GWU ++ /xe1/xa3/xae CANADIAN SYLLABICS CARRIER DENE GEE ++ /xe1/xa3/xaf CANADIAN SYLLABICS CARRIER GAA ++ /xe1/xa3/xb0 CANADIAN SYLLABICS CARRIER GWA ++ /xe1/xa3/xb1 CANADIAN SYLLABICS SAYISI JUU ++ /xe1/xa3/xb2 CANADIAN SYLLABICS CARRIER JWA ++ /xe1/xa3/xb3 CANADIAN SYLLABICS BEAVER DENE L ++ /xe1/xa3/xb4 CANADIAN SYLLABICS BEAVER DENE R ++ /xe1/xa3/xb5 CANADIAN SYLLABICS CARRIER DENTAL S + /xe1/xa4/x80 LIMBU VOWEL-CARRIER LETTER + /xe1/xa4/x81 LIMBU LETTER KA + /xe1/xa4/x82 LIMBU LETTER KHA +@@ -5377,6 +5610,8 @@ CHARMAP + /xe1/xa6/xa7 NEW TAI LUE LETTER HIGH XVA + /xe1/xa6/xa8 NEW TAI LUE LETTER LOW KVA + /xe1/xa6/xa9 NEW TAI LUE LETTER LOW XVA ++ /xe1/xa6/xaa NEW TAI LUE LETTER HIGH SUA ++ /xe1/xa6/xab NEW TAI LUE LETTER LOW SUA + /xe1/xa6/xb0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER + /xe1/xa6/xb1 NEW TAI LUE VOWEL SIGN AA + /xe1/xa6/xb2 NEW TAI LUE VOWEL SIGN II +@@ -5413,6 +5648,7 @@ CHARMAP + /xe1/xa7/x97 NEW TAI LUE DIGIT SEVEN + /xe1/xa7/x98 NEW TAI LUE DIGIT EIGHT + /xe1/xa7/x99 NEW TAI LUE DIGIT NINE ++ /xe1/xa7/x9a NEW TAI LUE THAM DIGIT ONE + /xe1/xa7/x9e NEW TAI LUE SIGN LAE + /xe1/xa7/x9f NEW TAI LUE SIGN LAEV + /xe1/xa7/xa0 KHMER SYMBOL PATHAMASAT +@@ -5477,6 +5713,133 @@ CHARMAP + /xe1/xa8/x9b BUGINESE VOWEL SIGN AE + /xe1/xa8/x9e BUGINESE PALLAWA + /xe1/xa8/x9f BUGINESE END OF SECTION ++ /xe1/xa8/xa0 TAI THAM LETTER HIGH KA ++ /xe1/xa8/xa1 TAI THAM LETTER HIGH KHA ++ /xe1/xa8/xa2 TAI THAM LETTER HIGH KXA ++ /xe1/xa8/xa3 TAI THAM LETTER LOW KA ++ /xe1/xa8/xa4 TAI THAM LETTER LOW KXA ++ /xe1/xa8/xa5 TAI THAM LETTER LOW KHA ++ /xe1/xa8/xa6 TAI THAM LETTER NGA ++ /xe1/xa8/xa7 TAI THAM LETTER HIGH CA ++ /xe1/xa8/xa8 TAI THAM LETTER HIGH CHA ++ /xe1/xa8/xa9 TAI THAM LETTER LOW CA ++ /xe1/xa8/xaa TAI THAM LETTER LOW SA ++ /xe1/xa8/xab TAI THAM LETTER LOW CHA ++ /xe1/xa8/xac TAI THAM LETTER NYA ++ /xe1/xa8/xad TAI THAM LETTER RATA ++ /xe1/xa8/xae TAI THAM LETTER HIGH RATHA ++ /xe1/xa8/xaf TAI THAM LETTER DA ++ /xe1/xa8/xb0 TAI THAM LETTER LOW RATHA ++ /xe1/xa8/xb1 TAI THAM LETTER RANA ++ /xe1/xa8/xb2 TAI THAM LETTER HIGH TA ++ /xe1/xa8/xb3 TAI THAM LETTER HIGH THA ++ /xe1/xa8/xb4 TAI THAM LETTER LOW TA ++ /xe1/xa8/xb5 TAI THAM LETTER LOW THA ++ /xe1/xa8/xb6 TAI THAM LETTER NA ++ /xe1/xa8/xb7 TAI THAM LETTER BA ++ /xe1/xa8/xb8 TAI THAM LETTER HIGH PA ++ /xe1/xa8/xb9 TAI THAM LETTER HIGH PHA ++ /xe1/xa8/xba TAI THAM LETTER HIGH FA ++ /xe1/xa8/xbb TAI THAM LETTER LOW PA ++ /xe1/xa8/xbc TAI THAM LETTER LOW FA ++ /xe1/xa8/xbd TAI THAM LETTER LOW PHA ++ /xe1/xa8/xbe TAI THAM LETTER MA ++ /xe1/xa8/xbf TAI THAM LETTER LOW YA ++ /xe1/xa9/x80 TAI THAM LETTER HIGH YA ++ /xe1/xa9/x81 TAI THAM LETTER RA ++ /xe1/xa9/x82 TAI THAM LETTER RUE ++ /xe1/xa9/x83 TAI THAM LETTER LA ++ /xe1/xa9/x84 TAI THAM LETTER LUE ++ /xe1/xa9/x85 TAI THAM LETTER WA ++ /xe1/xa9/x86 TAI THAM LETTER HIGH SHA ++ /xe1/xa9/x87 TAI THAM LETTER HIGH SSA ++ /xe1/xa9/x88 TAI THAM LETTER HIGH SA ++ /xe1/xa9/x89 TAI THAM LETTER HIGH HA ++ /xe1/xa9/x8a TAI THAM LETTER LLA ++ /xe1/xa9/x8b TAI THAM LETTER A ++ /xe1/xa9/x8c TAI THAM LETTER LOW HA ++ /xe1/xa9/x8d TAI THAM LETTER I ++ /xe1/xa9/x8e TAI THAM LETTER II ++ /xe1/xa9/x8f TAI THAM LETTER U ++ /xe1/xa9/x90 TAI THAM LETTER UU ++ /xe1/xa9/x91 TAI THAM LETTER EE ++ /xe1/xa9/x92 TAI THAM LETTER OO ++ /xe1/xa9/x93 TAI THAM LETTER LAE ++ /xe1/xa9/x94 TAI THAM LETTER GREAT SA ++ /xe1/xa9/x95 TAI THAM CONSONANT SIGN MEDIAL RA ++ /xe1/xa9/x96 TAI THAM CONSONANT SIGN MEDIAL LA ++ /xe1/xa9/x97 TAI THAM CONSONANT SIGN LA TANG LAI ++ /xe1/xa9/x98 TAI THAM SIGN MAI KANG LAI ++ /xe1/xa9/x99 TAI THAM CONSONANT SIGN FINAL NGA ++ /xe1/xa9/x9a TAI THAM CONSONANT SIGN LOW PA ++ /xe1/xa9/x9b TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA ++ /xe1/xa9/x9c TAI THAM CONSONANT SIGN MA ++ /xe1/xa9/x9d TAI THAM CONSONANT SIGN BA ++ /xe1/xa9/x9e TAI THAM CONSONANT SIGN SA ++ /xe1/xa9/xa0 TAI THAM SIGN SAKOT ++ /xe1/xa9/xa1 TAI THAM VOWEL SIGN A ++ /xe1/xa9/xa2 TAI THAM VOWEL SIGN MAI SAT ++ /xe1/xa9/xa3 TAI THAM VOWEL SIGN AA ++ /xe1/xa9/xa4 TAI THAM VOWEL SIGN TALL AA ++ /xe1/xa9/xa5 TAI THAM VOWEL SIGN I ++ /xe1/xa9/xa6 TAI THAM VOWEL SIGN II ++ /xe1/xa9/xa7 TAI THAM VOWEL SIGN UE ++ /xe1/xa9/xa8 TAI THAM VOWEL SIGN UUE ++ /xe1/xa9/xa9 TAI THAM VOWEL SIGN U ++ /xe1/xa9/xaa TAI THAM VOWEL SIGN UU ++ /xe1/xa9/xab TAI THAM VOWEL SIGN O ++ /xe1/xa9/xac TAI THAM VOWEL SIGN OA BELOW ++ /xe1/xa9/xad TAI THAM VOWEL SIGN OY ++ /xe1/xa9/xae TAI THAM VOWEL SIGN E ++ /xe1/xa9/xaf TAI THAM VOWEL SIGN AE ++ /xe1/xa9/xb0 TAI THAM VOWEL SIGN OO ++ /xe1/xa9/xb1 TAI THAM VOWEL SIGN AI ++ /xe1/xa9/xb2 TAI THAM VOWEL SIGN THAM AI ++ /xe1/xa9/xb3 TAI THAM VOWEL SIGN OA ABOVE ++ /xe1/xa9/xb4 TAI THAM SIGN MAI KANG ++ /xe1/xa9/xb5 TAI THAM SIGN TONE-1 ++ /xe1/xa9/xb6 TAI THAM SIGN TONE-2 ++ /xe1/xa9/xb7 TAI THAM SIGN KHUEN TONE-3 ++ /xe1/xa9/xb8 TAI THAM SIGN KHUEN TONE-4 ++ /xe1/xa9/xb9 TAI THAM SIGN KHUEN TONE-5 ++ /xe1/xa9/xba TAI THAM SIGN RA HAAM ++ /xe1/xa9/xbb TAI THAM SIGN MAI SAM ++ /xe1/xa9/xbc TAI THAM SIGN KHUEN-LUE KARAN ++ /xe1/xa9/xbf TAI THAM COMBINING CRYPTOGRAMMIC DOT ++ /xe1/xaa/x80 TAI THAM HORA DIGIT ZERO ++ /xe1/xaa/x81 TAI THAM HORA DIGIT ONE ++ /xe1/xaa/x82 TAI THAM HORA DIGIT TWO ++ /xe1/xaa/x83 TAI THAM HORA DIGIT THREE ++ /xe1/xaa/x84 TAI THAM HORA DIGIT FOUR ++ /xe1/xaa/x85 TAI THAM HORA DIGIT FIVE ++ /xe1/xaa/x86 TAI THAM HORA DIGIT SIX ++ /xe1/xaa/x87 TAI THAM HORA DIGIT SEVEN ++ /xe1/xaa/x88 TAI THAM HORA DIGIT EIGHT ++ /xe1/xaa/x89 TAI THAM HORA DIGIT NINE ++ /xe1/xaa/x90 TAI THAM THAM DIGIT ZERO ++ /xe1/xaa/x91 TAI THAM THAM DIGIT ONE ++ /xe1/xaa/x92 TAI THAM THAM DIGIT TWO ++ /xe1/xaa/x93 TAI THAM THAM DIGIT THREE ++ /xe1/xaa/x94 TAI THAM THAM DIGIT FOUR ++ /xe1/xaa/x95 TAI THAM THAM DIGIT FIVE ++ /xe1/xaa/x96 TAI THAM THAM DIGIT SIX ++ /xe1/xaa/x97 TAI THAM THAM DIGIT SEVEN ++ /xe1/xaa/x98 TAI THAM THAM DIGIT EIGHT ++ /xe1/xaa/x99 TAI THAM THAM DIGIT NINE ++ /xe1/xaa/xa0 TAI THAM SIGN WIANG ++ /xe1/xaa/xa1 TAI THAM SIGN WIANGWAAK ++ /xe1/xaa/xa2 TAI THAM SIGN SAWAN ++ /xe1/xaa/xa3 TAI THAM SIGN KEOW ++ /xe1/xaa/xa4 TAI THAM SIGN HOY ++ /xe1/xaa/xa5 TAI THAM SIGN DOKMAI ++ /xe1/xaa/xa6 TAI THAM SIGN REVERSED ROTATED RANA ++ /xe1/xaa/xa7 TAI THAM SIGN MAI YAMOK ++ /xe1/xaa/xa8 TAI THAM SIGN KAAN ++ /xe1/xaa/xa9 TAI THAM SIGN KAANKUU ++ /xe1/xaa/xaa TAI THAM SIGN SATKAAN ++ /xe1/xaa/xab TAI THAM SIGN SATKAANKUU ++ /xe1/xaa/xac TAI THAM SIGN HANG ++ /xe1/xaa/xad TAI THAM SIGN CAANG + /xe1/xac/x80 BALINESE SIGN ULU RICEM + /xe1/xac/x81 BALINESE SIGN ULU CANDRA + /xe1/xac/x82 BALINESE SIGN CECEK +@@ -5653,6 +6016,62 @@ CHARMAP + /xe1/xae/xb7 SUNDANESE DIGIT SEVEN + /xe1/xae/xb8 SUNDANESE DIGIT EIGHT + /xe1/xae/xb9 SUNDANESE DIGIT NINE ++ /xe1/xaf/x80 BATAK LETTER A ++ /xe1/xaf/x81 BATAK LETTER SIMALUNGUN A ++ /xe1/xaf/x82 BATAK LETTER HA ++ /xe1/xaf/x83 BATAK LETTER SIMALUNGUN HA ++ /xe1/xaf/x84 BATAK LETTER MANDAILING HA ++ /xe1/xaf/x85 BATAK LETTER BA ++ /xe1/xaf/x86 BATAK LETTER KARO BA ++ /xe1/xaf/x87 BATAK LETTER PA ++ /xe1/xaf/x88 BATAK LETTER SIMALUNGUN PA ++ /xe1/xaf/x89 BATAK LETTER NA ++ /xe1/xaf/x8a BATAK LETTER MANDAILING NA ++ /xe1/xaf/x8b BATAK LETTER WA ++ /xe1/xaf/x8c BATAK LETTER SIMALUNGUN WA ++ /xe1/xaf/x8d BATAK LETTER PAKPAK WA ++ /xe1/xaf/x8e BATAK LETTER GA ++ /xe1/xaf/x8f BATAK LETTER SIMALUNGUN GA ++ /xe1/xaf/x90 BATAK LETTER JA ++ /xe1/xaf/x91 BATAK LETTER DA ++ /xe1/xaf/x92 BATAK LETTER RA ++ /xe1/xaf/x93 BATAK LETTER SIMALUNGUN RA ++ /xe1/xaf/x94 BATAK LETTER MA ++ /xe1/xaf/x95 BATAK LETTER SIMALUNGUN MA ++ /xe1/xaf/x96 BATAK LETTER SOUTHERN TA ++ /xe1/xaf/x97 BATAK LETTER NORTHERN TA ++ /xe1/xaf/x98 BATAK LETTER SA ++ /xe1/xaf/x99 BATAK LETTER SIMALUNGUN SA ++ /xe1/xaf/x9a BATAK LETTER MANDAILING SA ++ /xe1/xaf/x9b BATAK LETTER YA ++ /xe1/xaf/x9c BATAK LETTER SIMALUNGUN YA ++ /xe1/xaf/x9d BATAK LETTER NGA ++ /xe1/xaf/x9e BATAK LETTER LA ++ /xe1/xaf/x9f BATAK LETTER SIMALUNGUN LA ++ /xe1/xaf/xa0 BATAK LETTER NYA ++ /xe1/xaf/xa1 BATAK LETTER CA ++ /xe1/xaf/xa2 BATAK LETTER NDA ++ /xe1/xaf/xa3 BATAK LETTER MBA ++ /xe1/xaf/xa4 BATAK LETTER I ++ /xe1/xaf/xa5 BATAK LETTER U ++ /xe1/xaf/xa6 BATAK SIGN TOMPI ++ /xe1/xaf/xa7 BATAK VOWEL SIGN E ++ /xe1/xaf/xa8 BATAK VOWEL SIGN PAKPAK E ++ /xe1/xaf/xa9 BATAK VOWEL SIGN EE ++ /xe1/xaf/xaa BATAK VOWEL SIGN I ++ /xe1/xaf/xab BATAK VOWEL SIGN KARO I ++ /xe1/xaf/xac BATAK VOWEL SIGN O ++ /xe1/xaf/xad BATAK VOWEL SIGN KARO O ++ /xe1/xaf/xae BATAK VOWEL SIGN U ++ /xe1/xaf/xaf BATAK VOWEL SIGN U FOR SIMALUNGUN SA ++ /xe1/xaf/xb0 BATAK CONSONANT SIGN NG ++ /xe1/xaf/xb1 BATAK CONSONANT SIGN H ++ /xe1/xaf/xb2 BATAK PANGOLAT ++ /xe1/xaf/xb3 BATAK PANONGONAN ++ /xe1/xaf/xbc BATAK SYMBOL BINDU NA METEK ++ /xe1/xaf/xbd BATAK SYMBOL BINDU PINARBORAS ++ /xe1/xaf/xbe BATAK SYMBOL BINDU JUDUL ++ /xe1/xaf/xbf BATAK SYMBOL BINDU PANGOLAT + /xe1/xb0/x80 LEPCHA LETTER KA + /xe1/xb0/x81 LEPCHA LETTER KLA + /xe1/xb0/x82 LEPCHA LETTER KHA +@@ -5775,6 +6194,41 @@ CHARMAP + /xe1/xb1/xbd OL CHIKI AHAD + /xe1/xb1/xbe OL CHIKI PUNCTUATION MUCAAD + /xe1/xb1/xbf OL CHIKI PUNCTUATION DOUBLE MUCAAD ++ /xe1/xb3/x90 VEDIC TONE KARSHANA ++ /xe1/xb3/x91 VEDIC TONE SHARA ++ /xe1/xb3/x92 VEDIC TONE PRENKHA ++ /xe1/xb3/x93 VEDIC SIGN NIHSHVASA ++ /xe1/xb3/x94 VEDIC SIGN YAJURVEDIC MIDLINE SVARITA ++ /xe1/xb3/x95 VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA ++ /xe1/xb3/x96 VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA ++ /xe1/xb3/x97 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA ++ /xe1/xb3/x98 VEDIC TONE CANDRA BELOW ++ /xe1/xb3/x99 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER ++ /xe1/xb3/x9a VEDIC TONE DOUBLE SVARITA ++ /xe1/xb3/x9b VEDIC TONE TRIPLE SVARITA ++ /xe1/xb3/x9c VEDIC TONE KATHAKA ANUDATTA ++ /xe1/xb3/x9d VEDIC TONE DOT BELOW ++ /xe1/xb3/x9e VEDIC TONE TWO DOTS BELOW ++ /xe1/xb3/x9f VEDIC TONE THREE DOTS BELOW ++ /xe1/xb3/xa0 VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA ++ /xe1/xb3/xa1 VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA ++ /xe1/xb3/xa2 VEDIC SIGN VISARGA SVARITA ++ /xe1/xb3/xa3 VEDIC SIGN VISARGA UDATTA ++ /xe1/xb3/xa4 VEDIC SIGN REVERSED VISARGA UDATTA ++ /xe1/xb3/xa5 VEDIC SIGN VISARGA ANUDATTA ++ /xe1/xb3/xa6 VEDIC SIGN REVERSED VISARGA ANUDATTA ++ /xe1/xb3/xa7 VEDIC SIGN VISARGA UDATTA WITH TAIL ++ /xe1/xb3/xa8 VEDIC SIGN VISARGA ANUDATTA WITH TAIL ++ /xe1/xb3/xa9 VEDIC SIGN ANUSVARA ANTARGOMUKHA ++ /xe1/xb3/xaa VEDIC SIGN ANUSVARA BAHIRGOMUKHA ++ /xe1/xb3/xab VEDIC SIGN ANUSVARA VAMAGOMUKHA ++ /xe1/xb3/xac VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL ++ /xe1/xb3/xad VEDIC SIGN TIRYAK ++ /xe1/xb3/xae VEDIC SIGN HEXIFORM LONG ANUSVARA ++ /xe1/xb3/xaf VEDIC SIGN LONG ANUSVARA ++ /xe1/xb3/xb0 VEDIC SIGN RTHANG LONG ANUSVARA ++ /xe1/xb3/xb1 VEDIC SIGN ANUSVARA UBHAYATO MUKHA ++ /xe1/xb3/xb2 VEDIC SIGN ARDHAVISARGA + /xe1/xb4/x80 LATIN LETTER SMALL CAPITAL A + /xe1/xb4/x81 LATIN LETTER SMALL CAPITAL AE + /xe1/xb4/x82 LATIN SMALL LETTER TURNED AE +@@ -6006,6 +6460,8 @@ CHARMAP + /xe1/xb7/xa4 COMBINING LATIN SMALL LETTER S + /xe1/xb7/xa5 COMBINING LATIN SMALL LETTER LONG S + /xe1/xb7/xa6 COMBINING LATIN SMALL LETTER Z ++ /xe1/xb7/xbc COMBINING DOUBLE INVERTED BREVE BELOW ++ /xe1/xb7/xbd COMBINING ALMOST EQUAL TO BELOW + /xe1/xb7/xbe COMBINING LEFT ARROWHEAD ABOVE + /xe1/xb7/xbf COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + /xe1/xb8/x80 LATIN CAPITAL LETTER A WITH RING BELOW +@@ -6638,6 +7094,14 @@ CHARMAP + /xe2/x82/x92 LATIN SUBSCRIPT SMALL LETTER O + /xe2/x82/x93 LATIN SUBSCRIPT SMALL LETTER X + /xe2/x82/x94 LATIN SUBSCRIPT SMALL LETTER SCHWA ++ /xe2/x82/x95 LATIN SUBSCRIPT SMALL LETTER H ++ /xe2/x82/x96 LATIN SUBSCRIPT SMALL LETTER K ++ /xe2/x82/x97 LATIN SUBSCRIPT SMALL LETTER L ++ /xe2/x82/x98 LATIN SUBSCRIPT SMALL LETTER M ++ /xe2/x82/x99 LATIN SUBSCRIPT SMALL LETTER N ++ /xe2/x82/x9a LATIN SUBSCRIPT SMALL LETTER P ++ /xe2/x82/x9b LATIN SUBSCRIPT SMALL LETTER S ++ /xe2/x82/x9c LATIN SUBSCRIPT SMALL LETTER T + /xe2/x82/xa0 EURO-CURRENCY SIGN + /xe2/x82/xa1 COLON SIGN + /xe2/x82/xa2 CRUZEIRO SIGN +@@ -6660,6 +7124,10 @@ CHARMAP + /xe2/x82/xb3 AUSTRAL SIGN + /xe2/x82/xb4 HRYVNIA SIGN + /xe2/x82/xb5 CEDI SIGN ++ /xe2/x82/xb6 LIVRE TOURNOIS SIGN ++ /xe2/x82/xb7 SPESMILO SIGN ++ /xe2/x82/xb8 TENGE SIGN ++ /xe2/x82/xb9 INDIAN RUPEE SIGN + /xe2/x83/x90 COMBINING LEFT HARPOON ABOVE + /xe2/x83/x91 COMBINING RIGHT HARPOON ABOVE + /xe2/x83/x92 COMBINING LONG VERTICAL LINE OVERLAY +@@ -6773,6 +7241,9 @@ CHARMAP + /xe2/x85/x8d AKTIESELSKAB + /xe2/x85/x8e TURNED SMALL F + /xe2/x85/x8f SYMBOL FOR SAMARITAN SOURCE ++ /xe2/x85/x90 VULGAR FRACTION ONE SEVENTH ++ /xe2/x85/x91 VULGAR FRACTION ONE NINTH ++ /xe2/x85/x92 VULGAR FRACTION ONE TENTH + /xe2/x85/x93 VULGAR FRACTION ONE THIRD + /xe2/x85/x94 VULGAR FRACTION TWO THIRDS + /xe2/x85/x95 VULGAR FRACTION ONE FIFTH +@@ -6827,6 +7298,7 @@ CHARMAP + /xe2/x86/x86 ROMAN NUMERAL FIFTY EARLY FORM + /xe2/x86/x87 ROMAN NUMERAL FIFTY THOUSAND + /xe2/x86/x88 ROMAN NUMERAL ONE HUNDRED THOUSAND ++ /xe2/x86/x89 VULGAR FRACTION ZERO THIRDS + /xe2/x86/x90 LEFTWARDS ARROW + /xe2/x86/x91 UPWARDS ARROW + /xe2/x86/x92 RIGHTWARDS ARROW +@@ -7427,6 +7899,18 @@ CHARMAP + /xe2/x8f/xa5 FLATNESS + /xe2/x8f/xa6 AC CURRENT + /xe2/x8f/xa7 ELECTRICAL INTERSECTION ++ /xe2/x8f/xa8 DECIMAL EXPONENT SYMBOL ++ /xe2/x8f/xa9 BLACK RIGHT-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xaa BLACK LEFT-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xab BLACK UP-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xac BLACK DOWN-POINTING DOUBLE TRIANGLE ++ /xe2/x8f/xad BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ++ /xe2/x8f/xae BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ++ /xe2/x8f/xaf BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR ++ /xe2/x8f/xb0 ALARM CLOCK ++ /xe2/x8f/xb1 STOPWATCH ++ /xe2/x8f/xb2 TIMER CLOCK ++ /xe2/x8f/xb3 HOURGLASS WITH FLOWING SAND + /xe2/x90/x80 SYMBOL FOR NULL + /xe2/x90/x81 SYMBOL FOR START OF HEADING + /xe2/x90/x82 SYMBOL FOR START OF TEXT +@@ -8051,6 +8535,8 @@ CHARMAP + /xe2/x9a/x9b ATOM SYMBOL + /xe2/x9a/x9c FLEUR-DE-LIS + /xe2/x9a/x9d OUTLINED WHITE STAR ++ /xe2/x9a/x9e THREE LINES CONVERGING RIGHT ++ /xe2/x9a/x9f THREE LINES CONVERGING LEFT + /xe2/x9a/xa0 WARNING SIGN + /xe2/x9a/xa1 HIGH VOLTAGE SIGN + /xe2/x9a/xa2 DOUBLED FEMALE SIGN +@@ -8080,18 +8566,84 @@ CHARMAP + /xe2/x9a/xba SEMISEXTILE + /xe2/x9a/xbb QUINCUNX + /xe2/x9a/xbc SESQUIQUADRATE ++ /xe2/x9a/xbd SOCCER BALL ++ /xe2/x9a/xbe BASEBALL ++ /xe2/x9a/xbf SQUARED KEY + /xe2/x9b/x80 WHITE DRAUGHTS MAN + /xe2/x9b/x81 WHITE DRAUGHTS KING + /xe2/x9b/x82 BLACK DRAUGHTS MAN + /xe2/x9b/x83 BLACK DRAUGHTS KING ++ /xe2/x9b/x84 SNOWMAN WITHOUT SNOW ++ /xe2/x9b/x85 SUN BEHIND CLOUD ++ /xe2/x9b/x86 RAIN ++ /xe2/x9b/x87 BLACK SNOWMAN ++ /xe2/x9b/x88 THUNDER CLOUD AND RAIN ++ /xe2/x9b/x89 TURNED WHITE SHOGI PIECE ++ /xe2/x9b/x8a TURNED BLACK SHOGI PIECE ++ /xe2/x9b/x8b WHITE DIAMOND IN SQUARE ++ /xe2/x9b/x8c CROSSING LANES ++ /xe2/x9b/x8d DISABLED CAR ++ /xe2/x9b/x8e OPHIUCHUS ++ /xe2/x9b/x8f PICK ++ /xe2/x9b/x90 CAR SLIDING ++ /xe2/x9b/x91 HELMET WITH WHITE CROSS ++ /xe2/x9b/x92 CIRCLED CROSSING LANES ++ /xe2/x9b/x93 CHAINS ++ /xe2/x9b/x94 NO ENTRY ++ /xe2/x9b/x95 ALTERNATE ONE-WAY LEFT WAY TRAFFIC ++ /xe2/x9b/x96 BLACK TWO-WAY LEFT WAY TRAFFIC ++ /xe2/x9b/x97 WHITE TWO-WAY LEFT WAY TRAFFIC ++ /xe2/x9b/x98 BLACK LEFT LANE MERGE ++ /xe2/x9b/x99 WHITE LEFT LANE MERGE ++ /xe2/x9b/x9a DRIVE SLOW SIGN ++ /xe2/x9b/x9b HEAVY WHITE DOWN-POINTING TRIANGLE ++ /xe2/x9b/x9c LEFT CLOSED ENTRY ++ /xe2/x9b/x9d SQUARED SALTIRE ++ /xe2/x9b/x9e FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE ++ /xe2/x9b/x9f BLACK TRUCK ++ /xe2/x9b/xa0 RESTRICTED LEFT ENTRY-1 ++ /xe2/x9b/xa1 RESTRICTED LEFT ENTRY-2 ++ /xe2/x9b/xa2 ASTRONOMICAL SYMBOL FOR URANUS ++ /xe2/x9b/xa3 HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE ++ /xe2/x9b/xa4 PENTAGRAM ++ /xe2/x9b/xa5 RIGHT-HANDED INTERLACED PENTAGRAM ++ /xe2/x9b/xa6 LEFT-HANDED INTERLACED PENTAGRAM ++ /xe2/x9b/xa7 INVERTED PENTAGRAM ++ /xe2/x9b/xa8 BLACK CROSS ON SHIELD ++ /xe2/x9b/xa9 SHINTO SHRINE ++ /xe2/x9b/xaa CHURCH ++ /xe2/x9b/xab CASTLE ++ /xe2/x9b/xac HISTORIC SITE ++ /xe2/x9b/xad GEAR WITHOUT HUB ++ /xe2/x9b/xae GEAR WITH HANDLES ++ /xe2/x9b/xaf MAP SYMBOL FOR LIGHTHOUSE ++ /xe2/x9b/xb0 MOUNTAIN ++ /xe2/x9b/xb1 UMBRELLA ON GROUND ++ /xe2/x9b/xb2 FOUNTAIN ++ /xe2/x9b/xb3 FLAG IN HOLE ++ /xe2/x9b/xb4 FERRY ++ /xe2/x9b/xb5 SAILBOAT ++ /xe2/x9b/xb6 SQUARE FOUR CORNERS ++ /xe2/x9b/xb7 SKIER ++ /xe2/x9b/xb8 ICE SKATE ++ /xe2/x9b/xb9 PERSON WITH BALL ++ /xe2/x9b/xba TENT ++ /xe2/x9b/xbb JAPANESE BANK SYMBOL ++ /xe2/x9b/xbc HEADSTONE GRAVEYARD SYMBOL ++ /xe2/x9b/xbd FUEL PUMP ++ /xe2/x9b/xbe CUP ON BLACK SQUARE ++ /xe2/x9b/xbf WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE + /xe2/x9c/x81 UPPER BLADE SCISSORS + /xe2/x9c/x82 BLACK SCISSORS + /xe2/x9c/x83 LOWER BLADE SCISSORS + /xe2/x9c/x84 WHITE SCISSORS ++ /xe2/x9c/x85 WHITE HEAVY CHECK MARK + /xe2/x9c/x86 TELEPHONE LOCATION SIGN + /xe2/x9c/x87 TAPE DRIVE + /xe2/x9c/x88 AIRPLANE + /xe2/x9c/x89 ENVELOPE ++ /xe2/x9c/x8a RAISED FIST ++ /xe2/x9c/x8b RAISED HAND + /xe2/x9c/x8c VICTORY HAND + /xe2/x9c/x8d WRITING HAND + /xe2/x9c/x8e LOWER RIGHT PENCIL +@@ -8120,6 +8672,7 @@ CHARMAP + /xe2/x9c/xa5 FOUR CLUB-SPOKED ASTERISK + /xe2/x9c/xa6 BLACK FOUR POINTED STAR + /xe2/x9c/xa7 WHITE FOUR POINTED STAR ++ /xe2/x9c/xa8 SPARKLES + /xe2/x9c/xa9 STRESS OUTLINED WHITE STAR + /xe2/x9c/xaa CIRCLED WHITE STAR + /xe2/x9c/xab OPEN CENTRE BLACK STAR +@@ -8155,12 +8708,18 @@ CHARMAP + /xe2/x9d/x89 BALLOON-SPOKED ASTERISK + /xe2/x9d/x8a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + /xe2/x9d/x8b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK ++ /xe2/x9d/x8c CROSS MARK + /xe2/x9d/x8d SHADOWED WHITE CIRCLE ++ /xe2/x9d/x8e NEGATIVE SQUARED CROSS MARK + /xe2/x9d/x8f LOWER RIGHT DROP-SHADOWED WHITE SQUARE + /xe2/x9d/x90 UPPER RIGHT DROP-SHADOWED WHITE SQUARE + /xe2/x9d/x91 LOWER RIGHT SHADOWED WHITE SQUARE + /xe2/x9d/x92 UPPER RIGHT SHADOWED WHITE SQUARE ++ /xe2/x9d/x93 BLACK QUESTION MARK ORNAMENT ++ /xe2/x9d/x94 WHITE QUESTION MARK ORNAMENT ++ /xe2/x9d/x95 WHITE EXCLAMATION MARK ORNAMENT + /xe2/x9d/x96 BLACK DIAMOND MINUS WHITE X ++ /xe2/x9d/x97 HEAVY EXCLAMATION MARK SYMBOL + /xe2/x9d/x98 LIGHT VERTICAL BAR + /xe2/x9d/x99 MEDIUM VERTICAL BAR + /xe2/x9d/x9a HEAVY VERTICAL BAR +@@ -8168,6 +8727,8 @@ CHARMAP + /xe2/x9d/x9c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT + /xe2/x9d/x9d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT + /xe2/x9d/x9e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT ++ /xe2/x9d/x9f HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT ++ /xe2/x9d/xa0 HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + /xe2/x9d/xa1 CURVED STEM PARAGRAPH SIGN ORNAMENT + /xe2/x9d/xa2 HEAVY EXCLAMATION MARK ORNAMENT + /xe2/x9d/xa3 HEAVY HEART EXCLAMATION MARK ORNAMENT +@@ -8220,6 +8781,9 @@ CHARMAP + /xe2/x9e/x92 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE + /xe2/x9e/x93 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN + /xe2/x9e/x94 HEAVY WIDE-HEADED RIGHTWARDS ARROW ++ /xe2/x9e/x95 HEAVY PLUS SIGN ++ /xe2/x9e/x96 HEAVY MINUS SIGN ++ /xe2/x9e/x97 HEAVY DIVISION SIGN + /xe2/x9e/x98 HEAVY SOUTH EAST ARROW + /xe2/x9e/x99 HEAVY RIGHTWARDS ARROW + /xe2/x9e/x9a HEAVY NORTH EAST ARROW +@@ -8244,6 +8808,7 @@ CHARMAP + /xe2/x9e/xad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + /xe2/x9e/xae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + /xe2/x9e/xaf NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW ++ /xe2/x9e/xb0 CURLY LOOP + /xe2/x9e/xb1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + /xe2/x9e/xb2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW + /xe2/x9e/xb3 WHITE-FEATHERED RIGHTWARDS ARROW +@@ -8258,6 +8823,7 @@ CHARMAP + /xe2/x9e/xbc WEDGE-TAILED RIGHTWARDS ARROW + /xe2/x9e/xbd HEAVY WEDGE-TAILED RIGHTWARDS ARROW + /xe2/x9e/xbe OPEN-OUTLINED RIGHTWARDS ARROW ++ /xe2/x9e/xbf DOUBLE CURLY LOOP + /xe2/x9f/x80 THREE DIMENSIONAL ANGLE + /xe2/x9f/x81 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE + /xe2/x9f/x82 PERPENDICULAR +@@ -8270,6 +8836,8 @@ CHARMAP + /xe2/x9f/x89 SUPERSET PRECEDING SOLIDUS + /xe2/x9f/x8a VERTICAL BAR WITH HORIZONTAL STROKE + /xe2/x9f/x8c LONG DIVISION ++ /xe2/x9f/x8e SQUARED LOGICAL AND ++ /xe2/x9f/x8f SQUARED LOGICAL OR + /xe2/x9f/x90 WHITE DIAMOND WITH CENTRED DOT + /xe2/x9f/x91 AND WITH DOT + /xe2/x9f/x92 ELEMENT OF OPENING UPWARDS +@@ -9168,6 +9736,11 @@ CHARMAP + /xe2/xad/x92 WHITE SMALL STAR + /xe2/xad/x93 BLACK RIGHT-POINTING PENTAGON + /xe2/xad/x94 WHITE RIGHT-POINTING PENTAGON ++ /xe2/xad/x95 HEAVY LARGE CIRCLE ++ /xe2/xad/x96 HEAVY OVAL WITH OVAL INSIDE ++ /xe2/xad/x97 HEAVY CIRCLE WITH CIRCLE INSIDE ++ /xe2/xad/x98 HEAVY CIRCLE ++ /xe2/xad/x99 HEAVY CIRCLED SALTIRE + /xe2/xb0/x80 GLAGOLITIC CAPITAL LETTER AZU + /xe2/xb0/x81 GLAGOLITIC CAPITAL LETTER BUKY + /xe2/xb0/x82 GLAGOLITIC CAPITAL LETTER VEDE +@@ -9278,6 +9851,7 @@ CHARMAP + /xe2/xb1/xad LATIN CAPITAL LETTER ALPHA + /xe2/xb1/xae LATIN CAPITAL LETTER M WITH HOOK + /xe2/xb1/xaf LATIN CAPITAL LETTER TURNED A ++ /xe2/xb1/xb0 LATIN CAPITAL LETTER TURNED ALPHA + /xe2/xb1/xb1 LATIN SMALL LETTER V WITH RIGHT HOOK + /xe2/xb1/xb2 LATIN CAPITAL LETTER W WITH HOOK + /xe2/xb1/xb3 LATIN SMALL LETTER W WITH HOOK +@@ -9291,6 +9865,8 @@ CHARMAP + /xe2/xb1/xbb LATIN LETTER SMALL CAPITAL TURNED E + /xe2/xb1/xbc LATIN SUBSCRIPT SMALL LETTER J + /xe2/xb1/xbd MODIFIER LETTER CAPITAL V ++ /xe2/xb1/xbe LATIN CAPITAL LETTER S WITH SWASH TAIL ++ /xe2/xb1/xbf LATIN CAPITAL LETTER Z WITH SWASH TAIL + /xe2/xb2/x80 COPTIC CAPITAL LETTER ALFA + /xe2/xb2/x81 COPTIC SMALL LETTER ALFA + /xe2/xb2/x82 COPTIC CAPITAL LETTER VIDA +@@ -9398,6 +9974,13 @@ CHARMAP + /xe2/xb3/xa8 COPTIC SYMBOL TAU RO + /xe2/xb3/xa9 COPTIC SYMBOL KHI RO + /xe2/xb3/xaa COPTIC SYMBOL SHIMA SIMA ++ /xe2/xb3/xab COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI ++ /xe2/xb3/xac COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI ++ /xe2/xb3/xad COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA ++ /xe2/xb3/xae COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA ++ /xe2/xb3/xaf COPTIC COMBINING NI ABOVE ++ /xe2/xb3/xb0 COPTIC COMBINING SPIRITUS ASPER ++ /xe2/xb3/xb1 COPTIC COMBINING SPIRITUS LENIS + /xe2/xb3/xb9 COPTIC OLD NUBIAN FULL STOP + /xe2/xb3/xba COPTIC OLD NUBIAN DIRECT QUESTION MARK + /xe2/xb3/xbb COPTIC OLD NUBIAN INDIRECT QUESTION MARK +@@ -9498,6 +10081,8 @@ CHARMAP + /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ + /xe2/xb5/xa5 TIFINAGH LETTER YAZZ + /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK ++ /xe2/xb5/xb0 TIFINAGH SEPARATOR MARK ++ /xe2/xb5/xbf TIFINAGH CONSONANT JOINER + /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA + /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA + /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA +@@ -9658,6 +10243,7 @@ CHARMAP + /xe2/xb8/xae REVERSED QUESTION MARK + /xe2/xb8/xaf VERTICAL TILDE + /xe2/xb8/xb0 RING POINT ++ /xe2/xb8/xb1 WORD SEPARATOR MIDDLE DOT + /xe2/xba/x80 CJK RADICAL REPEAT + /xe2/xba/x81 CJK RADICAL CLIFF + /xe2/xba/x82 CJK RADICAL SECOND ONE +@@ -10427,6 +11013,9 @@ CHARMAP + /xe3/x86/xb5 BOPOMOFO FINAL LETTER T + /xe3/x86/xb6 BOPOMOFO FINAL LETTER K + /xe3/x86/xb7 BOPOMOFO FINAL LETTER H ++ /xe3/x86/xb8 BOPOMOFO LETTER GH ++ /xe3/x86/xb9 BOPOMOFO LETTER LH ++ /xe3/x86/xba BOPOMOFO LETTER ZY + /xe3/x87/x80 CJK STROKE T + /xe3/x87/x81 CJK STROKE WG + /xe3/x87/x82 CJK STROKE XG +@@ -10546,6 +11135,18 @@ CHARMAP + /xe3/x89/x81 PARENTHESIZED IDEOGRAPH REST + /xe3/x89/x82 PARENTHESIZED IDEOGRAPH SELF + /xe3/x89/x83 PARENTHESIZED IDEOGRAPH REACH ++ /xe3/x89/x84 CIRCLED IDEOGRAPH QUESTION ++ /xe3/x89/x85 CIRCLED IDEOGRAPH KINDERGARTEN ++ /xe3/x89/x86 CIRCLED IDEOGRAPH SCHOOL ++ /xe3/x89/x87 CIRCLED IDEOGRAPH KOTO ++ /xe3/x89/x88 CIRCLED NUMBER TEN ON BLACK SQUARE ++ /xe3/x89/x89 CIRCLED NUMBER TWENTY ON BLACK SQUARE ++ /xe3/x89/x8a CIRCLED NUMBER THIRTY ON BLACK SQUARE ++ /xe3/x89/x8b CIRCLED NUMBER FORTY ON BLACK SQUARE ++ /xe3/x89/x8c CIRCLED NUMBER FIFTY ON BLACK SQUARE ++ /xe3/x89/x8d CIRCLED NUMBER SIXTY ON BLACK SQUARE ++ /xe3/x89/x8e CIRCLED NUMBER SEVENTY ON BLACK SQUARE ++ /xe3/x89/x8f CIRCLED NUMBER EIGHTY ON BLACK SQUARE + /xe3/x89/x90 PARTNERSHIP SIGN + /xe3/x89/x91 CIRCLED NUMBER TWENTY ONE + /xe3/x89/x92 CIRCLED NUMBER TWENTY TWO +@@ -12691,6 +13292,54 @@ CHARMAP + /xea/x93/x84 YI RADICAL ZZIET + /xea/x93/x85 YI RADICAL NBIE + /xea/x93/x86 YI RADICAL KE ++ /xea/x93/x90 LISU LETTER BA ++ /xea/x93/x91 LISU LETTER PA ++ /xea/x93/x92 LISU LETTER PHA ++ /xea/x93/x93 LISU LETTER DA ++ /xea/x93/x94 LISU LETTER TA ++ /xea/x93/x95 LISU LETTER THA ++ /xea/x93/x96 LISU LETTER GA ++ /xea/x93/x97 LISU LETTER KA ++ /xea/x93/x98 LISU LETTER KHA ++ /xea/x93/x99 LISU LETTER JA ++ /xea/x93/x9a LISU LETTER CA ++ /xea/x93/x9b LISU LETTER CHA ++ /xea/x93/x9c LISU LETTER DZA ++ /xea/x93/x9d LISU LETTER TSA ++ /xea/x93/x9e LISU LETTER TSHA ++ /xea/x93/x9f LISU LETTER MA ++ /xea/x93/xa0 LISU LETTER NA ++ /xea/x93/xa1 LISU LETTER LA ++ /xea/x93/xa2 LISU LETTER SA ++ /xea/x93/xa3 LISU LETTER ZHA ++ /xea/x93/xa4 LISU LETTER ZA ++ /xea/x93/xa5 LISU LETTER NGA ++ /xea/x93/xa6 LISU LETTER HA ++ /xea/x93/xa7 LISU LETTER XA ++ /xea/x93/xa8 LISU LETTER HHA ++ /xea/x93/xa9 LISU LETTER FA ++ /xea/x93/xaa LISU LETTER WA ++ /xea/x93/xab LISU LETTER SHA ++ /xea/x93/xac LISU LETTER YA ++ /xea/x93/xad LISU LETTER GHA ++ /xea/x93/xae LISU LETTER A ++ /xea/x93/xaf LISU LETTER AE ++ /xea/x93/xb0 LISU LETTER E ++ /xea/x93/xb1 LISU LETTER EU ++ /xea/x93/xb2 LISU LETTER I ++ /xea/x93/xb3 LISU LETTER O ++ /xea/x93/xb4 LISU LETTER U ++ /xea/x93/xb5 LISU LETTER UE ++ /xea/x93/xb6 LISU LETTER UH ++ /xea/x93/xb7 LISU LETTER OE ++ /xea/x93/xb8 LISU LETTER TONE MYA TI ++ /xea/x93/xb9 LISU LETTER TONE NA PO ++ /xea/x93/xba LISU LETTER TONE MYA CYA ++ /xea/x93/xbb LISU LETTER TONE MYA BO ++ /xea/x93/xbc LISU LETTER TONE MYA NA ++ /xea/x93/xbd LISU LETTER TONE MYA JEU ++ /xea/x93/xbe LISU PUNCTUATION COMMA ++ /xea/x93/xbf LISU PUNCTUATION FULL STOP + /xea/x94/x80 VAI SYLLABLE EE + /xea/x94/x81 VAI SYLLABLE EEN + /xea/x94/x82 VAI SYLLABLE HEE +@@ -13023,6 +13672,8 @@ CHARMAP + /xea/x99/x9d CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS + /xea/x99/x9e CYRILLIC CAPITAL LETTER YN + /xea/x99/x9f CYRILLIC SMALL LETTER YN ++ /xea/x99/xa0 CYRILLIC CAPITAL LETTER REVERSED TSE ++ /xea/x99/xa1 CYRILLIC SMALL LETTER REVERSED TSE + /xea/x99/xa2 CYRILLIC CAPITAL LETTER SOFT DE + /xea/x99/xa3 CYRILLIC SMALL LETTER SOFT DE + /xea/x99/xa4 CYRILLIC CAPITAL LETTER SOFT EL +@@ -13069,6 +13720,94 @@ CHARMAP + /xea/x9a/x95 CYRILLIC SMALL LETTER HWE + /xea/x9a/x96 CYRILLIC CAPITAL LETTER SHWE + /xea/x9a/x97 CYRILLIC SMALL LETTER SHWE ++ /xea/x9a/xa0 BAMUM LETTER A ++ /xea/x9a/xa1 BAMUM LETTER KA ++ /xea/x9a/xa2 BAMUM LETTER U ++ /xea/x9a/xa3 BAMUM LETTER KU ++ /xea/x9a/xa4 BAMUM LETTER EE ++ /xea/x9a/xa5 BAMUM LETTER REE ++ /xea/x9a/xa6 BAMUM LETTER TAE ++ /xea/x9a/xa7 BAMUM LETTER O ++ /xea/x9a/xa8 BAMUM LETTER NYI ++ /xea/x9a/xa9 BAMUM LETTER I ++ /xea/x9a/xaa BAMUM LETTER LA ++ /xea/x9a/xab BAMUM LETTER PA ++ /xea/x9a/xac BAMUM LETTER RII ++ /xea/x9a/xad BAMUM LETTER RIEE ++ /xea/x9a/xae BAMUM LETTER LEEEE ++ /xea/x9a/xaf BAMUM LETTER MEEEE ++ /xea/x9a/xb0 BAMUM LETTER TAA ++ /xea/x9a/xb1 BAMUM LETTER NDAA ++ /xea/x9a/xb2 BAMUM LETTER NJAEM ++ /xea/x9a/xb3 BAMUM LETTER M ++ /xea/x9a/xb4 BAMUM LETTER SUU ++ /xea/x9a/xb5 BAMUM LETTER MU ++ /xea/x9a/xb6 BAMUM LETTER SHII ++ /xea/x9a/xb7 BAMUM LETTER SI ++ /xea/x9a/xb8 BAMUM LETTER SHEUX ++ /xea/x9a/xb9 BAMUM LETTER SEUX ++ /xea/x9a/xba BAMUM LETTER KYEE ++ /xea/x9a/xbb BAMUM LETTER KET ++ /xea/x9a/xbc BAMUM LETTER NUAE ++ /xea/x9a/xbd BAMUM LETTER NU ++ /xea/x9a/xbe BAMUM LETTER NJUAE ++ /xea/x9a/xbf BAMUM LETTER YOQ ++ /xea/x9b/x80 BAMUM LETTER SHU ++ /xea/x9b/x81 BAMUM LETTER YUQ ++ /xea/x9b/x82 BAMUM LETTER YA ++ /xea/x9b/x83 BAMUM LETTER NSHA ++ /xea/x9b/x84 BAMUM LETTER KEUX ++ /xea/x9b/x85 BAMUM LETTER PEUX ++ /xea/x9b/x86 BAMUM LETTER NJEE ++ /xea/x9b/x87 BAMUM LETTER NTEE ++ /xea/x9b/x88 BAMUM LETTER PUE ++ /xea/x9b/x89 BAMUM LETTER WUE ++ /xea/x9b/x8a BAMUM LETTER PEE ++ /xea/x9b/x8b BAMUM LETTER FEE ++ /xea/x9b/x8c BAMUM LETTER RU ++ /xea/x9b/x8d BAMUM LETTER LU ++ /xea/x9b/x8e BAMUM LETTER MI ++ /xea/x9b/x8f BAMUM LETTER NI ++ /xea/x9b/x90 BAMUM LETTER REUX ++ /xea/x9b/x91 BAMUM LETTER RAE ++ /xea/x9b/x92 BAMUM LETTER KEN ++ /xea/x9b/x93 BAMUM LETTER NGKWAEN ++ /xea/x9b/x94 BAMUM LETTER NGGA ++ /xea/x9b/x95 BAMUM LETTER NGA ++ /xea/x9b/x96 BAMUM LETTER SHO ++ /xea/x9b/x97 BAMUM LETTER PUAE ++ /xea/x9b/x98 BAMUM LETTER FU ++ /xea/x9b/x99 BAMUM LETTER FOM ++ /xea/x9b/x9a BAMUM LETTER WA ++ /xea/x9b/x9b BAMUM LETTER NA ++ /xea/x9b/x9c BAMUM LETTER LI ++ /xea/x9b/x9d BAMUM LETTER PI ++ /xea/x9b/x9e BAMUM LETTER LOQ ++ /xea/x9b/x9f BAMUM LETTER KO ++ /xea/x9b/xa0 BAMUM LETTER MBEN ++ /xea/x9b/xa1 BAMUM LETTER REN ++ /xea/x9b/xa2 BAMUM LETTER MEN ++ /xea/x9b/xa3 BAMUM LETTER MA ++ /xea/x9b/xa4 BAMUM LETTER TI ++ /xea/x9b/xa5 BAMUM LETTER KI ++ /xea/x9b/xa6 BAMUM LETTER MO ++ /xea/x9b/xa7 BAMUM LETTER MBAA ++ /xea/x9b/xa8 BAMUM LETTER TET ++ /xea/x9b/xa9 BAMUM LETTER KPA ++ /xea/x9b/xaa BAMUM LETTER TEN ++ /xea/x9b/xab BAMUM LETTER NTUU ++ /xea/x9b/xac BAMUM LETTER SAMBA ++ /xea/x9b/xad BAMUM LETTER FAAMAE ++ /xea/x9b/xae BAMUM LETTER KOVUU ++ /xea/x9b/xaf BAMUM LETTER KOGHOM ++ /xea/x9b/xb0 BAMUM COMBINING MARK KOQNDON ++ /xea/x9b/xb1 BAMUM COMBINING MARK TUKWENTIS ++ /xea/x9b/xb2 BAMUM NJAEMLI ++ /xea/x9b/xb3 BAMUM FULL STOP ++ /xea/x9b/xb4 BAMUM COLON ++ /xea/x9b/xb5 BAMUM COMMA ++ /xea/x9b/xb6 BAMUM SEMICOLON ++ /xea/x9b/xb7 BAMUM QUESTION MARK + /xea/x9c/x80 MODIFIER LETTER CHINESE TONE YIN PING + /xea/x9c/x81 MODIFIER LETTER CHINESE TONE YANG PING + /xea/x9c/x82 MODIFIER LETTER CHINESE TONE YIN SHANG +@@ -13210,6 +13949,21 @@ CHARMAP + /xea/x9e/x8a MODIFIER LETTER SHORT EQUALS SIGN + /xea/x9e/x8b LATIN CAPITAL LETTER SALTILLO + /xea/x9e/x8c LATIN SMALL LETTER SALTILLO ++ /xea/x9e/x8d LATIN CAPITAL LETTER TURNED H ++ /xea/x9e/x8e LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT ++ /xea/x9e/x90 LATIN CAPITAL LETTER N WITH DESCENDER ++ /xea/x9e/x91 LATIN SMALL LETTER N WITH DESCENDER ++ /xea/x9e/xa0 LATIN CAPITAL LETTER G WITH OBLIQUE STROKE ++ /xea/x9e/xa1 LATIN SMALL LETTER G WITH OBLIQUE STROKE ++ /xea/x9e/xa2 LATIN CAPITAL LETTER K WITH OBLIQUE STROKE ++ /xea/x9e/xa3 LATIN SMALL LETTER K WITH OBLIQUE STROKE ++ /xea/x9e/xa4 LATIN CAPITAL LETTER N WITH OBLIQUE STROKE ++ /xea/x9e/xa5 LATIN SMALL LETTER N WITH OBLIQUE STROKE ++ /xea/x9e/xa6 LATIN CAPITAL LETTER R WITH OBLIQUE STROKE ++ /xea/x9e/xa7 LATIN SMALL LETTER R WITH OBLIQUE STROKE ++ /xea/x9e/xa8 LATIN CAPITAL LETTER S WITH OBLIQUE STROKE ++ /xea/x9e/xa9 LATIN SMALL LETTER S WITH OBLIQUE STROKE ++ /xea/x9f/xba LATIN LETTER SMALL CAPITAL TURNED M + /xea/x9f/xbb LATIN EPIGRAPHIC LETTER REVERSED F + /xea/x9f/xbc LATIN EPIGRAPHIC LETTER REVERSED P + /xea/x9f/xbd LATIN EPIGRAPHIC LETTER INVERTED M +@@ -13259,6 +14013,16 @@ CHARMAP + /xea/xa0/xa9 SYLOTI NAGRI POETRY MARK-2 + /xea/xa0/xaa SYLOTI NAGRI POETRY MARK-3 + /xea/xa0/xab SYLOTI NAGRI POETRY MARK-4 ++ /xea/xa0/xb0 NORTH INDIC FRACTION ONE QUARTER ++ /xea/xa0/xb1 NORTH INDIC FRACTION ONE HALF ++ /xea/xa0/xb2 NORTH INDIC FRACTION THREE QUARTERS ++ /xea/xa0/xb3 NORTH INDIC FRACTION ONE SIXTEENTH ++ /xea/xa0/xb4 NORTH INDIC FRACTION ONE EIGHTH ++ /xea/xa0/xb5 NORTH INDIC FRACTION THREE SIXTEENTHS ++ /xea/xa0/xb6 NORTH INDIC QUARTER MARK ++ /xea/xa0/xb7 NORTH INDIC PLACEHOLDER MARK ++ /xea/xa0/xb8 NORTH INDIC RUPEE MARK ++ /xea/xa0/xb9 NORTH INDIC QUANTITY MARK + /xea/xa1/x80 PHAGS-PA LETTER KA + /xea/xa1/x81 PHAGS-PA LETTER KHA + /xea/xa1/x82 PHAGS-PA LETTER GA +@@ -13396,6 +14160,34 @@ CHARMAP + /xea/xa3/x97 SAURASHTRA DIGIT SEVEN + /xea/xa3/x98 SAURASHTRA DIGIT EIGHT + /xea/xa3/x99 SAURASHTRA DIGIT NINE ++ /xea/xa3/xa0 COMBINING DEVANAGARI DIGIT ZERO ++ /xea/xa3/xa1 COMBINING DEVANAGARI DIGIT ONE ++ /xea/xa3/xa2 COMBINING DEVANAGARI DIGIT TWO ++ /xea/xa3/xa3 COMBINING DEVANAGARI DIGIT THREE ++ /xea/xa3/xa4 COMBINING DEVANAGARI DIGIT FOUR ++ /xea/xa3/xa5 COMBINING DEVANAGARI DIGIT FIVE ++ /xea/xa3/xa6 COMBINING DEVANAGARI DIGIT SIX ++ /xea/xa3/xa7 COMBINING DEVANAGARI DIGIT SEVEN ++ /xea/xa3/xa8 COMBINING DEVANAGARI DIGIT EIGHT ++ /xea/xa3/xa9 COMBINING DEVANAGARI DIGIT NINE ++ /xea/xa3/xaa COMBINING DEVANAGARI LETTER A ++ /xea/xa3/xab COMBINING DEVANAGARI LETTER U ++ /xea/xa3/xac COMBINING DEVANAGARI LETTER KA ++ /xea/xa3/xad COMBINING DEVANAGARI LETTER NA ++ /xea/xa3/xae COMBINING DEVANAGARI LETTER PA ++ /xea/xa3/xaf COMBINING DEVANAGARI LETTER RA ++ /xea/xa3/xb0 COMBINING DEVANAGARI LETTER VI ++ /xea/xa3/xb1 COMBINING DEVANAGARI SIGN AVAGRAHA ++ /xea/xa3/xb2 DEVANAGARI SIGN SPACING CANDRABINDU ++ /xea/xa3/xb3 DEVANAGARI SIGN CANDRABINDU VIRAMA ++ /xea/xa3/xb4 DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA ++ /xea/xa3/xb5 DEVANAGARI SIGN CANDRABINDU TWO ++ /xea/xa3/xb6 DEVANAGARI SIGN CANDRABINDU THREE ++ /xea/xa3/xb7 DEVANAGARI SIGN CANDRABINDU AVAGRAHA ++ /xea/xa3/xb8 DEVANAGARI SIGN PUSHPIKA ++ /xea/xa3/xb9 DEVANAGARI GAP FILLER ++ /xea/xa3/xba DEVANAGARI CARET ++ /xea/xa3/xbb DEVANAGARI HEADSTROKE + /xea/xa4/x80 KAYAH LI DIGIT ZERO + /xea/xa4/x81 KAYAH LI DIGIT ONE + /xea/xa4/x82 KAYAH LI DIGIT TWO +@@ -13481,6 +14273,126 @@ CHARMAP + /xea/xa5/x92 REJANG CONSONANT SIGN H + /xea/xa5/x93 REJANG VIRAMA + /xea/xa5/x9f REJANG SECTION MARK ++ /xea/xa5/xa0 HANGUL CHOSEONG TIKEUT-MIEUM ++ /xea/xa5/xa1 HANGUL CHOSEONG TIKEUT-PIEUP ++ /xea/xa5/xa2 HANGUL CHOSEONG TIKEUT-SIOS ++ /xea/xa5/xa3 HANGUL CHOSEONG TIKEUT-CIEUC ++ /xea/xa5/xa4 HANGUL CHOSEONG RIEUL-KIYEOK ++ /xea/xa5/xa5 HANGUL CHOSEONG RIEUL-SSANGKIYEOK ++ /xea/xa5/xa6 HANGUL CHOSEONG RIEUL-TIKEUT ++ /xea/xa5/xa7 HANGUL CHOSEONG RIEUL-SSANGTIKEUT ++ /xea/xa5/xa8 HANGUL CHOSEONG RIEUL-MIEUM ++ /xea/xa5/xa9 HANGUL CHOSEONG RIEUL-PIEUP ++ /xea/xa5/xaa HANGUL CHOSEONG RIEUL-SSANGPIEUP ++ /xea/xa5/xab HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP ++ /xea/xa5/xac HANGUL CHOSEONG RIEUL-SIOS ++ /xea/xa5/xad HANGUL CHOSEONG RIEUL-CIEUC ++ /xea/xa5/xae HANGUL CHOSEONG RIEUL-KHIEUKH ++ /xea/xa5/xaf HANGUL CHOSEONG MIEUM-KIYEOK ++ /xea/xa5/xb0 HANGUL CHOSEONG MIEUM-TIKEUT ++ /xea/xa5/xb1 HANGUL CHOSEONG MIEUM-SIOS ++ /xea/xa5/xb2 HANGUL CHOSEONG PIEUP-SIOS-THIEUTH ++ /xea/xa5/xb3 HANGUL CHOSEONG PIEUP-KHIEUKH ++ /xea/xa5/xb4 HANGUL CHOSEONG PIEUP-HIEUH ++ /xea/xa5/xb5 HANGUL CHOSEONG SSANGSIOS-PIEUP ++ /xea/xa5/xb6 HANGUL CHOSEONG IEUNG-RIEUL ++ /xea/xa5/xb7 HANGUL CHOSEONG IEUNG-HIEUH ++ /xea/xa5/xb8 HANGUL CHOSEONG SSANGCIEUC-HIEUH ++ /xea/xa5/xb9 HANGUL CHOSEONG SSANGTHIEUTH ++ /xea/xa5/xba HANGUL CHOSEONG PHIEUPH-HIEUH ++ /xea/xa5/xbb HANGUL CHOSEONG HIEUH-SIOS ++ /xea/xa5/xbc HANGUL CHOSEONG SSANGYEORINHIEUH ++ /xea/xa6/x80 JAVANESE SIGN PANYANGGA ++ /xea/xa6/x81 JAVANESE SIGN CECAK ++ /xea/xa6/x82 JAVANESE SIGN LAYAR ++ /xea/xa6/x83 JAVANESE SIGN WIGNYAN ++ /xea/xa6/x84 JAVANESE LETTER A ++ /xea/xa6/x85 JAVANESE LETTER I KAWI ++ /xea/xa6/x86 JAVANESE LETTER I ++ /xea/xa6/x87 JAVANESE LETTER II ++ /xea/xa6/x88 JAVANESE LETTER U ++ /xea/xa6/x89 JAVANESE LETTER PA CEREK ++ /xea/xa6/x8a JAVANESE LETTER NGA LELET ++ /xea/xa6/x8b JAVANESE LETTER NGA LELET RASWADI ++ /xea/xa6/x8c JAVANESE LETTER E ++ /xea/xa6/x8d JAVANESE LETTER AI ++ /xea/xa6/x8e JAVANESE LETTER O ++ /xea/xa6/x8f JAVANESE LETTER KA ++ /xea/xa6/x90 JAVANESE LETTER KA SASAK ++ /xea/xa6/x91 JAVANESE LETTER KA MURDA ++ /xea/xa6/x92 JAVANESE LETTER GA ++ /xea/xa6/x93 JAVANESE LETTER GA MURDA ++ /xea/xa6/x94 JAVANESE LETTER NGA ++ /xea/xa6/x95 JAVANESE LETTER CA ++ /xea/xa6/x96 JAVANESE LETTER CA MURDA ++ /xea/xa6/x97 JAVANESE LETTER JA ++ /xea/xa6/x98 JAVANESE LETTER NYA MURDA ++ /xea/xa6/x99 JAVANESE LETTER JA MAHAPRANA ++ /xea/xa6/x9a JAVANESE LETTER NYA ++ /xea/xa6/x9b JAVANESE LETTER TTA ++ /xea/xa6/x9c JAVANESE LETTER TTA MAHAPRANA ++ /xea/xa6/x9d JAVANESE LETTER DDA ++ /xea/xa6/x9e JAVANESE LETTER DDA MAHAPRANA ++ /xea/xa6/x9f JAVANESE LETTER NA MURDA ++ /xea/xa6/xa0 JAVANESE LETTER TA ++ /xea/xa6/xa1 JAVANESE LETTER TA MURDA ++ /xea/xa6/xa2 JAVANESE LETTER DA ++ /xea/xa6/xa3 JAVANESE LETTER DA MAHAPRANA ++ /xea/xa6/xa4 JAVANESE LETTER NA ++ /xea/xa6/xa5 JAVANESE LETTER PA ++ /xea/xa6/xa6 JAVANESE LETTER PA MURDA ++ /xea/xa6/xa7 JAVANESE LETTER BA ++ /xea/xa6/xa8 JAVANESE LETTER BA MURDA ++ /xea/xa6/xa9 JAVANESE LETTER MA ++ /xea/xa6/xaa JAVANESE LETTER YA ++ /xea/xa6/xab JAVANESE LETTER RA ++ /xea/xa6/xac JAVANESE LETTER RA AGUNG ++ /xea/xa6/xad JAVANESE LETTER LA ++ /xea/xa6/xae JAVANESE LETTER WA ++ /xea/xa6/xaf JAVANESE LETTER SA MURDA ++ /xea/xa6/xb0 JAVANESE LETTER SA MAHAPRANA ++ /xea/xa6/xb1 JAVANESE LETTER SA ++ /xea/xa6/xb2 JAVANESE LETTER HA ++ /xea/xa6/xb3 JAVANESE SIGN CECAK TELU ++ /xea/xa6/xb4 JAVANESE VOWEL SIGN TARUNG ++ /xea/xa6/xb5 JAVANESE VOWEL SIGN TOLONG ++ /xea/xa6/xb6 JAVANESE VOWEL SIGN WULU ++ /xea/xa6/xb7 JAVANESE VOWEL SIGN WULU MELIK ++ /xea/xa6/xb8 JAVANESE VOWEL SIGN SUKU ++ /xea/xa6/xb9 JAVANESE VOWEL SIGN SUKU MENDUT ++ /xea/xa6/xba JAVANESE VOWEL SIGN TALING ++ /xea/xa6/xbb JAVANESE VOWEL SIGN DIRGA MURE ++ /xea/xa6/xbc JAVANESE VOWEL SIGN PEPET ++ /xea/xa6/xbd JAVANESE CONSONANT SIGN KERET ++ /xea/xa6/xbe JAVANESE CONSONANT SIGN PENGKAL ++ /xea/xa6/xbf JAVANESE CONSONANT SIGN CAKRA ++ /xea/xa7/x80 JAVANESE PANGKON ++ /xea/xa7/x81 JAVANESE LEFT RERENGGAN ++ /xea/xa7/x82 JAVANESE RIGHT RERENGGAN ++ /xea/xa7/x83 JAVANESE PADA ANDAP ++ /xea/xa7/x84 JAVANESE PADA MADYA ++ /xea/xa7/x85 JAVANESE PADA LUHUR ++ /xea/xa7/x86 JAVANESE PADA WINDU ++ /xea/xa7/x87 JAVANESE PADA PANGKAT ++ /xea/xa7/x88 JAVANESE PADA LINGSA ++ /xea/xa7/x89 JAVANESE PADA LUNGSI ++ /xea/xa7/x8a JAVANESE PADA ADEG ++ /xea/xa7/x8b JAVANESE PADA ADEG ADEG ++ /xea/xa7/x8c JAVANESE PADA PISELEH ++ /xea/xa7/x8d JAVANESE TURNED PADA PISELEH ++ /xea/xa7/x8f JAVANESE PANGRANGKEP ++ /xea/xa7/x90 JAVANESE DIGIT ZERO ++ /xea/xa7/x91 JAVANESE DIGIT ONE ++ /xea/xa7/x92 JAVANESE DIGIT TWO ++ /xea/xa7/x93 JAVANESE DIGIT THREE ++ /xea/xa7/x94 JAVANESE DIGIT FOUR ++ /xea/xa7/x95 JAVANESE DIGIT FIVE ++ /xea/xa7/x96 JAVANESE DIGIT SIX ++ /xea/xa7/x97 JAVANESE DIGIT SEVEN ++ /xea/xa7/x98 JAVANESE DIGIT EIGHT ++ /xea/xa7/x99 JAVANESE DIGIT NINE ++ /xea/xa7/x9e JAVANESE PADA TIRTA TUMETES ++ /xea/xa7/x9f JAVANESE PADA ISEN-ISEN + /xea/xa8/x80 CHAM LETTER A + /xea/xa8/x81 CHAM LETTER I + /xea/xa8/x82 CHAM LETTER U +@@ -13564,6 +14476,194 @@ CHARMAP + /xea/xa9/x9d CHAM PUNCTUATION DANDA + /xea/xa9/x9e CHAM PUNCTUATION DOUBLE DANDA + /xea/xa9/x9f CHAM PUNCTUATION TRIPLE DANDA ++ /xea/xa9/xa0 MYANMAR LETTER KHAMTI GA ++ /xea/xa9/xa1 MYANMAR LETTER KHAMTI CA ++ /xea/xa9/xa2 MYANMAR LETTER KHAMTI CHA ++ /xea/xa9/xa3 MYANMAR LETTER KHAMTI JA ++ /xea/xa9/xa4 MYANMAR LETTER KHAMTI JHA ++ /xea/xa9/xa5 MYANMAR LETTER KHAMTI NYA ++ /xea/xa9/xa6 MYANMAR LETTER KHAMTI TTA ++ /xea/xa9/xa7 MYANMAR LETTER KHAMTI TTHA ++ /xea/xa9/xa8 MYANMAR LETTER KHAMTI DDA ++ /xea/xa9/xa9 MYANMAR LETTER KHAMTI DDHA ++ /xea/xa9/xaa MYANMAR LETTER KHAMTI DHA ++ /xea/xa9/xab MYANMAR LETTER KHAMTI NA ++ /xea/xa9/xac MYANMAR LETTER KHAMTI SA ++ /xea/xa9/xad MYANMAR LETTER KHAMTI HA ++ /xea/xa9/xae MYANMAR LETTER KHAMTI HHA ++ /xea/xa9/xaf MYANMAR LETTER KHAMTI FA ++ /xea/xa9/xb0 MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION ++ /xea/xa9/xb1 MYANMAR LETTER KHAMTI XA ++ /xea/xa9/xb2 MYANMAR LETTER KHAMTI ZA ++ /xea/xa9/xb3 MYANMAR LETTER KHAMTI RA ++ /xea/xa9/xb4 MYANMAR LOGOGRAM KHAMTI OAY ++ /xea/xa9/xb5 MYANMAR LOGOGRAM KHAMTI QN ++ /xea/xa9/xb6 MYANMAR LOGOGRAM KHAMTI HM ++ /xea/xa9/xb7 MYANMAR SYMBOL AITON EXCLAMATION ++ /xea/xa9/xb8 MYANMAR SYMBOL AITON ONE ++ /xea/xa9/xb9 MYANMAR SYMBOL AITON TWO ++ /xea/xa9/xba MYANMAR LETTER AITON RA ++ /xea/xa9/xbb MYANMAR SIGN PAO KAREN TONE ++ /xea/xaa/x80 TAI VIET LETTER LOW KO ++ /xea/xaa/x81 TAI VIET LETTER HIGH KO ++ /xea/xaa/x82 TAI VIET LETTER LOW KHO ++ /xea/xaa/x83 TAI VIET LETTER HIGH KHO ++ /xea/xaa/x84 TAI VIET LETTER LOW KHHO ++ /xea/xaa/x85 TAI VIET LETTER HIGH KHHO ++ /xea/xaa/x86 TAI VIET LETTER LOW GO ++ /xea/xaa/x87 TAI VIET LETTER HIGH GO ++ /xea/xaa/x88 TAI VIET LETTER LOW NGO ++ /xea/xaa/x89 TAI VIET LETTER HIGH NGO ++ /xea/xaa/x8a TAI VIET LETTER LOW CO ++ /xea/xaa/x8b TAI VIET LETTER HIGH CO ++ /xea/xaa/x8c TAI VIET LETTER LOW CHO ++ /xea/xaa/x8d TAI VIET LETTER HIGH CHO ++ /xea/xaa/x8e TAI VIET LETTER LOW SO ++ /xea/xaa/x8f TAI VIET LETTER HIGH SO ++ /xea/xaa/x90 TAI VIET LETTER LOW NYO ++ /xea/xaa/x91 TAI VIET LETTER HIGH NYO ++ /xea/xaa/x92 TAI VIET LETTER LOW DO ++ /xea/xaa/x93 TAI VIET LETTER HIGH DO ++ /xea/xaa/x94 TAI VIET LETTER LOW TO ++ /xea/xaa/x95 TAI VIET LETTER HIGH TO ++ /xea/xaa/x96 TAI VIET LETTER LOW THO ++ /xea/xaa/x97 TAI VIET LETTER HIGH THO ++ /xea/xaa/x98 TAI VIET LETTER LOW NO ++ /xea/xaa/x99 TAI VIET LETTER HIGH NO ++ /xea/xaa/x9a TAI VIET LETTER LOW BO ++ /xea/xaa/x9b TAI VIET LETTER HIGH BO ++ /xea/xaa/x9c TAI VIET LETTER LOW PO ++ /xea/xaa/x9d TAI VIET LETTER HIGH PO ++ /xea/xaa/x9e TAI VIET LETTER LOW PHO ++ /xea/xaa/x9f TAI VIET LETTER HIGH PHO ++ /xea/xaa/xa0 TAI VIET LETTER LOW FO ++ /xea/xaa/xa1 TAI VIET LETTER HIGH FO ++ /xea/xaa/xa2 TAI VIET LETTER LOW MO ++ /xea/xaa/xa3 TAI VIET LETTER HIGH MO ++ /xea/xaa/xa4 TAI VIET LETTER LOW YO ++ /xea/xaa/xa5 TAI VIET LETTER HIGH YO ++ /xea/xaa/xa6 TAI VIET LETTER LOW RO ++ /xea/xaa/xa7 TAI VIET LETTER HIGH RO ++ /xea/xaa/xa8 TAI VIET LETTER LOW LO ++ /xea/xaa/xa9 TAI VIET LETTER HIGH LO ++ /xea/xaa/xaa TAI VIET LETTER LOW VO ++ /xea/xaa/xab TAI VIET LETTER HIGH VO ++ /xea/xaa/xac TAI VIET LETTER LOW HO ++ /xea/xaa/xad TAI VIET LETTER HIGH HO ++ /xea/xaa/xae TAI VIET LETTER LOW O ++ /xea/xaa/xaf TAI VIET LETTER HIGH O ++ /xea/xaa/xb0 TAI VIET MAI KANG ++ /xea/xaa/xb1 TAI VIET VOWEL AA ++ /xea/xaa/xb2 TAI VIET VOWEL I ++ /xea/xaa/xb3 TAI VIET VOWEL UE ++ /xea/xaa/xb4 TAI VIET VOWEL U ++ /xea/xaa/xb5 TAI VIET VOWEL E ++ /xea/xaa/xb6 TAI VIET VOWEL O ++ /xea/xaa/xb7 TAI VIET MAI KHIT ++ /xea/xaa/xb8 TAI VIET VOWEL IA ++ /xea/xaa/xb9 TAI VIET VOWEL UEA ++ /xea/xaa/xba TAI VIET VOWEL UA ++ /xea/xaa/xbb TAI VIET VOWEL AUE ++ /xea/xaa/xbc TAI VIET VOWEL AY ++ /xea/xaa/xbd TAI VIET VOWEL AN ++ /xea/xaa/xbe TAI VIET VOWEL AM ++ /xea/xaa/xbf TAI VIET TONE MAI EK ++ /xea/xab/x80 TAI VIET TONE MAI NUENG ++ /xea/xab/x81 TAI VIET TONE MAI THO ++ /xea/xab/x82 TAI VIET TONE MAI SONG ++ /xea/xab/x9b TAI VIET SYMBOL KON ++ /xea/xab/x9c TAI VIET SYMBOL NUENG ++ /xea/xab/x9d TAI VIET SYMBOL SAM ++ /xea/xab/x9e TAI VIET SYMBOL HO HOI ++ /xea/xab/x9f TAI VIET SYMBOL KOI KOI ++ /xea/xac/x81 ETHIOPIC SYLLABLE TTHU ++ /xea/xac/x82 ETHIOPIC SYLLABLE TTHI ++ /xea/xac/x83 ETHIOPIC SYLLABLE TTHAA ++ /xea/xac/x84 ETHIOPIC SYLLABLE TTHEE ++ /xea/xac/x85 ETHIOPIC SYLLABLE TTHE ++ /xea/xac/x86 ETHIOPIC SYLLABLE TTHO ++ /xea/xac/x89 ETHIOPIC SYLLABLE DDHU ++ /xea/xac/x8a ETHIOPIC SYLLABLE DDHI ++ /xea/xac/x8b ETHIOPIC SYLLABLE DDHAA ++ /xea/xac/x8c ETHIOPIC SYLLABLE DDHEE ++ /xea/xac/x8d ETHIOPIC SYLLABLE DDHE ++ /xea/xac/x8e ETHIOPIC SYLLABLE DDHO ++ /xea/xac/x91 ETHIOPIC SYLLABLE DZU ++ /xea/xac/x92 ETHIOPIC SYLLABLE DZI ++ /xea/xac/x93 ETHIOPIC SYLLABLE DZAA ++ /xea/xac/x94 ETHIOPIC SYLLABLE DZEE ++ /xea/xac/x95 ETHIOPIC SYLLABLE DZE ++ /xea/xac/x96 ETHIOPIC SYLLABLE DZO ++ /xea/xac/xa0 ETHIOPIC SYLLABLE CCHHA ++ /xea/xac/xa1 ETHIOPIC SYLLABLE CCHHU ++ /xea/xac/xa2 ETHIOPIC SYLLABLE CCHHI ++ /xea/xac/xa3 ETHIOPIC SYLLABLE CCHHAA ++ /xea/xac/xa4 ETHIOPIC SYLLABLE CCHHEE ++ /xea/xac/xa5 ETHIOPIC SYLLABLE CCHHE ++ /xea/xac/xa6 ETHIOPIC SYLLABLE CCHHO ++ /xea/xac/xa8 ETHIOPIC SYLLABLE BBA ++ /xea/xac/xa9 ETHIOPIC SYLLABLE BBU ++ /xea/xac/xaa ETHIOPIC SYLLABLE BBI ++ /xea/xac/xab ETHIOPIC SYLLABLE BBAA ++ /xea/xac/xac ETHIOPIC SYLLABLE BBEE ++ /xea/xac/xad ETHIOPIC SYLLABLE BBE ++ /xea/xac/xae ETHIOPIC SYLLABLE BBO ++ /xea/xaf/x80 MEETEI MAYEK LETTER KOK ++ /xea/xaf/x81 MEETEI MAYEK LETTER SAM ++ /xea/xaf/x82 MEETEI MAYEK LETTER LAI ++ /xea/xaf/x83 MEETEI MAYEK LETTER MIT ++ /xea/xaf/x84 MEETEI MAYEK LETTER PA ++ /xea/xaf/x85 MEETEI MAYEK LETTER NA ++ /xea/xaf/x86 MEETEI MAYEK LETTER CHIL ++ /xea/xaf/x87 MEETEI MAYEK LETTER TIL ++ /xea/xaf/x88 MEETEI MAYEK LETTER KHOU ++ /xea/xaf/x89 MEETEI MAYEK LETTER NGOU ++ /xea/xaf/x8a MEETEI MAYEK LETTER THOU ++ /xea/xaf/x8b MEETEI MAYEK LETTER WAI ++ /xea/xaf/x8c MEETEI MAYEK LETTER YANG ++ /xea/xaf/x8d MEETEI MAYEK LETTER HUK ++ /xea/xaf/x8e MEETEI MAYEK LETTER UN ++ /xea/xaf/x8f MEETEI MAYEK LETTER I ++ /xea/xaf/x90 MEETEI MAYEK LETTER PHAM ++ /xea/xaf/x91 MEETEI MAYEK LETTER ATIYA ++ /xea/xaf/x92 MEETEI MAYEK LETTER GOK ++ /xea/xaf/x93 MEETEI MAYEK LETTER JHAM ++ /xea/xaf/x94 MEETEI MAYEK LETTER RAI ++ /xea/xaf/x95 MEETEI MAYEK LETTER BA ++ /xea/xaf/x96 MEETEI MAYEK LETTER JIL ++ /xea/xaf/x97 MEETEI MAYEK LETTER DIL ++ /xea/xaf/x98 MEETEI MAYEK LETTER GHOU ++ /xea/xaf/x99 MEETEI MAYEK LETTER DHOU ++ /xea/xaf/x9a MEETEI MAYEK LETTER BHAM ++ /xea/xaf/x9b MEETEI MAYEK LETTER KOK LONSUM ++ /xea/xaf/x9c MEETEI MAYEK LETTER LAI LONSUM ++ /xea/xaf/x9d MEETEI MAYEK LETTER MIT LONSUM ++ /xea/xaf/x9e MEETEI MAYEK LETTER PA LONSUM ++ /xea/xaf/x9f MEETEI MAYEK LETTER NA LONSUM ++ /xea/xaf/xa0 MEETEI MAYEK LETTER TIL LONSUM ++ /xea/xaf/xa1 MEETEI MAYEK LETTER NGOU LONSUM ++ /xea/xaf/xa2 MEETEI MAYEK LETTER I LONSUM ++ /xea/xaf/xa3 MEETEI MAYEK VOWEL SIGN ONAP ++ /xea/xaf/xa4 MEETEI MAYEK VOWEL SIGN INAP ++ /xea/xaf/xa5 MEETEI MAYEK VOWEL SIGN ANAP ++ /xea/xaf/xa6 MEETEI MAYEK VOWEL SIGN YENAP ++ /xea/xaf/xa7 MEETEI MAYEK VOWEL SIGN SOUNAP ++ /xea/xaf/xa8 MEETEI MAYEK VOWEL SIGN UNAP ++ /xea/xaf/xa9 MEETEI MAYEK VOWEL SIGN CHEINAP ++ /xea/xaf/xaa MEETEI MAYEK VOWEL SIGN NUNG ++ /xea/xaf/xab MEETEI MAYEK CHEIKHEI ++ /xea/xaf/xac MEETEI MAYEK LUM IYEK ++ /xea/xaf/xad MEETEI MAYEK APUN IYEK ++ /xea/xaf/xb0 MEETEI MAYEK DIGIT ZERO ++ /xea/xaf/xb1 MEETEI MAYEK DIGIT ONE ++ /xea/xaf/xb2 MEETEI MAYEK DIGIT TWO ++ /xea/xaf/xb3 MEETEI MAYEK DIGIT THREE ++ /xea/xaf/xb4 MEETEI MAYEK DIGIT FOUR ++ /xea/xaf/xb5 MEETEI MAYEK DIGIT FIVE ++ /xea/xaf/xb6 MEETEI MAYEK DIGIT SIX ++ /xea/xaf/xb7 MEETEI MAYEK DIGIT SEVEN ++ /xea/xaf/xb8 MEETEI MAYEK DIGIT EIGHT ++ /xea/xaf/xb9 MEETEI MAYEK DIGIT NINE + /xea/xb0/x80 HANGUL SYLLABLE GA + /xea/xb0/x81 HANGUL SYLLABLE GAG + /xea/xb0/x82 HANGUL SYLLABLE GAGG +@@ -24736,6 +25836,78 @@ CHARMAP + /xed/x9e/xa1 HANGUL SYLLABLE HIT + /xed/x9e/xa2 HANGUL SYLLABLE HIP + /xed/x9e/xa3 HANGUL SYLLABLE HIH ++ /xed/x9e/xb0 HANGUL JUNGSEONG O-YEO ++ /xed/x9e/xb1 HANGUL JUNGSEONG O-O-I ++ /xed/x9e/xb2 HANGUL JUNGSEONG YO-A ++ /xed/x9e/xb3 HANGUL JUNGSEONG YO-AE ++ /xed/x9e/xb4 HANGUL JUNGSEONG YO-EO ++ /xed/x9e/xb5 HANGUL JUNGSEONG U-YEO ++ /xed/x9e/xb6 HANGUL JUNGSEONG U-I-I ++ /xed/x9e/xb7 HANGUL JUNGSEONG YU-AE ++ /xed/x9e/xb8 HANGUL JUNGSEONG YU-O ++ /xed/x9e/xb9 HANGUL JUNGSEONG EU-A ++ /xed/x9e/xba HANGUL JUNGSEONG EU-EO ++ /xed/x9e/xbb HANGUL JUNGSEONG EU-E ++ /xed/x9e/xbc HANGUL JUNGSEONG EU-O ++ /xed/x9e/xbd HANGUL JUNGSEONG I-YA-O ++ /xed/x9e/xbe HANGUL JUNGSEONG I-YAE ++ /xed/x9e/xbf HANGUL JUNGSEONG I-YEO ++ /xed/x9f/x80 HANGUL JUNGSEONG I-YE ++ /xed/x9f/x81 HANGUL JUNGSEONG I-O-I ++ /xed/x9f/x82 HANGUL JUNGSEONG I-YO ++ /xed/x9f/x83 HANGUL JUNGSEONG I-YU ++ /xed/x9f/x84 HANGUL JUNGSEONG I-I ++ /xed/x9f/x85 HANGUL JUNGSEONG ARAEA-A ++ /xed/x9f/x86 HANGUL JUNGSEONG ARAEA-E ++ /xed/x9f/x8b HANGUL JONGSEONG NIEUN-RIEUL ++ /xed/x9f/x8c HANGUL JONGSEONG NIEUN-CHIEUCH ++ /xed/x9f/x8d HANGUL JONGSEONG SSANGTIKEUT ++ /xed/x9f/x8e HANGUL JONGSEONG SSANGTIKEUT-PIEUP ++ /xed/x9f/x8f HANGUL JONGSEONG TIKEUT-PIEUP ++ /xed/x9f/x90 HANGUL JONGSEONG TIKEUT-SIOS ++ /xed/x9f/x91 HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK ++ /xed/x9f/x92 HANGUL JONGSEONG TIKEUT-CIEUC ++ /xed/x9f/x93 HANGUL JONGSEONG TIKEUT-CHIEUCH ++ /xed/x9f/x94 HANGUL JONGSEONG TIKEUT-THIEUTH ++ /xed/x9f/x95 HANGUL JONGSEONG RIEUL-SSANGKIYEOK ++ /xed/x9f/x96 HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH ++ /xed/x9f/x97 HANGUL JONGSEONG SSANGRIEUL-KHIEUKH ++ /xed/x9f/x98 HANGUL JONGSEONG RIEUL-MIEUM-HIEUH ++ /xed/x9f/x99 HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT ++ /xed/x9f/x9a HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH ++ /xed/x9f/x9b HANGUL JONGSEONG RIEUL-YESIEUNG ++ /xed/x9f/x9c HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH ++ /xed/x9f/x9d HANGUL JONGSEONG KAPYEOUNRIEUL ++ /xed/x9f/x9e HANGUL JONGSEONG MIEUM-NIEUN ++ /xed/x9f/x9f HANGUL JONGSEONG MIEUM-SSANGNIEUN ++ /xed/x9f/xa0 HANGUL JONGSEONG SSANGMIEUM ++ /xed/x9f/xa1 HANGUL JONGSEONG MIEUM-PIEUP-SIOS ++ /xed/x9f/xa2 HANGUL JONGSEONG MIEUM-CIEUC ++ /xed/x9f/xa3 HANGUL JONGSEONG PIEUP-TIKEUT ++ /xed/x9f/xa4 HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH ++ /xed/x9f/xa5 HANGUL JONGSEONG PIEUP-MIEUM ++ /xed/x9f/xa6 HANGUL JONGSEONG SSANGPIEUP ++ /xed/x9f/xa7 HANGUL JONGSEONG PIEUP-SIOS-TIKEUT ++ /xed/x9f/xa8 HANGUL JONGSEONG PIEUP-CIEUC ++ /xed/x9f/xa9 HANGUL JONGSEONG PIEUP-CHIEUCH ++ /xed/x9f/xaa HANGUL JONGSEONG SIOS-MIEUM ++ /xed/x9f/xab HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP ++ /xed/x9f/xac HANGUL JONGSEONG SSANGSIOS-KIYEOK ++ /xed/x9f/xad HANGUL JONGSEONG SSANGSIOS-TIKEUT ++ /xed/x9f/xae HANGUL JONGSEONG SIOS-PANSIOS ++ /xed/x9f/xaf HANGUL JONGSEONG SIOS-CIEUC ++ /xed/x9f/xb0 HANGUL JONGSEONG SIOS-CHIEUCH ++ /xed/x9f/xb1 HANGUL JONGSEONG SIOS-THIEUTH ++ /xed/x9f/xb2 HANGUL JONGSEONG SIOS-HIEUH ++ /xed/x9f/xb3 HANGUL JONGSEONG PANSIOS-PIEUP ++ /xed/x9f/xb4 HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP ++ /xed/x9f/xb5 HANGUL JONGSEONG YESIEUNG-MIEUM ++ /xed/x9f/xb6 HANGUL JONGSEONG YESIEUNG-HIEUH ++ /xed/x9f/xb7 HANGUL JONGSEONG CIEUC-PIEUP ++ /xed/x9f/xb8 HANGUL JONGSEONG CIEUC-SSANGPIEUP ++ /xed/x9f/xb9 HANGUL JONGSEONG SSANGCIEUC ++ /xed/x9f/xba HANGUL JONGSEONG PHIEUPH-SIOS ++ /xed/x9f/xbb HANGUL JONGSEONG PHIEUPH-THIEUTH + % /xed/xa0/x80 + % /xed/xad/xbf + % /xed/xae/x80 +@@ -25203,6 +26375,9 @@ CHARMAP + /xef/xa9/xa8 CJK COMPATIBILITY IDEOGRAPH-FA68 + /xef/xa9/xa9 CJK COMPATIBILITY IDEOGRAPH-FA69 + /xef/xa9/xaa CJK COMPATIBILITY IDEOGRAPH-FA6A ++ /xef/xa9/xab CJK COMPATIBILITY IDEOGRAPH-FA6B ++ /xef/xa9/xac CJK COMPATIBILITY IDEOGRAPH-FA6C ++ /xef/xa9/xad CJK COMPATIBILITY IDEOGRAPH-FA6D + /xef/xa9/xb0 CJK COMPATIBILITY IDEOGRAPH-FA70 + /xef/xa9/xb1 CJK COMPATIBILITY IDEOGRAPH-FA71 + /xef/xa9/xb2 CJK COMPATIBILITY IDEOGRAPH-FA72 +@@ -25465,6 +26640,22 @@ CHARMAP + /xef/xae/xaf ARABIC LETTER YEH BARREE FINAL FORM + /xef/xae/xb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM + /xef/xae/xb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM ++ /xef/xae/xb2 ARABIC SYMBOL DOT ABOVE ++ /xef/xae/xb3 ARABIC SYMBOL DOT BELOW ++ /xef/xae/xb4 ARABIC SYMBOL TWO DOTS ABOVE ++ /xef/xae/xb5 ARABIC SYMBOL TWO DOTS BELOW ++ /xef/xae/xb6 ARABIC SYMBOL THREE DOTS ABOVE ++ /xef/xae/xb7 ARABIC SYMBOL THREE DOTS BELOW ++ /xef/xae/xb8 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE ++ /xef/xae/xb9 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW ++ /xef/xae/xba ARABIC SYMBOL FOUR DOTS ABOVE ++ /xef/xae/xbb ARABIC SYMBOL FOUR DOTS BELOW ++ /xef/xae/xbc ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW ++ /xef/xae/xbd ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE ++ /xef/xae/xbe ARABIC SYMBOL TWO DOTS VERTICALLY BELOW ++ /xef/xae/xbf ARABIC SYMBOL RING ++ /xef/xaf/x80 ARABIC SYMBOL SMALL TAH ABOVE ++ /xef/xaf/x81 ARABIC SYMBOL SMALL TAH BELOW + /xef/xaf/x93 ARABIC LETTER NG ISOLATED FORM + /xef/xaf/x94 ARABIC LETTER NG FINAL FORM + /xef/xaf/x95 ARABIC LETTER NG INITIAL FORM +@@ -27269,6 +28460,37 @@ CHARMAP + /xf0/x90/xa0/xb8 CYPRIOT SYLLABLE XE + /xf0/x90/xa0/xbc CYPRIOT SYLLABLE ZA + /xf0/x90/xa0/xbf CYPRIOT SYLLABLE ZO ++ /xf0/x90/xa1/x80 IMPERIAL ARAMAIC LETTER ALEPH ++ /xf0/x90/xa1/x81 IMPERIAL ARAMAIC LETTER BETH ++ /xf0/x90/xa1/x82 IMPERIAL ARAMAIC LETTER GIMEL ++ /xf0/x90/xa1/x83 IMPERIAL ARAMAIC LETTER DALETH ++ /xf0/x90/xa1/x84 IMPERIAL ARAMAIC LETTER HE ++ /xf0/x90/xa1/x85 IMPERIAL ARAMAIC LETTER WAW ++ /xf0/x90/xa1/x86 IMPERIAL ARAMAIC LETTER ZAYIN ++ /xf0/x90/xa1/x87 IMPERIAL ARAMAIC LETTER HETH ++ /xf0/x90/xa1/x88 IMPERIAL ARAMAIC LETTER TETH ++ /xf0/x90/xa1/x89 IMPERIAL ARAMAIC LETTER YODH ++ /xf0/x90/xa1/x8a IMPERIAL ARAMAIC LETTER KAPH ++ /xf0/x90/xa1/x8b IMPERIAL ARAMAIC LETTER LAMEDH ++ /xf0/x90/xa1/x8c IMPERIAL ARAMAIC LETTER MEM ++ /xf0/x90/xa1/x8d IMPERIAL ARAMAIC LETTER NUN ++ /xf0/x90/xa1/x8e IMPERIAL ARAMAIC LETTER SAMEKH ++ /xf0/x90/xa1/x8f IMPERIAL ARAMAIC LETTER AYIN ++ /xf0/x90/xa1/x90 IMPERIAL ARAMAIC LETTER PE ++ /xf0/x90/xa1/x91 IMPERIAL ARAMAIC LETTER SADHE ++ /xf0/x90/xa1/x92 IMPERIAL ARAMAIC LETTER QOPH ++ /xf0/x90/xa1/x93 IMPERIAL ARAMAIC LETTER RESH ++ /xf0/x90/xa1/x94 IMPERIAL ARAMAIC LETTER SHIN ++ /xf0/x90/xa1/x95 IMPERIAL ARAMAIC LETTER TAW ++ /xf0/x90/xa1/x97 IMPERIAL ARAMAIC SECTION SIGN ++ /xf0/x90/xa1/x98 IMPERIAL ARAMAIC NUMBER ONE ++ /xf0/x90/xa1/x99 IMPERIAL ARAMAIC NUMBER TWO ++ /xf0/x90/xa1/x9a IMPERIAL ARAMAIC NUMBER THREE ++ /xf0/x90/xa1/x9b IMPERIAL ARAMAIC NUMBER TEN ++ /xf0/x90/xa1/x9c IMPERIAL ARAMAIC NUMBER TWENTY ++ /xf0/x90/xa1/x9d IMPERIAL ARAMAIC NUMBER ONE HUNDRED ++ /xf0/x90/xa1/x9e IMPERIAL ARAMAIC NUMBER ONE THOUSAND ++ /xf0/x90/xa1/x9f IMPERIAL ARAMAIC NUMBER TEN THOUSAND + /xf0/x90/xa4/x80 PHOENICIAN LETTER ALF + /xf0/x90/xa4/x81 PHOENICIAN LETTER BET + /xf0/x90/xa4/x82 PHOENICIAN LETTER GAML +@@ -27295,6 +28517,8 @@ CHARMAP + /xf0/x90/xa4/x97 PHOENICIAN NUMBER TEN + /xf0/x90/xa4/x98 PHOENICIAN NUMBER TWENTY + /xf0/x90/xa4/x99 PHOENICIAN NUMBER ONE HUNDRED ++ /xf0/x90/xa4/x9a PHOENICIAN NUMBER TWO ++ /xf0/x90/xa4/x9b PHOENICIAN NUMBER THREE + /xf0/x90/xa4/x9f PHOENICIAN WORD SEPARATOR + /xf0/x90/xa4/xa0 LYDIAN LETTER A + /xf0/x90/xa4/xa1 LYDIAN LETTER B +@@ -27388,6 +28612,434 @@ CHARMAP + /xf0/x90/xa9/x96 KHAROSHTHI PUNCTUATION DANDA + /xf0/x90/xa9/x97 KHAROSHTHI PUNCTUATION DOUBLE DANDA + /xf0/x90/xa9/x98 KHAROSHTHI PUNCTUATION LINES ++ /xf0/x90/xa9/xa0 OLD SOUTH ARABIAN LETTER HE ++ /xf0/x90/xa9/xa1 OLD SOUTH ARABIAN LETTER LAMEDH ++ /xf0/x90/xa9/xa2 OLD SOUTH ARABIAN LETTER HETH ++ /xf0/x90/xa9/xa3 OLD SOUTH ARABIAN LETTER MEM ++ /xf0/x90/xa9/xa4 OLD SOUTH ARABIAN LETTER QOPH ++ /xf0/x90/xa9/xa5 OLD SOUTH ARABIAN LETTER WAW ++ /xf0/x90/xa9/xa6 OLD SOUTH ARABIAN LETTER SHIN ++ /xf0/x90/xa9/xa7 OLD SOUTH ARABIAN LETTER RESH ++ /xf0/x90/xa9/xa8 OLD SOUTH ARABIAN LETTER BETH ++ /xf0/x90/xa9/xa9 OLD SOUTH ARABIAN LETTER TAW ++ /xf0/x90/xa9/xaa OLD SOUTH ARABIAN LETTER SAT ++ /xf0/x90/xa9/xab OLD SOUTH ARABIAN LETTER KAPH ++ /xf0/x90/xa9/xac OLD SOUTH ARABIAN LETTER NUN ++ /xf0/x90/xa9/xad OLD SOUTH ARABIAN LETTER KHETH ++ /xf0/x90/xa9/xae OLD SOUTH ARABIAN LETTER SADHE ++ /xf0/x90/xa9/xaf OLD SOUTH ARABIAN LETTER SAMEKH ++ /xf0/x90/xa9/xb0 OLD SOUTH ARABIAN LETTER FE ++ /xf0/x90/xa9/xb1 OLD SOUTH ARABIAN LETTER ALEF ++ /xf0/x90/xa9/xb2 OLD SOUTH ARABIAN LETTER AYN ++ /xf0/x90/xa9/xb3 OLD SOUTH ARABIAN LETTER DHADHE ++ /xf0/x90/xa9/xb4 OLD SOUTH ARABIAN LETTER GIMEL ++ /xf0/x90/xa9/xb5 OLD SOUTH ARABIAN LETTER DALETH ++ /xf0/x90/xa9/xb6 OLD SOUTH ARABIAN LETTER GHAYN ++ /xf0/x90/xa9/xb7 OLD SOUTH ARABIAN LETTER TETH ++ /xf0/x90/xa9/xb8 OLD SOUTH ARABIAN LETTER ZAYN ++ /xf0/x90/xa9/xb9 OLD SOUTH ARABIAN LETTER DHALETH ++ /xf0/x90/xa9/xba OLD SOUTH ARABIAN LETTER YODH ++ /xf0/x90/xa9/xbb OLD SOUTH ARABIAN LETTER THAW ++ /xf0/x90/xa9/xbc OLD SOUTH ARABIAN LETTER THETH ++ /xf0/x90/xa9/xbd OLD SOUTH ARABIAN NUMBER ONE ++ /xf0/x90/xa9/xbe OLD SOUTH ARABIAN NUMBER FIFTY ++ /xf0/x90/xa9/xbf OLD SOUTH ARABIAN NUMERIC INDICATOR ++ /xf0/x90/xac/x80 AVESTAN LETTER A ++ /xf0/x90/xac/x81 AVESTAN LETTER AA ++ /xf0/x90/xac/x82 AVESTAN LETTER AO ++ /xf0/x90/xac/x83 AVESTAN LETTER AAO ++ /xf0/x90/xac/x84 AVESTAN LETTER AN ++ /xf0/x90/xac/x85 AVESTAN LETTER AAN ++ /xf0/x90/xac/x86 AVESTAN LETTER AE ++ /xf0/x90/xac/x87 AVESTAN LETTER AEE ++ /xf0/x90/xac/x88 AVESTAN LETTER E ++ /xf0/x90/xac/x89 AVESTAN LETTER EE ++ /xf0/x90/xac/x8a AVESTAN LETTER O ++ /xf0/x90/xac/x8b AVESTAN LETTER OO ++ /xf0/x90/xac/x8c AVESTAN LETTER I ++ /xf0/x90/xac/x8d AVESTAN LETTER II ++ /xf0/x90/xac/x8e AVESTAN LETTER U ++ /xf0/x90/xac/x8f AVESTAN LETTER UU ++ /xf0/x90/xac/x90 AVESTAN LETTER KE ++ /xf0/x90/xac/x91 AVESTAN LETTER XE ++ /xf0/x90/xac/x92 AVESTAN LETTER XYE ++ /xf0/x90/xac/x93 AVESTAN LETTER XVE ++ /xf0/x90/xac/x94 AVESTAN LETTER GE ++ /xf0/x90/xac/x95 AVESTAN LETTER GGE ++ /xf0/x90/xac/x96 AVESTAN LETTER GHE ++ /xf0/x90/xac/x97 AVESTAN LETTER CE ++ /xf0/x90/xac/x98 AVESTAN LETTER JE ++ /xf0/x90/xac/x99 AVESTAN LETTER TE ++ /xf0/x90/xac/x9a AVESTAN LETTER THE ++ /xf0/x90/xac/x9b AVESTAN LETTER DE ++ /xf0/x90/xac/x9c AVESTAN LETTER DHE ++ /xf0/x90/xac/x9d AVESTAN LETTER TTE ++ /xf0/x90/xac/x9e AVESTAN LETTER PE ++ /xf0/x90/xac/x9f AVESTAN LETTER FE ++ /xf0/x90/xac/xa0 AVESTAN LETTER BE ++ /xf0/x90/xac/xa1 AVESTAN LETTER BHE ++ /xf0/x90/xac/xa2 AVESTAN LETTER NGE ++ /xf0/x90/xac/xa3 AVESTAN LETTER NGYE ++ /xf0/x90/xac/xa4 AVESTAN LETTER NGVE ++ /xf0/x90/xac/xa5 AVESTAN LETTER NE ++ /xf0/x90/xac/xa6 AVESTAN LETTER NYE ++ /xf0/x90/xac/xa7 AVESTAN LETTER NNE ++ /xf0/x90/xac/xa8 AVESTAN LETTER ME ++ /xf0/x90/xac/xa9 AVESTAN LETTER HME ++ /xf0/x90/xac/xaa AVESTAN LETTER YYE ++ /xf0/x90/xac/xab AVESTAN LETTER YE ++ /xf0/x90/xac/xac AVESTAN LETTER VE ++ /xf0/x90/xac/xad AVESTAN LETTER RE ++ /xf0/x90/xac/xae AVESTAN LETTER LE ++ /xf0/x90/xac/xaf AVESTAN LETTER SE ++ /xf0/x90/xac/xb0 AVESTAN LETTER ZE ++ /xf0/x90/xac/xb1 AVESTAN LETTER SHE ++ /xf0/x90/xac/xb2 AVESTAN LETTER ZHE ++ /xf0/x90/xac/xb3 AVESTAN LETTER SHYE ++ /xf0/x90/xac/xb4 AVESTAN LETTER SSHE ++ /xf0/x90/xac/xb5 AVESTAN LETTER HE ++ /xf0/x90/xac/xb9 AVESTAN ABBREVIATION MARK ++ /xf0/x90/xac/xba TINY TWO DOTS OVER ONE DOT PUNCTUATION ++ /xf0/x90/xac/xbb SMALL TWO DOTS OVER ONE DOT PUNCTUATION ++ /xf0/x90/xac/xbc LARGE TWO DOTS OVER ONE DOT PUNCTUATION ++ /xf0/x90/xac/xbd LARGE ONE DOT OVER TWO DOTS PUNCTUATION ++ /xf0/x90/xac/xbe LARGE TWO RINGS OVER ONE RING PUNCTUATION ++ /xf0/x90/xac/xbf LARGE ONE RING OVER TWO RINGS PUNCTUATION ++ /xf0/x90/xad/x80 INSCRIPTIONAL PARTHIAN LETTER ALEPH ++ /xf0/x90/xad/x81 INSCRIPTIONAL PARTHIAN LETTER BETH ++ /xf0/x90/xad/x82 INSCRIPTIONAL PARTHIAN LETTER GIMEL ++ /xf0/x90/xad/x83 INSCRIPTIONAL PARTHIAN LETTER DALETH ++ /xf0/x90/xad/x84 INSCRIPTIONAL PARTHIAN LETTER HE ++ /xf0/x90/xad/x85 INSCRIPTIONAL PARTHIAN LETTER WAW ++ /xf0/x90/xad/x86 INSCRIPTIONAL PARTHIAN LETTER ZAYIN ++ /xf0/x90/xad/x87 INSCRIPTIONAL PARTHIAN LETTER HETH ++ /xf0/x90/xad/x88 INSCRIPTIONAL PARTHIAN LETTER TETH ++ /xf0/x90/xad/x89 INSCRIPTIONAL PARTHIAN LETTER YODH ++ /xf0/x90/xad/x8a INSCRIPTIONAL PARTHIAN LETTER KAPH ++ /xf0/x90/xad/x8b INSCRIPTIONAL PARTHIAN LETTER LAMEDH ++ /xf0/x90/xad/x8c INSCRIPTIONAL PARTHIAN LETTER MEM ++ /xf0/x90/xad/x8d INSCRIPTIONAL PARTHIAN LETTER NUN ++ /xf0/x90/xad/x8e INSCRIPTIONAL PARTHIAN LETTER SAMEKH ++ /xf0/x90/xad/x8f INSCRIPTIONAL PARTHIAN LETTER AYIN ++ /xf0/x90/xad/x90 INSCRIPTIONAL PARTHIAN LETTER PE ++ /xf0/x90/xad/x91 INSCRIPTIONAL PARTHIAN LETTER SADHE ++ /xf0/x90/xad/x92 INSCRIPTIONAL PARTHIAN LETTER QOPH ++ /xf0/x90/xad/x93 INSCRIPTIONAL PARTHIAN LETTER RESH ++ /xf0/x90/xad/x94 INSCRIPTIONAL PARTHIAN LETTER SHIN ++ /xf0/x90/xad/x95 INSCRIPTIONAL PARTHIAN LETTER TAW ++ /xf0/x90/xad/x98 INSCRIPTIONAL PARTHIAN NUMBER ONE ++ /xf0/x90/xad/x99 INSCRIPTIONAL PARTHIAN NUMBER TWO ++ /xf0/x90/xad/x9a INSCRIPTIONAL PARTHIAN NUMBER THREE ++ /xf0/x90/xad/x9b INSCRIPTIONAL PARTHIAN NUMBER FOUR ++ /xf0/x90/xad/x9c INSCRIPTIONAL PARTHIAN NUMBER TEN ++ /xf0/x90/xad/x9d INSCRIPTIONAL PARTHIAN NUMBER TWENTY ++ /xf0/x90/xad/x9e INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED ++ /xf0/x90/xad/x9f INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND ++ /xf0/x90/xad/xa0 INSCRIPTIONAL PAHLAVI LETTER ALEPH ++ /xf0/x90/xad/xa1 INSCRIPTIONAL PAHLAVI LETTER BETH ++ /xf0/x90/xad/xa2 INSCRIPTIONAL PAHLAVI LETTER GIMEL ++ /xf0/x90/xad/xa3 INSCRIPTIONAL PAHLAVI LETTER DALETH ++ /xf0/x90/xad/xa4 INSCRIPTIONAL PAHLAVI LETTER HE ++ /xf0/x90/xad/xa5 INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH ++ /xf0/x90/xad/xa6 INSCRIPTIONAL PAHLAVI LETTER ZAYIN ++ /xf0/x90/xad/xa7 INSCRIPTIONAL PAHLAVI LETTER HETH ++ /xf0/x90/xad/xa8 INSCRIPTIONAL PAHLAVI LETTER TETH ++ /xf0/x90/xad/xa9 INSCRIPTIONAL PAHLAVI LETTER YODH ++ /xf0/x90/xad/xaa INSCRIPTIONAL PAHLAVI LETTER KAPH ++ /xf0/x90/xad/xab INSCRIPTIONAL PAHLAVI LETTER LAMEDH ++ /xf0/x90/xad/xac INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH ++ /xf0/x90/xad/xad INSCRIPTIONAL PAHLAVI LETTER NUN ++ /xf0/x90/xad/xae INSCRIPTIONAL PAHLAVI LETTER SAMEKH ++ /xf0/x90/xad/xaf INSCRIPTIONAL PAHLAVI LETTER PE ++ /xf0/x90/xad/xb0 INSCRIPTIONAL PAHLAVI LETTER SADHE ++ /xf0/x90/xad/xb1 INSCRIPTIONAL PAHLAVI LETTER SHIN ++ /xf0/x90/xad/xb2 INSCRIPTIONAL PAHLAVI LETTER TAW ++ /xf0/x90/xad/xb8 INSCRIPTIONAL PAHLAVI NUMBER ONE ++ /xf0/x90/xad/xb9 INSCRIPTIONAL PAHLAVI NUMBER TWO ++ /xf0/x90/xad/xba INSCRIPTIONAL PAHLAVI NUMBER THREE ++ /xf0/x90/xad/xbb INSCRIPTIONAL PAHLAVI NUMBER FOUR ++ /xf0/x90/xad/xbc INSCRIPTIONAL PAHLAVI NUMBER TEN ++ /xf0/x90/xad/xbd INSCRIPTIONAL PAHLAVI NUMBER TWENTY ++ /xf0/x90/xad/xbe INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED ++ /xf0/x90/xad/xbf INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND ++ /xf0/x90/xb0/x80 OLD TURKIC LETTER ORKHON A ++ /xf0/x90/xb0/x81 OLD TURKIC LETTER YENISEI A ++ /xf0/x90/xb0/x82 OLD TURKIC LETTER YENISEI AE ++ /xf0/x90/xb0/x83 OLD TURKIC LETTER ORKHON I ++ /xf0/x90/xb0/x84 OLD TURKIC LETTER YENISEI I ++ /xf0/x90/xb0/x85 OLD TURKIC LETTER YENISEI E ++ /xf0/x90/xb0/x86 OLD TURKIC LETTER ORKHON O ++ /xf0/x90/xb0/x87 OLD TURKIC LETTER ORKHON OE ++ /xf0/x90/xb0/x88 OLD TURKIC LETTER YENISEI OE ++ /xf0/x90/xb0/x89 OLD TURKIC LETTER ORKHON AB ++ /xf0/x90/xb0/x8a OLD TURKIC LETTER YENISEI AB ++ /xf0/x90/xb0/x8b OLD TURKIC LETTER ORKHON AEB ++ /xf0/x90/xb0/x8c OLD TURKIC LETTER YENISEI AEB ++ /xf0/x90/xb0/x8d OLD TURKIC LETTER ORKHON AG ++ /xf0/x90/xb0/x8e OLD TURKIC LETTER YENISEI AG ++ /xf0/x90/xb0/x8f OLD TURKIC LETTER ORKHON AEG ++ /xf0/x90/xb0/x90 OLD TURKIC LETTER YENISEI AEG ++ /xf0/x90/xb0/x91 OLD TURKIC LETTER ORKHON AD ++ /xf0/x90/xb0/x92 OLD TURKIC LETTER YENISEI AD ++ /xf0/x90/xb0/x93 OLD TURKIC LETTER ORKHON AED ++ /xf0/x90/xb0/x94 OLD TURKIC LETTER ORKHON EZ ++ /xf0/x90/xb0/x95 OLD TURKIC LETTER YENISEI EZ ++ /xf0/x90/xb0/x96 OLD TURKIC LETTER ORKHON AY ++ /xf0/x90/xb0/x97 OLD TURKIC LETTER YENISEI AY ++ /xf0/x90/xb0/x98 OLD TURKIC LETTER ORKHON AEY ++ /xf0/x90/xb0/x99 OLD TURKIC LETTER YENISEI AEY ++ /xf0/x90/xb0/x9a OLD TURKIC LETTER ORKHON AEK ++ /xf0/x90/xb0/x9b OLD TURKIC LETTER YENISEI AEK ++ /xf0/x90/xb0/x9c OLD TURKIC LETTER ORKHON OEK ++ /xf0/x90/xb0/x9d OLD TURKIC LETTER YENISEI OEK ++ /xf0/x90/xb0/x9e OLD TURKIC LETTER ORKHON AL ++ /xf0/x90/xb0/x9f OLD TURKIC LETTER YENISEI AL ++ /xf0/x90/xb0/xa0 OLD TURKIC LETTER ORKHON AEL ++ /xf0/x90/xb0/xa1 OLD TURKIC LETTER ORKHON ELT ++ /xf0/x90/xb0/xa2 OLD TURKIC LETTER ORKHON EM ++ /xf0/x90/xb0/xa3 OLD TURKIC LETTER ORKHON AN ++ /xf0/x90/xb0/xa4 OLD TURKIC LETTER ORKHON AEN ++ /xf0/x90/xb0/xa5 OLD TURKIC LETTER YENISEI AEN ++ /xf0/x90/xb0/xa6 OLD TURKIC LETTER ORKHON ENT ++ /xf0/x90/xb0/xa7 OLD TURKIC LETTER YENISEI ENT ++ /xf0/x90/xb0/xa8 OLD TURKIC LETTER ORKHON ENC ++ /xf0/x90/xb0/xa9 OLD TURKIC LETTER YENISEI ENC ++ /xf0/x90/xb0/xaa OLD TURKIC LETTER ORKHON ENY ++ /xf0/x90/xb0/xab OLD TURKIC LETTER YENISEI ENY ++ /xf0/x90/xb0/xac OLD TURKIC LETTER YENISEI ANG ++ /xf0/x90/xb0/xad OLD TURKIC LETTER ORKHON ENG ++ /xf0/x90/xb0/xae OLD TURKIC LETTER YENISEI AENG ++ /xf0/x90/xb0/xaf OLD TURKIC LETTER ORKHON EP ++ /xf0/x90/xb0/xb0 OLD TURKIC LETTER ORKHON OP ++ /xf0/x90/xb0/xb1 OLD TURKIC LETTER ORKHON IC ++ /xf0/x90/xb0/xb2 OLD TURKIC LETTER ORKHON EC ++ /xf0/x90/xb0/xb3 OLD TURKIC LETTER YENISEI EC ++ /xf0/x90/xb0/xb4 OLD TURKIC LETTER ORKHON AQ ++ /xf0/x90/xb0/xb5 OLD TURKIC LETTER YENISEI AQ ++ /xf0/x90/xb0/xb6 OLD TURKIC LETTER ORKHON IQ ++ /xf0/x90/xb0/xb7 OLD TURKIC LETTER YENISEI IQ ++ /xf0/x90/xb0/xb8 OLD TURKIC LETTER ORKHON OQ ++ /xf0/x90/xb0/xb9 OLD TURKIC LETTER YENISEI OQ ++ /xf0/x90/xb0/xba OLD TURKIC LETTER ORKHON AR ++ /xf0/x90/xb0/xbb OLD TURKIC LETTER YENISEI AR ++ /xf0/x90/xb0/xbc OLD TURKIC LETTER ORKHON AER ++ /xf0/x90/xb0/xbd OLD TURKIC LETTER ORKHON AS ++ /xf0/x90/xb0/xbe OLD TURKIC LETTER ORKHON AES ++ /xf0/x90/xb0/xbf OLD TURKIC LETTER ORKHON ASH ++ /xf0/x90/xb1/x80 OLD TURKIC LETTER YENISEI ASH ++ /xf0/x90/xb1/x81 OLD TURKIC LETTER ORKHON ESH ++ /xf0/x90/xb1/x82 OLD TURKIC LETTER YENISEI ESH ++ /xf0/x90/xb1/x83 OLD TURKIC LETTER ORKHON AT ++ /xf0/x90/xb1/x84 OLD TURKIC LETTER YENISEI AT ++ /xf0/x90/xb1/x85 OLD TURKIC LETTER ORKHON AET ++ /xf0/x90/xb1/x86 OLD TURKIC LETTER YENISEI AET ++ /xf0/x90/xb1/x87 OLD TURKIC LETTER ORKHON OT ++ /xf0/x90/xb1/x88 OLD TURKIC LETTER ORKHON BASH ++ /xf0/x90/xb9/xa0 RUMI DIGIT ONE ++ /xf0/x90/xb9/xa1 RUMI DIGIT TWO ++ /xf0/x90/xb9/xa2 RUMI DIGIT THREE ++ /xf0/x90/xb9/xa3 RUMI DIGIT FOUR ++ /xf0/x90/xb9/xa4 RUMI DIGIT FIVE ++ /xf0/x90/xb9/xa5 RUMI DIGIT SIX ++ /xf0/x90/xb9/xa6 RUMI DIGIT SEVEN ++ /xf0/x90/xb9/xa7 RUMI DIGIT EIGHT ++ /xf0/x90/xb9/xa8 RUMI DIGIT NINE ++ /xf0/x90/xb9/xa9 RUMI NUMBER TEN ++ /xf0/x90/xb9/xaa RUMI NUMBER TWENTY ++ /xf0/x90/xb9/xab RUMI NUMBER THIRTY ++ /xf0/x90/xb9/xac RUMI NUMBER FORTY ++ /xf0/x90/xb9/xad RUMI NUMBER FIFTY ++ /xf0/x90/xb9/xae RUMI NUMBER SIXTY ++ /xf0/x90/xb9/xaf RUMI NUMBER SEVENTY ++ /xf0/x90/xb9/xb0 RUMI NUMBER EIGHTY ++ /xf0/x90/xb9/xb1 RUMI NUMBER NINETY ++ /xf0/x90/xb9/xb2 RUMI NUMBER ONE HUNDRED ++ /xf0/x90/xb9/xb3 RUMI NUMBER TWO HUNDRED ++ /xf0/x90/xb9/xb4 RUMI NUMBER THREE HUNDRED ++ /xf0/x90/xb9/xb5 RUMI NUMBER FOUR HUNDRED ++ /xf0/x90/xb9/xb6 RUMI NUMBER FIVE HUNDRED ++ /xf0/x90/xb9/xb7 RUMI NUMBER SIX HUNDRED ++ /xf0/x90/xb9/xb8 RUMI NUMBER SEVEN HUNDRED ++ /xf0/x90/xb9/xb9 RUMI NUMBER EIGHT HUNDRED ++ /xf0/x90/xb9/xba RUMI NUMBER NINE HUNDRED ++ /xf0/x90/xb9/xbb RUMI FRACTION ONE HALF ++ /xf0/x90/xb9/xbc RUMI FRACTION ONE QUARTER ++ /xf0/x90/xb9/xbd RUMI FRACTION ONE THIRD ++ /xf0/x90/xb9/xbe RUMI FRACTION TWO THIRDS ++ /xf0/x91/x80/x80 BRAHMI SIGN CANDRABINDU ++ /xf0/x91/x80/x81 BRAHMI SIGN ANUSVARA ++ /xf0/x91/x80/x82 BRAHMI SIGN VISARGA ++ /xf0/x91/x80/x83 BRAHMI SIGN JIHVAMULIYA ++ /xf0/x91/x80/x84 BRAHMI SIGN UPADHMANIYA ++ /xf0/x91/x80/x85 BRAHMI LETTER A ++ /xf0/x91/x80/x86 BRAHMI LETTER AA ++ /xf0/x91/x80/x87 BRAHMI LETTER I ++ /xf0/x91/x80/x88 BRAHMI LETTER II ++ /xf0/x91/x80/x89 BRAHMI LETTER U ++ /xf0/x91/x80/x8a BRAHMI LETTER UU ++ /xf0/x91/x80/x8b BRAHMI LETTER VOCALIC R ++ /xf0/x91/x80/x8c BRAHMI LETTER VOCALIC RR ++ /xf0/x91/x80/x8d BRAHMI LETTER VOCALIC L ++ /xf0/x91/x80/x8e BRAHMI LETTER VOCALIC LL ++ /xf0/x91/x80/x8f BRAHMI LETTER E ++ /xf0/x91/x80/x90 BRAHMI LETTER AI ++ /xf0/x91/x80/x91 BRAHMI LETTER O ++ /xf0/x91/x80/x92 BRAHMI LETTER AU ++ /xf0/x91/x80/x93 BRAHMI LETTER KA ++ /xf0/x91/x80/x94 BRAHMI LETTER KHA ++ /xf0/x91/x80/x95 BRAHMI LETTER GA ++ /xf0/x91/x80/x96 BRAHMI LETTER GHA ++ /xf0/x91/x80/x97 BRAHMI LETTER NGA ++ /xf0/x91/x80/x98 BRAHMI LETTER CA ++ /xf0/x91/x80/x99 BRAHMI LETTER CHA ++ /xf0/x91/x80/x9a BRAHMI LETTER JA ++ /xf0/x91/x80/x9b BRAHMI LETTER JHA ++ /xf0/x91/x80/x9c BRAHMI LETTER NYA ++ /xf0/x91/x80/x9d BRAHMI LETTER TTA ++ /xf0/x91/x80/x9e BRAHMI LETTER TTHA ++ /xf0/x91/x80/x9f BRAHMI LETTER DDA ++ /xf0/x91/x80/xa0 BRAHMI LETTER DDHA ++ /xf0/x91/x80/xa1 BRAHMI LETTER NNA ++ /xf0/x91/x80/xa2 BRAHMI LETTER TA ++ /xf0/x91/x80/xa3 BRAHMI LETTER THA ++ /xf0/x91/x80/xa4 BRAHMI LETTER DA ++ /xf0/x91/x80/xa5 BRAHMI LETTER DHA ++ /xf0/x91/x80/xa6 BRAHMI LETTER NA ++ /xf0/x91/x80/xa7 BRAHMI LETTER PA ++ /xf0/x91/x80/xa8 BRAHMI LETTER PHA ++ /xf0/x91/x80/xa9 BRAHMI LETTER BA ++ /xf0/x91/x80/xaa BRAHMI LETTER BHA ++ /xf0/x91/x80/xab BRAHMI LETTER MA ++ /xf0/x91/x80/xac BRAHMI LETTER YA ++ /xf0/x91/x80/xad BRAHMI LETTER RA ++ /xf0/x91/x80/xae BRAHMI LETTER LA ++ /xf0/x91/x80/xaf BRAHMI LETTER VA ++ /xf0/x91/x80/xb0 BRAHMI LETTER SHA ++ /xf0/x91/x80/xb1 BRAHMI LETTER SSA ++ /xf0/x91/x80/xb2 BRAHMI LETTER SA ++ /xf0/x91/x80/xb3 BRAHMI LETTER HA ++ /xf0/x91/x80/xb4 BRAHMI LETTER LLA ++ /xf0/x91/x80/xb5 BRAHMI LETTER OLD TAMIL LLLA ++ /xf0/x91/x80/xb6 BRAHMI LETTER OLD TAMIL RRA ++ /xf0/x91/x80/xb7 BRAHMI LETTER OLD TAMIL NNNA ++ /xf0/x91/x80/xb8 BRAHMI VOWEL SIGN AA ++ /xf0/x91/x80/xb9 BRAHMI VOWEL SIGN BHATTIPROLU AA ++ /xf0/x91/x80/xba BRAHMI VOWEL SIGN I ++ /xf0/x91/x80/xbb BRAHMI VOWEL SIGN II ++ /xf0/x91/x80/xbc BRAHMI VOWEL SIGN U ++ /xf0/x91/x80/xbd BRAHMI VOWEL SIGN UU ++ /xf0/x91/x80/xbe BRAHMI VOWEL SIGN VOCALIC R ++ /xf0/x91/x80/xbf BRAHMI VOWEL SIGN VOCALIC RR ++ /xf0/x91/x81/x80 BRAHMI VOWEL SIGN VOCALIC L ++ /xf0/x91/x81/x81 BRAHMI VOWEL SIGN VOCALIC LL ++ /xf0/x91/x81/x82 BRAHMI VOWEL SIGN E ++ /xf0/x91/x81/x83 BRAHMI VOWEL SIGN AI ++ /xf0/x91/x81/x84 BRAHMI VOWEL SIGN O ++ /xf0/x91/x81/x85 BRAHMI VOWEL SIGN AU ++ /xf0/x91/x81/x86 BRAHMI VIRAMA ++ /xf0/x91/x81/x87 BRAHMI DANDA ++ /xf0/x91/x81/x88 BRAHMI DOUBLE DANDA ++ /xf0/x91/x81/x89 BRAHMI PUNCTUATION DOT ++ /xf0/x91/x81/x8a BRAHMI PUNCTUATION DOUBLE DOT ++ /xf0/x91/x81/x8b BRAHMI PUNCTUATION LINE ++ /xf0/x91/x81/x8c BRAHMI PUNCTUATION CRESCENT BAR ++ /xf0/x91/x81/x8d BRAHMI PUNCTUATION LOTUS ++ /xf0/x91/x81/x92 BRAHMI NUMBER ONE ++ /xf0/x91/x81/x93 BRAHMI NUMBER TWO ++ /xf0/x91/x81/x94 BRAHMI NUMBER THREE ++ /xf0/x91/x81/x95 BRAHMI NUMBER FOUR ++ /xf0/x91/x81/x96 BRAHMI NUMBER FIVE ++ /xf0/x91/x81/x97 BRAHMI NUMBER SIX ++ /xf0/x91/x81/x98 BRAHMI NUMBER SEVEN ++ /xf0/x91/x81/x99 BRAHMI NUMBER EIGHT ++ /xf0/x91/x81/x9a BRAHMI NUMBER NINE ++ /xf0/x91/x81/x9b BRAHMI NUMBER TEN ++ /xf0/x91/x81/x9c BRAHMI NUMBER TWENTY ++ /xf0/x91/x81/x9d BRAHMI NUMBER THIRTY ++ /xf0/x91/x81/x9e BRAHMI NUMBER FORTY ++ /xf0/x91/x81/x9f BRAHMI NUMBER FIFTY ++ /xf0/x91/x81/xa0 BRAHMI NUMBER SIXTY ++ /xf0/x91/x81/xa1 BRAHMI NUMBER SEVENTY ++ /xf0/x91/x81/xa2 BRAHMI NUMBER EIGHTY ++ /xf0/x91/x81/xa3 BRAHMI NUMBER NINETY ++ /xf0/x91/x81/xa4 BRAHMI NUMBER ONE HUNDRED ++ /xf0/x91/x81/xa5 BRAHMI NUMBER ONE THOUSAND ++ /xf0/x91/x81/xa6 BRAHMI DIGIT ZERO ++ /xf0/x91/x81/xa7 BRAHMI DIGIT ONE ++ /xf0/x91/x81/xa8 BRAHMI DIGIT TWO ++ /xf0/x91/x81/xa9 BRAHMI DIGIT THREE ++ /xf0/x91/x81/xaa BRAHMI DIGIT FOUR ++ /xf0/x91/x81/xab BRAHMI DIGIT FIVE ++ /xf0/x91/x81/xac BRAHMI DIGIT SIX ++ /xf0/x91/x81/xad BRAHMI DIGIT SEVEN ++ /xf0/x91/x81/xae BRAHMI DIGIT EIGHT ++ /xf0/x91/x81/xaf BRAHMI DIGIT NINE ++ /xf0/x91/x82/x80 KAITHI SIGN CANDRABINDU ++ /xf0/x91/x82/x81 KAITHI SIGN ANUSVARA ++ /xf0/x91/x82/x82 KAITHI SIGN VISARGA ++ /xf0/x91/x82/x83 KAITHI LETTER A ++ /xf0/x91/x82/x84 KAITHI LETTER AA ++ /xf0/x91/x82/x85 KAITHI LETTER I ++ /xf0/x91/x82/x86 KAITHI LETTER II ++ /xf0/x91/x82/x87 KAITHI LETTER U ++ /xf0/x91/x82/x88 KAITHI LETTER UU ++ /xf0/x91/x82/x89 KAITHI LETTER E ++ /xf0/x91/x82/x8a KAITHI LETTER AI ++ /xf0/x91/x82/x8b KAITHI LETTER O ++ /xf0/x91/x82/x8c KAITHI LETTER AU ++ /xf0/x91/x82/x8d KAITHI LETTER KA ++ /xf0/x91/x82/x8e KAITHI LETTER KHA ++ /xf0/x91/x82/x8f KAITHI LETTER GA ++ /xf0/x91/x82/x90 KAITHI LETTER GHA ++ /xf0/x91/x82/x91 KAITHI LETTER NGA ++ /xf0/x91/x82/x92 KAITHI LETTER CA ++ /xf0/x91/x82/x93 KAITHI LETTER CHA ++ /xf0/x91/x82/x94 KAITHI LETTER JA ++ /xf0/x91/x82/x95 KAITHI LETTER JHA ++ /xf0/x91/x82/x96 KAITHI LETTER NYA ++ /xf0/x91/x82/x97 KAITHI LETTER TTA ++ /xf0/x91/x82/x98 KAITHI LETTER TTHA ++ /xf0/x91/x82/x99 KAITHI LETTER DDA ++ /xf0/x91/x82/x9a KAITHI LETTER DDDHA ++ /xf0/x91/x82/x9b KAITHI LETTER DDHA ++ /xf0/x91/x82/x9c KAITHI LETTER RHA ++ /xf0/x91/x82/x9d KAITHI LETTER NNA ++ /xf0/x91/x82/x9e KAITHI LETTER TA ++ /xf0/x91/x82/x9f KAITHI LETTER THA ++ /xf0/x91/x82/xa0 KAITHI LETTER DA ++ /xf0/x91/x82/xa1 KAITHI LETTER DHA ++ /xf0/x91/x82/xa2 KAITHI LETTER NA ++ /xf0/x91/x82/xa3 KAITHI LETTER PA ++ /xf0/x91/x82/xa4 KAITHI LETTER PHA ++ /xf0/x91/x82/xa5 KAITHI LETTER BA ++ /xf0/x91/x82/xa6 KAITHI LETTER BHA ++ /xf0/x91/x82/xa7 KAITHI LETTER MA ++ /xf0/x91/x82/xa8 KAITHI LETTER YA ++ /xf0/x91/x82/xa9 KAITHI LETTER RA ++ /xf0/x91/x82/xaa KAITHI LETTER LA ++ /xf0/x91/x82/xab KAITHI LETTER VA ++ /xf0/x91/x82/xac KAITHI LETTER SHA ++ /xf0/x91/x82/xad KAITHI LETTER SSA ++ /xf0/x91/x82/xae KAITHI LETTER SA ++ /xf0/x91/x82/xaf KAITHI LETTER HA ++ /xf0/x91/x82/xb0 KAITHI VOWEL SIGN AA ++ /xf0/x91/x82/xb1 KAITHI VOWEL SIGN I ++ /xf0/x91/x82/xb2 KAITHI VOWEL SIGN II ++ /xf0/x91/x82/xb3 KAITHI VOWEL SIGN U ++ /xf0/x91/x82/xb4 KAITHI VOWEL SIGN UU ++ /xf0/x91/x82/xb5 KAITHI VOWEL SIGN E ++ /xf0/x91/x82/xb6 KAITHI VOWEL SIGN AI ++ /xf0/x91/x82/xb7 KAITHI VOWEL SIGN O ++ /xf0/x91/x82/xb8 KAITHI VOWEL SIGN AU ++ /xf0/x91/x82/xb9 KAITHI SIGN VIRAMA ++ /xf0/x91/x82/xba KAITHI SIGN NUKTA ++ /xf0/x91/x82/xbb KAITHI ABBREVIATION SIGN ++ /xf0/x91/x82/xbc KAITHI ENUMERATION SIGN ++ /xf0/x91/x82/xbd KAITHI NUMBER SIGN ++ /xf0/x91/x82/xbe KAITHI SECTION MARK ++ /xf0/x91/x82/xbf KAITHI DOUBLE SECTION MARK ++ /xf0/x91/x83/x80 KAITHI DANDA ++ /xf0/x91/x83/x81 KAITHI DOUBLE DANDA + /xf0/x92/x80/x80 CUNEIFORM SIGN A + /xf0/x92/x80/x81 CUNEIFORM SIGN A TIMES A + /xf0/x92/x80/x82 CUNEIFORM SIGN A TIMES BAD +@@ -28370,6 +30022,1648 @@ CHARMAP + /xf0/x92/x91/xb1 CUNEIFORM PUNCTUATION SIGN VERTICAL COLON + /xf0/x92/x91/xb2 CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON + /xf0/x92/x91/xb3 CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON ++ /xf0/x93/x80/x80 EGYPTIAN HIEROGLYPH A001 ++ /xf0/x93/x80/x81 EGYPTIAN HIEROGLYPH A002 ++ /xf0/x93/x80/x82 EGYPTIAN HIEROGLYPH A003 ++ /xf0/x93/x80/x83 EGYPTIAN HIEROGLYPH A004 ++ /xf0/x93/x80/x84 EGYPTIAN HIEROGLYPH A005 ++ /xf0/x93/x80/x85 EGYPTIAN HIEROGLYPH A005A ++ /xf0/x93/x80/x86 EGYPTIAN HIEROGLYPH A006 ++ /xf0/x93/x80/x87 EGYPTIAN HIEROGLYPH A006A ++ /xf0/x93/x80/x88 EGYPTIAN HIEROGLYPH A006B ++ /xf0/x93/x80/x89 EGYPTIAN HIEROGLYPH A007 ++ /xf0/x93/x80/x8a EGYPTIAN HIEROGLYPH A008 ++ /xf0/x93/x80/x8b EGYPTIAN HIEROGLYPH A009 ++ /xf0/x93/x80/x8c EGYPTIAN HIEROGLYPH A010 ++ /xf0/x93/x80/x8d EGYPTIAN HIEROGLYPH A011 ++ /xf0/x93/x80/x8e EGYPTIAN HIEROGLYPH A012 ++ /xf0/x93/x80/x8f EGYPTIAN HIEROGLYPH A013 ++ /xf0/x93/x80/x90 EGYPTIAN HIEROGLYPH A014 ++ /xf0/x93/x80/x91 EGYPTIAN HIEROGLYPH A014A ++ /xf0/x93/x80/x92 EGYPTIAN HIEROGLYPH A015 ++ /xf0/x93/x80/x93 EGYPTIAN HIEROGLYPH A016 ++ /xf0/x93/x80/x94 EGYPTIAN HIEROGLYPH A017 ++ /xf0/x93/x80/x95 EGYPTIAN HIEROGLYPH A017A ++ /xf0/x93/x80/x96 EGYPTIAN HIEROGLYPH A018 ++ /xf0/x93/x80/x97 EGYPTIAN HIEROGLYPH A019 ++ /xf0/x93/x80/x98 EGYPTIAN HIEROGLYPH A020 ++ /xf0/x93/x80/x99 EGYPTIAN HIEROGLYPH A021 ++ /xf0/x93/x80/x9a EGYPTIAN HIEROGLYPH A022 ++ /xf0/x93/x80/x9b EGYPTIAN HIEROGLYPH A023 ++ /xf0/x93/x80/x9c EGYPTIAN HIEROGLYPH A024 ++ /xf0/x93/x80/x9d EGYPTIAN HIEROGLYPH A025 ++ /xf0/x93/x80/x9e EGYPTIAN HIEROGLYPH A026 ++ /xf0/x93/x80/x9f EGYPTIAN HIEROGLYPH A027 ++ /xf0/x93/x80/xa0 EGYPTIAN HIEROGLYPH A028 ++ /xf0/x93/x80/xa1 EGYPTIAN HIEROGLYPH A029 ++ /xf0/x93/x80/xa2 EGYPTIAN HIEROGLYPH A030 ++ /xf0/x93/x80/xa3 EGYPTIAN HIEROGLYPH A031 ++ /xf0/x93/x80/xa4 EGYPTIAN HIEROGLYPH A032 ++ /xf0/x93/x80/xa5 EGYPTIAN HIEROGLYPH A032A ++ /xf0/x93/x80/xa6 EGYPTIAN HIEROGLYPH A033 ++ /xf0/x93/x80/xa7 EGYPTIAN HIEROGLYPH A034 ++ /xf0/x93/x80/xa8 EGYPTIAN HIEROGLYPH A035 ++ /xf0/x93/x80/xa9 EGYPTIAN HIEROGLYPH A036 ++ /xf0/x93/x80/xaa EGYPTIAN HIEROGLYPH A037 ++ /xf0/x93/x80/xab EGYPTIAN HIEROGLYPH A038 ++ /xf0/x93/x80/xac EGYPTIAN HIEROGLYPH A039 ++ /xf0/x93/x80/xad EGYPTIAN HIEROGLYPH A040 ++ /xf0/x93/x80/xae EGYPTIAN HIEROGLYPH A040A ++ /xf0/x93/x80/xaf EGYPTIAN HIEROGLYPH A041 ++ /xf0/x93/x80/xb0 EGYPTIAN HIEROGLYPH A042 ++ /xf0/x93/x80/xb1 EGYPTIAN HIEROGLYPH A042A ++ /xf0/x93/x80/xb2 EGYPTIAN HIEROGLYPH A043 ++ /xf0/x93/x80/xb3 EGYPTIAN HIEROGLYPH A043A ++ /xf0/x93/x80/xb4 EGYPTIAN HIEROGLYPH A044 ++ /xf0/x93/x80/xb5 EGYPTIAN HIEROGLYPH A045 ++ /xf0/x93/x80/xb6 EGYPTIAN HIEROGLYPH A045A ++ /xf0/x93/x80/xb7 EGYPTIAN HIEROGLYPH A046 ++ /xf0/x93/x80/xb8 EGYPTIAN HIEROGLYPH A047 ++ /xf0/x93/x80/xb9 EGYPTIAN HIEROGLYPH A048 ++ /xf0/x93/x80/xba EGYPTIAN HIEROGLYPH A049 ++ /xf0/x93/x80/xbb EGYPTIAN HIEROGLYPH A050 ++ /xf0/x93/x80/xbc EGYPTIAN HIEROGLYPH A051 ++ /xf0/x93/x80/xbd EGYPTIAN HIEROGLYPH A052 ++ /xf0/x93/x80/xbe EGYPTIAN HIEROGLYPH A053 ++ /xf0/x93/x80/xbf EGYPTIAN HIEROGLYPH A054 ++ /xf0/x93/x81/x80 EGYPTIAN HIEROGLYPH A055 ++ /xf0/x93/x81/x81 EGYPTIAN HIEROGLYPH A056 ++ /xf0/x93/x81/x82 EGYPTIAN HIEROGLYPH A057 ++ /xf0/x93/x81/x83 EGYPTIAN HIEROGLYPH A058 ++ /xf0/x93/x81/x84 EGYPTIAN HIEROGLYPH A059 ++ /xf0/x93/x81/x85 EGYPTIAN HIEROGLYPH A060 ++ /xf0/x93/x81/x86 EGYPTIAN HIEROGLYPH A061 ++ /xf0/x93/x81/x87 EGYPTIAN HIEROGLYPH A062 ++ /xf0/x93/x81/x88 EGYPTIAN HIEROGLYPH A063 ++ /xf0/x93/x81/x89 EGYPTIAN HIEROGLYPH A064 ++ /xf0/x93/x81/x8a EGYPTIAN HIEROGLYPH A065 ++ /xf0/x93/x81/x8b EGYPTIAN HIEROGLYPH A066 ++ /xf0/x93/x81/x8c EGYPTIAN HIEROGLYPH A067 ++ /xf0/x93/x81/x8d EGYPTIAN HIEROGLYPH A068 ++ /xf0/x93/x81/x8e EGYPTIAN HIEROGLYPH A069 ++ /xf0/x93/x81/x8f EGYPTIAN HIEROGLYPH A070 ++ /xf0/x93/x81/x90 EGYPTIAN HIEROGLYPH B001 ++ /xf0/x93/x81/x91 EGYPTIAN HIEROGLYPH B002 ++ /xf0/x93/x81/x92 EGYPTIAN HIEROGLYPH B003 ++ /xf0/x93/x81/x93 EGYPTIAN HIEROGLYPH B004 ++ /xf0/x93/x81/x94 EGYPTIAN HIEROGLYPH B005 ++ /xf0/x93/x81/x95 EGYPTIAN HIEROGLYPH B005A ++ /xf0/x93/x81/x96 EGYPTIAN HIEROGLYPH B006 ++ /xf0/x93/x81/x97 EGYPTIAN HIEROGLYPH B007 ++ /xf0/x93/x81/x98 EGYPTIAN HIEROGLYPH B008 ++ /xf0/x93/x81/x99 EGYPTIAN HIEROGLYPH B009 ++ /xf0/x93/x81/x9a EGYPTIAN HIEROGLYPH C001 ++ /xf0/x93/x81/x9b EGYPTIAN HIEROGLYPH C002 ++ /xf0/x93/x81/x9c EGYPTIAN HIEROGLYPH C002A ++ /xf0/x93/x81/x9d EGYPTIAN HIEROGLYPH C002B ++ /xf0/x93/x81/x9e EGYPTIAN HIEROGLYPH C002C ++ /xf0/x93/x81/x9f EGYPTIAN HIEROGLYPH C003 ++ /xf0/x93/x81/xa0 EGYPTIAN HIEROGLYPH C004 ++ /xf0/x93/x81/xa1 EGYPTIAN HIEROGLYPH C005 ++ /xf0/x93/x81/xa2 EGYPTIAN HIEROGLYPH C006 ++ /xf0/x93/x81/xa3 EGYPTIAN HIEROGLYPH C007 ++ /xf0/x93/x81/xa4 EGYPTIAN HIEROGLYPH C008 ++ /xf0/x93/x81/xa5 EGYPTIAN HIEROGLYPH C009 ++ /xf0/x93/x81/xa6 EGYPTIAN HIEROGLYPH C010 ++ /xf0/x93/x81/xa7 EGYPTIAN HIEROGLYPH C010A ++ /xf0/x93/x81/xa8 EGYPTIAN HIEROGLYPH C011 ++ /xf0/x93/x81/xa9 EGYPTIAN HIEROGLYPH C012 ++ /xf0/x93/x81/xaa EGYPTIAN HIEROGLYPH C013 ++ /xf0/x93/x81/xab EGYPTIAN HIEROGLYPH C014 ++ /xf0/x93/x81/xac EGYPTIAN HIEROGLYPH C015 ++ /xf0/x93/x81/xad EGYPTIAN HIEROGLYPH C016 ++ /xf0/x93/x81/xae EGYPTIAN HIEROGLYPH C017 ++ /xf0/x93/x81/xaf EGYPTIAN HIEROGLYPH C018 ++ /xf0/x93/x81/xb0 EGYPTIAN HIEROGLYPH C019 ++ /xf0/x93/x81/xb1 EGYPTIAN HIEROGLYPH C020 ++ /xf0/x93/x81/xb2 EGYPTIAN HIEROGLYPH C021 ++ /xf0/x93/x81/xb3 EGYPTIAN HIEROGLYPH C022 ++ /xf0/x93/x81/xb4 EGYPTIAN HIEROGLYPH C023 ++ /xf0/x93/x81/xb5 EGYPTIAN HIEROGLYPH C024 ++ /xf0/x93/x81/xb6 EGYPTIAN HIEROGLYPH D001 ++ /xf0/x93/x81/xb7 EGYPTIAN HIEROGLYPH D002 ++ /xf0/x93/x81/xb8 EGYPTIAN HIEROGLYPH D003 ++ /xf0/x93/x81/xb9 EGYPTIAN HIEROGLYPH D004 ++ /xf0/x93/x81/xba EGYPTIAN HIEROGLYPH D005 ++ /xf0/x93/x81/xbb EGYPTIAN HIEROGLYPH D006 ++ /xf0/x93/x81/xbc EGYPTIAN HIEROGLYPH D007 ++ /xf0/x93/x81/xbd EGYPTIAN HIEROGLYPH D008 ++ /xf0/x93/x81/xbe EGYPTIAN HIEROGLYPH D008A ++ /xf0/x93/x81/xbf EGYPTIAN HIEROGLYPH D009 ++ /xf0/x93/x82/x80 EGYPTIAN HIEROGLYPH D010 ++ /xf0/x93/x82/x81 EGYPTIAN HIEROGLYPH D011 ++ /xf0/x93/x82/x82 EGYPTIAN HIEROGLYPH D012 ++ /xf0/x93/x82/x83 EGYPTIAN HIEROGLYPH D013 ++ /xf0/x93/x82/x84 EGYPTIAN HIEROGLYPH D014 ++ /xf0/x93/x82/x85 EGYPTIAN HIEROGLYPH D015 ++ /xf0/x93/x82/x86 EGYPTIAN HIEROGLYPH D016 ++ /xf0/x93/x82/x87 EGYPTIAN HIEROGLYPH D017 ++ /xf0/x93/x82/x88 EGYPTIAN HIEROGLYPH D018 ++ /xf0/x93/x82/x89 EGYPTIAN HIEROGLYPH D019 ++ /xf0/x93/x82/x8a EGYPTIAN HIEROGLYPH D020 ++ /xf0/x93/x82/x8b EGYPTIAN HIEROGLYPH D021 ++ /xf0/x93/x82/x8c EGYPTIAN HIEROGLYPH D022 ++ /xf0/x93/x82/x8d EGYPTIAN HIEROGLYPH D023 ++ /xf0/x93/x82/x8e EGYPTIAN HIEROGLYPH D024 ++ /xf0/x93/x82/x8f EGYPTIAN HIEROGLYPH D025 ++ /xf0/x93/x82/x90 EGYPTIAN HIEROGLYPH D026 ++ /xf0/x93/x82/x91 EGYPTIAN HIEROGLYPH D027 ++ /xf0/x93/x82/x92 EGYPTIAN HIEROGLYPH D027A ++ /xf0/x93/x82/x93 EGYPTIAN HIEROGLYPH D028 ++ /xf0/x93/x82/x94 EGYPTIAN HIEROGLYPH D029 ++ /xf0/x93/x82/x95 EGYPTIAN HIEROGLYPH D030 ++ /xf0/x93/x82/x96 EGYPTIAN HIEROGLYPH D031 ++ /xf0/x93/x82/x97 EGYPTIAN HIEROGLYPH D031A ++ /xf0/x93/x82/x98 EGYPTIAN HIEROGLYPH D032 ++ /xf0/x93/x82/x99 EGYPTIAN HIEROGLYPH D033 ++ /xf0/x93/x82/x9a EGYPTIAN HIEROGLYPH D034 ++ /xf0/x93/x82/x9b EGYPTIAN HIEROGLYPH D034A ++ /xf0/x93/x82/x9c EGYPTIAN HIEROGLYPH D035 ++ /xf0/x93/x82/x9d EGYPTIAN HIEROGLYPH D036 ++ /xf0/x93/x82/x9e EGYPTIAN HIEROGLYPH D037 ++ /xf0/x93/x82/x9f EGYPTIAN HIEROGLYPH D038 ++ /xf0/x93/x82/xa0 EGYPTIAN HIEROGLYPH D039 ++ /xf0/x93/x82/xa1 EGYPTIAN HIEROGLYPH D040 ++ /xf0/x93/x82/xa2 EGYPTIAN HIEROGLYPH D041 ++ /xf0/x93/x82/xa3 EGYPTIAN HIEROGLYPH D042 ++ /xf0/x93/x82/xa4 EGYPTIAN HIEROGLYPH D043 ++ /xf0/x93/x82/xa5 EGYPTIAN HIEROGLYPH D044 ++ /xf0/x93/x82/xa6 EGYPTIAN HIEROGLYPH D045 ++ /xf0/x93/x82/xa7 EGYPTIAN HIEROGLYPH D046 ++ /xf0/x93/x82/xa8 EGYPTIAN HIEROGLYPH D046A ++ /xf0/x93/x82/xa9 EGYPTIAN HIEROGLYPH D047 ++ /xf0/x93/x82/xaa EGYPTIAN HIEROGLYPH D048 ++ /xf0/x93/x82/xab EGYPTIAN HIEROGLYPH D048A ++ /xf0/x93/x82/xac EGYPTIAN HIEROGLYPH D049 ++ /xf0/x93/x82/xad EGYPTIAN HIEROGLYPH D050 ++ /xf0/x93/x82/xae EGYPTIAN HIEROGLYPH D050A ++ /xf0/x93/x82/xaf EGYPTIAN HIEROGLYPH D050B ++ /xf0/x93/x82/xb0 EGYPTIAN HIEROGLYPH D050C ++ /xf0/x93/x82/xb1 EGYPTIAN HIEROGLYPH D050D ++ /xf0/x93/x82/xb2 EGYPTIAN HIEROGLYPH D050E ++ /xf0/x93/x82/xb3 EGYPTIAN HIEROGLYPH D050F ++ /xf0/x93/x82/xb4 EGYPTIAN HIEROGLYPH D050G ++ /xf0/x93/x82/xb5 EGYPTIAN HIEROGLYPH D050H ++ /xf0/x93/x82/xb6 EGYPTIAN HIEROGLYPH D050I ++ /xf0/x93/x82/xb7 EGYPTIAN HIEROGLYPH D051 ++ /xf0/x93/x82/xb8 EGYPTIAN HIEROGLYPH D052 ++ /xf0/x93/x82/xb9 EGYPTIAN HIEROGLYPH D052A ++ /xf0/x93/x82/xba EGYPTIAN HIEROGLYPH D053 ++ /xf0/x93/x82/xbb EGYPTIAN HIEROGLYPH D054 ++ /xf0/x93/x82/xbc EGYPTIAN HIEROGLYPH D054A ++ /xf0/x93/x82/xbd EGYPTIAN HIEROGLYPH D055 ++ /xf0/x93/x82/xbe EGYPTIAN HIEROGLYPH D056 ++ /xf0/x93/x82/xbf EGYPTIAN HIEROGLYPH D057 ++ /xf0/x93/x83/x80 EGYPTIAN HIEROGLYPH D058 ++ /xf0/x93/x83/x81 EGYPTIAN HIEROGLYPH D059 ++ /xf0/x93/x83/x82 EGYPTIAN HIEROGLYPH D060 ++ /xf0/x93/x83/x83 EGYPTIAN HIEROGLYPH D061 ++ /xf0/x93/x83/x84 EGYPTIAN HIEROGLYPH D062 ++ /xf0/x93/x83/x85 EGYPTIAN HIEROGLYPH D063 ++ /xf0/x93/x83/x86 EGYPTIAN HIEROGLYPH D064 ++ /xf0/x93/x83/x87 EGYPTIAN HIEROGLYPH D065 ++ /xf0/x93/x83/x88 EGYPTIAN HIEROGLYPH D066 ++ /xf0/x93/x83/x89 EGYPTIAN HIEROGLYPH D067 ++ /xf0/x93/x83/x8a EGYPTIAN HIEROGLYPH D067A ++ /xf0/x93/x83/x8b EGYPTIAN HIEROGLYPH D067B ++ /xf0/x93/x83/x8c EGYPTIAN HIEROGLYPH D067C ++ /xf0/x93/x83/x8d EGYPTIAN HIEROGLYPH D067D ++ /xf0/x93/x83/x8e EGYPTIAN HIEROGLYPH D067E ++ /xf0/x93/x83/x8f EGYPTIAN HIEROGLYPH D067F ++ /xf0/x93/x83/x90 EGYPTIAN HIEROGLYPH D067G ++ /xf0/x93/x83/x91 EGYPTIAN HIEROGLYPH D067H ++ /xf0/x93/x83/x92 EGYPTIAN HIEROGLYPH E001 ++ /xf0/x93/x83/x93 EGYPTIAN HIEROGLYPH E002 ++ /xf0/x93/x83/x94 EGYPTIAN HIEROGLYPH E003 ++ /xf0/x93/x83/x95 EGYPTIAN HIEROGLYPH E004 ++ /xf0/x93/x83/x96 EGYPTIAN HIEROGLYPH E005 ++ /xf0/x93/x83/x97 EGYPTIAN HIEROGLYPH E006 ++ /xf0/x93/x83/x98 EGYPTIAN HIEROGLYPH E007 ++ /xf0/x93/x83/x99 EGYPTIAN HIEROGLYPH E008 ++ /xf0/x93/x83/x9a EGYPTIAN HIEROGLYPH E008A ++ /xf0/x93/x83/x9b EGYPTIAN HIEROGLYPH E009 ++ /xf0/x93/x83/x9c EGYPTIAN HIEROGLYPH E009A ++ /xf0/x93/x83/x9d EGYPTIAN HIEROGLYPH E010 ++ /xf0/x93/x83/x9e EGYPTIAN HIEROGLYPH E011 ++ /xf0/x93/x83/x9f EGYPTIAN HIEROGLYPH E012 ++ /xf0/x93/x83/xa0 EGYPTIAN HIEROGLYPH E013 ++ /xf0/x93/x83/xa1 EGYPTIAN HIEROGLYPH E014 ++ /xf0/x93/x83/xa2 EGYPTIAN HIEROGLYPH E015 ++ /xf0/x93/x83/xa3 EGYPTIAN HIEROGLYPH E016 ++ /xf0/x93/x83/xa4 EGYPTIAN HIEROGLYPH E016A ++ /xf0/x93/x83/xa5 EGYPTIAN HIEROGLYPH E017 ++ /xf0/x93/x83/xa6 EGYPTIAN HIEROGLYPH E017A ++ /xf0/x93/x83/xa7 EGYPTIAN HIEROGLYPH E018 ++ /xf0/x93/x83/xa8 EGYPTIAN HIEROGLYPH E019 ++ /xf0/x93/x83/xa9 EGYPTIAN HIEROGLYPH E020 ++ /xf0/x93/x83/xaa EGYPTIAN HIEROGLYPH E020A ++ /xf0/x93/x83/xab EGYPTIAN HIEROGLYPH E021 ++ /xf0/x93/x83/xac EGYPTIAN HIEROGLYPH E022 ++ /xf0/x93/x83/xad EGYPTIAN HIEROGLYPH E023 ++ /xf0/x93/x83/xae EGYPTIAN HIEROGLYPH E024 ++ /xf0/x93/x83/xaf EGYPTIAN HIEROGLYPH E025 ++ /xf0/x93/x83/xb0 EGYPTIAN HIEROGLYPH E026 ++ /xf0/x93/x83/xb1 EGYPTIAN HIEROGLYPH E027 ++ /xf0/x93/x83/xb2 EGYPTIAN HIEROGLYPH E028 ++ /xf0/x93/x83/xb3 EGYPTIAN HIEROGLYPH E028A ++ /xf0/x93/x83/xb4 EGYPTIAN HIEROGLYPH E029 ++ /xf0/x93/x83/xb5 EGYPTIAN HIEROGLYPH E030 ++ /xf0/x93/x83/xb6 EGYPTIAN HIEROGLYPH E031 ++ /xf0/x93/x83/xb7 EGYPTIAN HIEROGLYPH E032 ++ /xf0/x93/x83/xb8 EGYPTIAN HIEROGLYPH E033 ++ /xf0/x93/x83/xb9 EGYPTIAN HIEROGLYPH E034 ++ /xf0/x93/x83/xba EGYPTIAN HIEROGLYPH E034A ++ /xf0/x93/x83/xbb EGYPTIAN HIEROGLYPH E036 ++ /xf0/x93/x83/xbc EGYPTIAN HIEROGLYPH E037 ++ /xf0/x93/x83/xbd EGYPTIAN HIEROGLYPH E038 ++ /xf0/x93/x83/xbe EGYPTIAN HIEROGLYPH F001 ++ /xf0/x93/x83/xbf EGYPTIAN HIEROGLYPH F001A ++ /xf0/x93/x84/x80 EGYPTIAN HIEROGLYPH F002 ++ /xf0/x93/x84/x81 EGYPTIAN HIEROGLYPH F003 ++ /xf0/x93/x84/x82 EGYPTIAN HIEROGLYPH F004 ++ /xf0/x93/x84/x83 EGYPTIAN HIEROGLYPH F005 ++ /xf0/x93/x84/x84 EGYPTIAN HIEROGLYPH F006 ++ /xf0/x93/x84/x85 EGYPTIAN HIEROGLYPH F007 ++ /xf0/x93/x84/x86 EGYPTIAN HIEROGLYPH F008 ++ /xf0/x93/x84/x87 EGYPTIAN HIEROGLYPH F009 ++ /xf0/x93/x84/x88 EGYPTIAN HIEROGLYPH F010 ++ /xf0/x93/x84/x89 EGYPTIAN HIEROGLYPH F011 ++ /xf0/x93/x84/x8a EGYPTIAN HIEROGLYPH F012 ++ /xf0/x93/x84/x8b EGYPTIAN HIEROGLYPH F013 ++ /xf0/x93/x84/x8c EGYPTIAN HIEROGLYPH F013A ++ /xf0/x93/x84/x8d EGYPTIAN HIEROGLYPH F014 ++ /xf0/x93/x84/x8e EGYPTIAN HIEROGLYPH F015 ++ /xf0/x93/x84/x8f EGYPTIAN HIEROGLYPH F016 ++ /xf0/x93/x84/x90 EGYPTIAN HIEROGLYPH F017 ++ /xf0/x93/x84/x91 EGYPTIAN HIEROGLYPH F018 ++ /xf0/x93/x84/x92 EGYPTIAN HIEROGLYPH F019 ++ /xf0/x93/x84/x93 EGYPTIAN HIEROGLYPH F020 ++ /xf0/x93/x84/x94 EGYPTIAN HIEROGLYPH F021 ++ /xf0/x93/x84/x95 EGYPTIAN HIEROGLYPH F021A ++ /xf0/x93/x84/x96 EGYPTIAN HIEROGLYPH F022 ++ /xf0/x93/x84/x97 EGYPTIAN HIEROGLYPH F023 ++ /xf0/x93/x84/x98 EGYPTIAN HIEROGLYPH F024 ++ /xf0/x93/x84/x99 EGYPTIAN HIEROGLYPH F025 ++ /xf0/x93/x84/x9a EGYPTIAN HIEROGLYPH F026 ++ /xf0/x93/x84/x9b EGYPTIAN HIEROGLYPH F027 ++ /xf0/x93/x84/x9c EGYPTIAN HIEROGLYPH F028 ++ /xf0/x93/x84/x9d EGYPTIAN HIEROGLYPH F029 ++ /xf0/x93/x84/x9e EGYPTIAN HIEROGLYPH F030 ++ /xf0/x93/x84/x9f EGYPTIAN HIEROGLYPH F031 ++ /xf0/x93/x84/xa0 EGYPTIAN HIEROGLYPH F031A ++ /xf0/x93/x84/xa1 EGYPTIAN HIEROGLYPH F032 ++ /xf0/x93/x84/xa2 EGYPTIAN HIEROGLYPH F033 ++ /xf0/x93/x84/xa3 EGYPTIAN HIEROGLYPH F034 ++ /xf0/x93/x84/xa4 EGYPTIAN HIEROGLYPH F035 ++ /xf0/x93/x84/xa5 EGYPTIAN HIEROGLYPH F036 ++ /xf0/x93/x84/xa6 EGYPTIAN HIEROGLYPH F037 ++ /xf0/x93/x84/xa7 EGYPTIAN HIEROGLYPH F037A ++ /xf0/x93/x84/xa8 EGYPTIAN HIEROGLYPH F038 ++ /xf0/x93/x84/xa9 EGYPTIAN HIEROGLYPH F038A ++ /xf0/x93/x84/xaa EGYPTIAN HIEROGLYPH F039 ++ /xf0/x93/x84/xab EGYPTIAN HIEROGLYPH F040 ++ /xf0/x93/x84/xac EGYPTIAN HIEROGLYPH F041 ++ /xf0/x93/x84/xad EGYPTIAN HIEROGLYPH F042 ++ /xf0/x93/x84/xae EGYPTIAN HIEROGLYPH F043 ++ /xf0/x93/x84/xaf EGYPTIAN HIEROGLYPH F044 ++ /xf0/x93/x84/xb0 EGYPTIAN HIEROGLYPH F045 ++ /xf0/x93/x84/xb1 EGYPTIAN HIEROGLYPH F045A ++ /xf0/x93/x84/xb2 EGYPTIAN HIEROGLYPH F046 ++ /xf0/x93/x84/xb3 EGYPTIAN HIEROGLYPH F046A ++ /xf0/x93/x84/xb4 EGYPTIAN HIEROGLYPH F047 ++ /xf0/x93/x84/xb5 EGYPTIAN HIEROGLYPH F047A ++ /xf0/x93/x84/xb6 EGYPTIAN HIEROGLYPH F048 ++ /xf0/x93/x84/xb7 EGYPTIAN HIEROGLYPH F049 ++ /xf0/x93/x84/xb8 EGYPTIAN HIEROGLYPH F050 ++ /xf0/x93/x84/xb9 EGYPTIAN HIEROGLYPH F051 ++ /xf0/x93/x84/xba EGYPTIAN HIEROGLYPH F051A ++ /xf0/x93/x84/xbb EGYPTIAN HIEROGLYPH F051B ++ /xf0/x93/x84/xbc EGYPTIAN HIEROGLYPH F051C ++ /xf0/x93/x84/xbd EGYPTIAN HIEROGLYPH F052 ++ /xf0/x93/x84/xbe EGYPTIAN HIEROGLYPH F053 ++ /xf0/x93/x84/xbf EGYPTIAN HIEROGLYPH G001 ++ /xf0/x93/x85/x80 EGYPTIAN HIEROGLYPH G002 ++ /xf0/x93/x85/x81 EGYPTIAN HIEROGLYPH G003 ++ /xf0/x93/x85/x82 EGYPTIAN HIEROGLYPH G004 ++ /xf0/x93/x85/x83 EGYPTIAN HIEROGLYPH G005 ++ /xf0/x93/x85/x84 EGYPTIAN HIEROGLYPH G006 ++ /xf0/x93/x85/x85 EGYPTIAN HIEROGLYPH G006A ++ /xf0/x93/x85/x86 EGYPTIAN HIEROGLYPH G007 ++ /xf0/x93/x85/x87 EGYPTIAN HIEROGLYPH G007A ++ /xf0/x93/x85/x88 EGYPTIAN HIEROGLYPH G007B ++ /xf0/x93/x85/x89 EGYPTIAN HIEROGLYPH G008 ++ /xf0/x93/x85/x8a EGYPTIAN HIEROGLYPH G009 ++ /xf0/x93/x85/x8b EGYPTIAN HIEROGLYPH G010 ++ /xf0/x93/x85/x8c EGYPTIAN HIEROGLYPH G011 ++ /xf0/x93/x85/x8d EGYPTIAN HIEROGLYPH G011A ++ /xf0/x93/x85/x8e EGYPTIAN HIEROGLYPH G012 ++ /xf0/x93/x85/x8f EGYPTIAN HIEROGLYPH G013 ++ /xf0/x93/x85/x90 EGYPTIAN HIEROGLYPH G014 ++ /xf0/x93/x85/x91 EGYPTIAN HIEROGLYPH G015 ++ /xf0/x93/x85/x92 EGYPTIAN HIEROGLYPH G016 ++ /xf0/x93/x85/x93 EGYPTIAN HIEROGLYPH G017 ++ /xf0/x93/x85/x94 EGYPTIAN HIEROGLYPH G018 ++ /xf0/x93/x85/x95 EGYPTIAN HIEROGLYPH G019 ++ /xf0/x93/x85/x96 EGYPTIAN HIEROGLYPH G020 ++ /xf0/x93/x85/x97 EGYPTIAN HIEROGLYPH G020A ++ /xf0/x93/x85/x98 EGYPTIAN HIEROGLYPH G021 ++ /xf0/x93/x85/x99 EGYPTIAN HIEROGLYPH G022 ++ /xf0/x93/x85/x9a EGYPTIAN HIEROGLYPH G023 ++ /xf0/x93/x85/x9b EGYPTIAN HIEROGLYPH G024 ++ /xf0/x93/x85/x9c EGYPTIAN HIEROGLYPH G025 ++ /xf0/x93/x85/x9d EGYPTIAN HIEROGLYPH G026 ++ /xf0/x93/x85/x9e EGYPTIAN HIEROGLYPH G026A ++ /xf0/x93/x85/x9f EGYPTIAN HIEROGLYPH G027 ++ /xf0/x93/x85/xa0 EGYPTIAN HIEROGLYPH G028 ++ /xf0/x93/x85/xa1 EGYPTIAN HIEROGLYPH G029 ++ /xf0/x93/x85/xa2 EGYPTIAN HIEROGLYPH G030 ++ /xf0/x93/x85/xa3 EGYPTIAN HIEROGLYPH G031 ++ /xf0/x93/x85/xa4 EGYPTIAN HIEROGLYPH G032 ++ /xf0/x93/x85/xa5 EGYPTIAN HIEROGLYPH G033 ++ /xf0/x93/x85/xa6 EGYPTIAN HIEROGLYPH G034 ++ /xf0/x93/x85/xa7 EGYPTIAN HIEROGLYPH G035 ++ /xf0/x93/x85/xa8 EGYPTIAN HIEROGLYPH G036 ++ /xf0/x93/x85/xa9 EGYPTIAN HIEROGLYPH G036A ++ /xf0/x93/x85/xaa EGYPTIAN HIEROGLYPH G037 ++ /xf0/x93/x85/xab EGYPTIAN HIEROGLYPH G037A ++ /xf0/x93/x85/xac EGYPTIAN HIEROGLYPH G038 ++ /xf0/x93/x85/xad EGYPTIAN HIEROGLYPH G039 ++ /xf0/x93/x85/xae EGYPTIAN HIEROGLYPH G040 ++ /xf0/x93/x85/xaf EGYPTIAN HIEROGLYPH G041 ++ /xf0/x93/x85/xb0 EGYPTIAN HIEROGLYPH G042 ++ /xf0/x93/x85/xb1 EGYPTIAN HIEROGLYPH G043 ++ /xf0/x93/x85/xb2 EGYPTIAN HIEROGLYPH G043A ++ /xf0/x93/x85/xb3 EGYPTIAN HIEROGLYPH G044 ++ /xf0/x93/x85/xb4 EGYPTIAN HIEROGLYPH G045 ++ /xf0/x93/x85/xb5 EGYPTIAN HIEROGLYPH G045A ++ /xf0/x93/x85/xb6 EGYPTIAN HIEROGLYPH G046 ++ /xf0/x93/x85/xb7 EGYPTIAN HIEROGLYPH G047 ++ /xf0/x93/x85/xb8 EGYPTIAN HIEROGLYPH G048 ++ /xf0/x93/x85/xb9 EGYPTIAN HIEROGLYPH G049 ++ /xf0/x93/x85/xba EGYPTIAN HIEROGLYPH G050 ++ /xf0/x93/x85/xbb EGYPTIAN HIEROGLYPH G051 ++ /xf0/x93/x85/xbc EGYPTIAN HIEROGLYPH G052 ++ /xf0/x93/x85/xbd EGYPTIAN HIEROGLYPH G053 ++ /xf0/x93/x85/xbe EGYPTIAN HIEROGLYPH G054 ++ /xf0/x93/x85/xbf EGYPTIAN HIEROGLYPH H001 ++ /xf0/x93/x86/x80 EGYPTIAN HIEROGLYPH H002 ++ /xf0/x93/x86/x81 EGYPTIAN HIEROGLYPH H003 ++ /xf0/x93/x86/x82 EGYPTIAN HIEROGLYPH H004 ++ /xf0/x93/x86/x83 EGYPTIAN HIEROGLYPH H005 ++ /xf0/x93/x86/x84 EGYPTIAN HIEROGLYPH H006 ++ /xf0/x93/x86/x85 EGYPTIAN HIEROGLYPH H006A ++ /xf0/x93/x86/x86 EGYPTIAN HIEROGLYPH H007 ++ /xf0/x93/x86/x87 EGYPTIAN HIEROGLYPH H008 ++ /xf0/x93/x86/x88 EGYPTIAN HIEROGLYPH I001 ++ /xf0/x93/x86/x89 EGYPTIAN HIEROGLYPH I002 ++ /xf0/x93/x86/x8a EGYPTIAN HIEROGLYPH I003 ++ /xf0/x93/x86/x8b EGYPTIAN HIEROGLYPH I004 ++ /xf0/x93/x86/x8c EGYPTIAN HIEROGLYPH I005 ++ /xf0/x93/x86/x8d EGYPTIAN HIEROGLYPH I005A ++ /xf0/x93/x86/x8e EGYPTIAN HIEROGLYPH I006 ++ /xf0/x93/x86/x8f EGYPTIAN HIEROGLYPH I007 ++ /xf0/x93/x86/x90 EGYPTIAN HIEROGLYPH I008 ++ /xf0/x93/x86/x91 EGYPTIAN HIEROGLYPH I009 ++ /xf0/x93/x86/x92 EGYPTIAN HIEROGLYPH I009A ++ /xf0/x93/x86/x93 EGYPTIAN HIEROGLYPH I010 ++ /xf0/x93/x86/x94 EGYPTIAN HIEROGLYPH I010A ++ /xf0/x93/x86/x95 EGYPTIAN HIEROGLYPH I011 ++ /xf0/x93/x86/x96 EGYPTIAN HIEROGLYPH I011A ++ /xf0/x93/x86/x97 EGYPTIAN HIEROGLYPH I012 ++ /xf0/x93/x86/x98 EGYPTIAN HIEROGLYPH I013 ++ /xf0/x93/x86/x99 EGYPTIAN HIEROGLYPH I014 ++ /xf0/x93/x86/x9a EGYPTIAN HIEROGLYPH I015 ++ /xf0/x93/x86/x9b EGYPTIAN HIEROGLYPH K001 ++ /xf0/x93/x86/x9c EGYPTIAN HIEROGLYPH K002 ++ /xf0/x93/x86/x9d EGYPTIAN HIEROGLYPH K003 ++ /xf0/x93/x86/x9e EGYPTIAN HIEROGLYPH K004 ++ /xf0/x93/x86/x9f EGYPTIAN HIEROGLYPH K005 ++ /xf0/x93/x86/xa0 EGYPTIAN HIEROGLYPH K006 ++ /xf0/x93/x86/xa1 EGYPTIAN HIEROGLYPH K007 ++ /xf0/x93/x86/xa2 EGYPTIAN HIEROGLYPH K008 ++ /xf0/x93/x86/xa3 EGYPTIAN HIEROGLYPH L001 ++ /xf0/x93/x86/xa4 EGYPTIAN HIEROGLYPH L002 ++ /xf0/x93/x86/xa5 EGYPTIAN HIEROGLYPH L002A ++ /xf0/x93/x86/xa6 EGYPTIAN HIEROGLYPH L003 ++ /xf0/x93/x86/xa7 EGYPTIAN HIEROGLYPH L004 ++ /xf0/x93/x86/xa8 EGYPTIAN HIEROGLYPH L005 ++ /xf0/x93/x86/xa9 EGYPTIAN HIEROGLYPH L006 ++ /xf0/x93/x86/xaa EGYPTIAN HIEROGLYPH L006A ++ /xf0/x93/x86/xab EGYPTIAN HIEROGLYPH L007 ++ /xf0/x93/x86/xac EGYPTIAN HIEROGLYPH L008 ++ /xf0/x93/x86/xad EGYPTIAN HIEROGLYPH M001 ++ /xf0/x93/x86/xae EGYPTIAN HIEROGLYPH M001A ++ /xf0/x93/x86/xaf EGYPTIAN HIEROGLYPH M001B ++ /xf0/x93/x86/xb0 EGYPTIAN HIEROGLYPH M002 ++ /xf0/x93/x86/xb1 EGYPTIAN HIEROGLYPH M003 ++ /xf0/x93/x86/xb2 EGYPTIAN HIEROGLYPH M003A ++ /xf0/x93/x86/xb3 EGYPTIAN HIEROGLYPH M004 ++ /xf0/x93/x86/xb4 EGYPTIAN HIEROGLYPH M005 ++ /xf0/x93/x86/xb5 EGYPTIAN HIEROGLYPH M006 ++ /xf0/x93/x86/xb6 EGYPTIAN HIEROGLYPH M007 ++ /xf0/x93/x86/xb7 EGYPTIAN HIEROGLYPH M008 ++ /xf0/x93/x86/xb8 EGYPTIAN HIEROGLYPH M009 ++ /xf0/x93/x86/xb9 EGYPTIAN HIEROGLYPH M010 ++ /xf0/x93/x86/xba EGYPTIAN HIEROGLYPH M010A ++ /xf0/x93/x86/xbb EGYPTIAN HIEROGLYPH M011 ++ /xf0/x93/x86/xbc EGYPTIAN HIEROGLYPH M012 ++ /xf0/x93/x86/xbd EGYPTIAN HIEROGLYPH M012A ++ /xf0/x93/x86/xbe EGYPTIAN HIEROGLYPH M012B ++ /xf0/x93/x86/xbf EGYPTIAN HIEROGLYPH M012C ++ /xf0/x93/x87/x80 EGYPTIAN HIEROGLYPH M012D ++ /xf0/x93/x87/x81 EGYPTIAN HIEROGLYPH M012E ++ /xf0/x93/x87/x82 EGYPTIAN HIEROGLYPH M012F ++ /xf0/x93/x87/x83 EGYPTIAN HIEROGLYPH M012G ++ /xf0/x93/x87/x84 EGYPTIAN HIEROGLYPH M012H ++ /xf0/x93/x87/x85 EGYPTIAN HIEROGLYPH M013 ++ /xf0/x93/x87/x86 EGYPTIAN HIEROGLYPH M014 ++ /xf0/x93/x87/x87 EGYPTIAN HIEROGLYPH M015 ++ /xf0/x93/x87/x88 EGYPTIAN HIEROGLYPH M015A ++ /xf0/x93/x87/x89 EGYPTIAN HIEROGLYPH M016 ++ /xf0/x93/x87/x8a EGYPTIAN HIEROGLYPH M016A ++ /xf0/x93/x87/x8b EGYPTIAN HIEROGLYPH M017 ++ /xf0/x93/x87/x8c EGYPTIAN HIEROGLYPH M017A ++ /xf0/x93/x87/x8d EGYPTIAN HIEROGLYPH M018 ++ /xf0/x93/x87/x8e EGYPTIAN HIEROGLYPH M019 ++ /xf0/x93/x87/x8f EGYPTIAN HIEROGLYPH M020 ++ /xf0/x93/x87/x90 EGYPTIAN HIEROGLYPH M021 ++ /xf0/x93/x87/x91 EGYPTIAN HIEROGLYPH M022 ++ /xf0/x93/x87/x92 EGYPTIAN HIEROGLYPH M022A ++ /xf0/x93/x87/x93 EGYPTIAN HIEROGLYPH M023 ++ /xf0/x93/x87/x94 EGYPTIAN HIEROGLYPH M024 ++ /xf0/x93/x87/x95 EGYPTIAN HIEROGLYPH M024A ++ /xf0/x93/x87/x96 EGYPTIAN HIEROGLYPH M025 ++ /xf0/x93/x87/x97 EGYPTIAN HIEROGLYPH M026 ++ /xf0/x93/x87/x98 EGYPTIAN HIEROGLYPH M027 ++ /xf0/x93/x87/x99 EGYPTIAN HIEROGLYPH M028 ++ /xf0/x93/x87/x9a EGYPTIAN HIEROGLYPH M028A ++ /xf0/x93/x87/x9b EGYPTIAN HIEROGLYPH M029 ++ /xf0/x93/x87/x9c EGYPTIAN HIEROGLYPH M030 ++ /xf0/x93/x87/x9d EGYPTIAN HIEROGLYPH M031 ++ /xf0/x93/x87/x9e EGYPTIAN HIEROGLYPH M031A ++ /xf0/x93/x87/x9f EGYPTIAN HIEROGLYPH M032 ++ /xf0/x93/x87/xa0 EGYPTIAN HIEROGLYPH M033 ++ /xf0/x93/x87/xa1 EGYPTIAN HIEROGLYPH M033A ++ /xf0/x93/x87/xa2 EGYPTIAN HIEROGLYPH M033B ++ /xf0/x93/x87/xa3 EGYPTIAN HIEROGLYPH M034 ++ /xf0/x93/x87/xa4 EGYPTIAN HIEROGLYPH M035 ++ /xf0/x93/x87/xa5 EGYPTIAN HIEROGLYPH M036 ++ /xf0/x93/x87/xa6 EGYPTIAN HIEROGLYPH M037 ++ /xf0/x93/x87/xa7 EGYPTIAN HIEROGLYPH M038 ++ /xf0/x93/x87/xa8 EGYPTIAN HIEROGLYPH M039 ++ /xf0/x93/x87/xa9 EGYPTIAN HIEROGLYPH M040 ++ /xf0/x93/x87/xaa EGYPTIAN HIEROGLYPH M040A ++ /xf0/x93/x87/xab EGYPTIAN HIEROGLYPH M041 ++ /xf0/x93/x87/xac EGYPTIAN HIEROGLYPH M042 ++ /xf0/x93/x87/xad EGYPTIAN HIEROGLYPH M043 ++ /xf0/x93/x87/xae EGYPTIAN HIEROGLYPH M044 ++ /xf0/x93/x87/xaf EGYPTIAN HIEROGLYPH N001 ++ /xf0/x93/x87/xb0 EGYPTIAN HIEROGLYPH N002 ++ /xf0/x93/x87/xb1 EGYPTIAN HIEROGLYPH N003 ++ /xf0/x93/x87/xb2 EGYPTIAN HIEROGLYPH N004 ++ /xf0/x93/x87/xb3 EGYPTIAN HIEROGLYPH N005 ++ /xf0/x93/x87/xb4 EGYPTIAN HIEROGLYPH N006 ++ /xf0/x93/x87/xb5 EGYPTIAN HIEROGLYPH N007 ++ /xf0/x93/x87/xb6 EGYPTIAN HIEROGLYPH N008 ++ /xf0/x93/x87/xb7 EGYPTIAN HIEROGLYPH N009 ++ /xf0/x93/x87/xb8 EGYPTIAN HIEROGLYPH N010 ++ /xf0/x93/x87/xb9 EGYPTIAN HIEROGLYPH N011 ++ /xf0/x93/x87/xba EGYPTIAN HIEROGLYPH N012 ++ /xf0/x93/x87/xbb EGYPTIAN HIEROGLYPH N013 ++ /xf0/x93/x87/xbc EGYPTIAN HIEROGLYPH N014 ++ /xf0/x93/x87/xbd EGYPTIAN HIEROGLYPH N015 ++ /xf0/x93/x87/xbe EGYPTIAN HIEROGLYPH N016 ++ /xf0/x93/x87/xbf EGYPTIAN HIEROGLYPH N017 ++ /xf0/x93/x88/x80 EGYPTIAN HIEROGLYPH N018 ++ /xf0/x93/x88/x81 EGYPTIAN HIEROGLYPH N018A ++ /xf0/x93/x88/x82 EGYPTIAN HIEROGLYPH N018B ++ /xf0/x93/x88/x83 EGYPTIAN HIEROGLYPH N019 ++ /xf0/x93/x88/x84 EGYPTIAN HIEROGLYPH N020 ++ /xf0/x93/x88/x85 EGYPTIAN HIEROGLYPH N021 ++ /xf0/x93/x88/x86 EGYPTIAN HIEROGLYPH N022 ++ /xf0/x93/x88/x87 EGYPTIAN HIEROGLYPH N023 ++ /xf0/x93/x88/x88 EGYPTIAN HIEROGLYPH N024 ++ /xf0/x93/x88/x89 EGYPTIAN HIEROGLYPH N025 ++ /xf0/x93/x88/x8a EGYPTIAN HIEROGLYPH N025A ++ /xf0/x93/x88/x8b EGYPTIAN HIEROGLYPH N026 ++ /xf0/x93/x88/x8c EGYPTIAN HIEROGLYPH N027 ++ /xf0/x93/x88/x8d EGYPTIAN HIEROGLYPH N028 ++ /xf0/x93/x88/x8e EGYPTIAN HIEROGLYPH N029 ++ /xf0/x93/x88/x8f EGYPTIAN HIEROGLYPH N030 ++ /xf0/x93/x88/x90 EGYPTIAN HIEROGLYPH N031 ++ /xf0/x93/x88/x91 EGYPTIAN HIEROGLYPH N032 ++ /xf0/x93/x88/x92 EGYPTIAN HIEROGLYPH N033 ++ /xf0/x93/x88/x93 EGYPTIAN HIEROGLYPH N033A ++ /xf0/x93/x88/x94 EGYPTIAN HIEROGLYPH N034 ++ /xf0/x93/x88/x95 EGYPTIAN HIEROGLYPH N034A ++ /xf0/x93/x88/x96 EGYPTIAN HIEROGLYPH N035 ++ /xf0/x93/x88/x97 EGYPTIAN HIEROGLYPH N035A ++ /xf0/x93/x88/x98 EGYPTIAN HIEROGLYPH N036 ++ /xf0/x93/x88/x99 EGYPTIAN HIEROGLYPH N037 ++ /xf0/x93/x88/x9a EGYPTIAN HIEROGLYPH N037A ++ /xf0/x93/x88/x9b EGYPTIAN HIEROGLYPH N038 ++ /xf0/x93/x88/x9c EGYPTIAN HIEROGLYPH N039 ++ /xf0/x93/x88/x9d EGYPTIAN HIEROGLYPH N040 ++ /xf0/x93/x88/x9e EGYPTIAN HIEROGLYPH N041 ++ /xf0/x93/x88/x9f EGYPTIAN HIEROGLYPH N042 ++ /xf0/x93/x88/xa0 EGYPTIAN HIEROGLYPH NL001 ++ /xf0/x93/x88/xa1 EGYPTIAN HIEROGLYPH NL002 ++ /xf0/x93/x88/xa2 EGYPTIAN HIEROGLYPH NL003 ++ /xf0/x93/x88/xa3 EGYPTIAN HIEROGLYPH NL004 ++ /xf0/x93/x88/xa4 EGYPTIAN HIEROGLYPH NL005 ++ /xf0/x93/x88/xa5 EGYPTIAN HIEROGLYPH NL005A ++ /xf0/x93/x88/xa6 EGYPTIAN HIEROGLYPH NL006 ++ /xf0/x93/x88/xa7 EGYPTIAN HIEROGLYPH NL007 ++ /xf0/x93/x88/xa8 EGYPTIAN HIEROGLYPH NL008 ++ /xf0/x93/x88/xa9 EGYPTIAN HIEROGLYPH NL009 ++ /xf0/x93/x88/xaa EGYPTIAN HIEROGLYPH NL010 ++ /xf0/x93/x88/xab EGYPTIAN HIEROGLYPH NL011 ++ /xf0/x93/x88/xac EGYPTIAN HIEROGLYPH NL012 ++ /xf0/x93/x88/xad EGYPTIAN HIEROGLYPH NL013 ++ /xf0/x93/x88/xae EGYPTIAN HIEROGLYPH NL014 ++ /xf0/x93/x88/xaf EGYPTIAN HIEROGLYPH NL015 ++ /xf0/x93/x88/xb0 EGYPTIAN HIEROGLYPH NL016 ++ /xf0/x93/x88/xb1 EGYPTIAN HIEROGLYPH NL017 ++ /xf0/x93/x88/xb2 EGYPTIAN HIEROGLYPH NL017A ++ /xf0/x93/x88/xb3 EGYPTIAN HIEROGLYPH NL018 ++ /xf0/x93/x88/xb4 EGYPTIAN HIEROGLYPH NL019 ++ /xf0/x93/x88/xb5 EGYPTIAN HIEROGLYPH NL020 ++ /xf0/x93/x88/xb6 EGYPTIAN HIEROGLYPH NU001 ++ /xf0/x93/x88/xb7 EGYPTIAN HIEROGLYPH NU002 ++ /xf0/x93/x88/xb8 EGYPTIAN HIEROGLYPH NU003 ++ /xf0/x93/x88/xb9 EGYPTIAN HIEROGLYPH NU004 ++ /xf0/x93/x88/xba EGYPTIAN HIEROGLYPH NU005 ++ /xf0/x93/x88/xbb EGYPTIAN HIEROGLYPH NU006 ++ /xf0/x93/x88/xbc EGYPTIAN HIEROGLYPH NU007 ++ /xf0/x93/x88/xbd EGYPTIAN HIEROGLYPH NU008 ++ /xf0/x93/x88/xbe EGYPTIAN HIEROGLYPH NU009 ++ /xf0/x93/x88/xbf EGYPTIAN HIEROGLYPH NU010 ++ /xf0/x93/x89/x80 EGYPTIAN HIEROGLYPH NU010A ++ /xf0/x93/x89/x81 EGYPTIAN HIEROGLYPH NU011 ++ /xf0/x93/x89/x82 EGYPTIAN HIEROGLYPH NU011A ++ /xf0/x93/x89/x83 EGYPTIAN HIEROGLYPH NU012 ++ /xf0/x93/x89/x84 EGYPTIAN HIEROGLYPH NU013 ++ /xf0/x93/x89/x85 EGYPTIAN HIEROGLYPH NU014 ++ /xf0/x93/x89/x86 EGYPTIAN HIEROGLYPH NU015 ++ /xf0/x93/x89/x87 EGYPTIAN HIEROGLYPH NU016 ++ /xf0/x93/x89/x88 EGYPTIAN HIEROGLYPH NU017 ++ /xf0/x93/x89/x89 EGYPTIAN HIEROGLYPH NU018 ++ /xf0/x93/x89/x8a EGYPTIAN HIEROGLYPH NU018A ++ /xf0/x93/x89/x8b EGYPTIAN HIEROGLYPH NU019 ++ /xf0/x93/x89/x8c EGYPTIAN HIEROGLYPH NU020 ++ /xf0/x93/x89/x8d EGYPTIAN HIEROGLYPH NU021 ++ /xf0/x93/x89/x8e EGYPTIAN HIEROGLYPH NU022 ++ /xf0/x93/x89/x8f EGYPTIAN HIEROGLYPH NU022A ++ /xf0/x93/x89/x90 EGYPTIAN HIEROGLYPH O001 ++ /xf0/x93/x89/x91 EGYPTIAN HIEROGLYPH O001A ++ /xf0/x93/x89/x92 EGYPTIAN HIEROGLYPH O002 ++ /xf0/x93/x89/x93 EGYPTIAN HIEROGLYPH O003 ++ /xf0/x93/x89/x94 EGYPTIAN HIEROGLYPH O004 ++ /xf0/x93/x89/x95 EGYPTIAN HIEROGLYPH O005 ++ /xf0/x93/x89/x96 EGYPTIAN HIEROGLYPH O005A ++ /xf0/x93/x89/x97 EGYPTIAN HIEROGLYPH O006 ++ /xf0/x93/x89/x98 EGYPTIAN HIEROGLYPH O006A ++ /xf0/x93/x89/x99 EGYPTIAN HIEROGLYPH O006B ++ /xf0/x93/x89/x9a EGYPTIAN HIEROGLYPH O006C ++ /xf0/x93/x89/x9b EGYPTIAN HIEROGLYPH O006D ++ /xf0/x93/x89/x9c EGYPTIAN HIEROGLYPH O006E ++ /xf0/x93/x89/x9d EGYPTIAN HIEROGLYPH O006F ++ /xf0/x93/x89/x9e EGYPTIAN HIEROGLYPH O007 ++ /xf0/x93/x89/x9f EGYPTIAN HIEROGLYPH O008 ++ /xf0/x93/x89/xa0 EGYPTIAN HIEROGLYPH O009 ++ /xf0/x93/x89/xa1 EGYPTIAN HIEROGLYPH O010 ++ /xf0/x93/x89/xa2 EGYPTIAN HIEROGLYPH O010A ++ /xf0/x93/x89/xa3 EGYPTIAN HIEROGLYPH O010B ++ /xf0/x93/x89/xa4 EGYPTIAN HIEROGLYPH O010C ++ /xf0/x93/x89/xa5 EGYPTIAN HIEROGLYPH O011 ++ /xf0/x93/x89/xa6 EGYPTIAN HIEROGLYPH O012 ++ /xf0/x93/x89/xa7 EGYPTIAN HIEROGLYPH O013 ++ /xf0/x93/x89/xa8 EGYPTIAN HIEROGLYPH O014 ++ /xf0/x93/x89/xa9 EGYPTIAN HIEROGLYPH O015 ++ /xf0/x93/x89/xaa EGYPTIAN HIEROGLYPH O016 ++ /xf0/x93/x89/xab EGYPTIAN HIEROGLYPH O017 ++ /xf0/x93/x89/xac EGYPTIAN HIEROGLYPH O018 ++ /xf0/x93/x89/xad EGYPTIAN HIEROGLYPH O019 ++ /xf0/x93/x89/xae EGYPTIAN HIEROGLYPH O019A ++ /xf0/x93/x89/xaf EGYPTIAN HIEROGLYPH O020 ++ /xf0/x93/x89/xb0 EGYPTIAN HIEROGLYPH O020A ++ /xf0/x93/x89/xb1 EGYPTIAN HIEROGLYPH O021 ++ /xf0/x93/x89/xb2 EGYPTIAN HIEROGLYPH O022 ++ /xf0/x93/x89/xb3 EGYPTIAN HIEROGLYPH O023 ++ /xf0/x93/x89/xb4 EGYPTIAN HIEROGLYPH O024 ++ /xf0/x93/x89/xb5 EGYPTIAN HIEROGLYPH O024A ++ /xf0/x93/x89/xb6 EGYPTIAN HIEROGLYPH O025 ++ /xf0/x93/x89/xb7 EGYPTIAN HIEROGLYPH O025A ++ /xf0/x93/x89/xb8 EGYPTIAN HIEROGLYPH O026 ++ /xf0/x93/x89/xb9 EGYPTIAN HIEROGLYPH O027 ++ /xf0/x93/x89/xba EGYPTIAN HIEROGLYPH O028 ++ /xf0/x93/x89/xbb EGYPTIAN HIEROGLYPH O029 ++ /xf0/x93/x89/xbc EGYPTIAN HIEROGLYPH O029A ++ /xf0/x93/x89/xbd EGYPTIAN HIEROGLYPH O030 ++ /xf0/x93/x89/xbe EGYPTIAN HIEROGLYPH O030A ++ /xf0/x93/x89/xbf EGYPTIAN HIEROGLYPH O031 ++ /xf0/x93/x8a/x80 EGYPTIAN HIEROGLYPH O032 ++ /xf0/x93/x8a/x81 EGYPTIAN HIEROGLYPH O033 ++ /xf0/x93/x8a/x82 EGYPTIAN HIEROGLYPH O033A ++ /xf0/x93/x8a/x83 EGYPTIAN HIEROGLYPH O034 ++ /xf0/x93/x8a/x84 EGYPTIAN HIEROGLYPH O035 ++ /xf0/x93/x8a/x85 EGYPTIAN HIEROGLYPH O036 ++ /xf0/x93/x8a/x86 EGYPTIAN HIEROGLYPH O036A ++ /xf0/x93/x8a/x87 EGYPTIAN HIEROGLYPH O036B ++ /xf0/x93/x8a/x88 EGYPTIAN HIEROGLYPH O036C ++ /xf0/x93/x8a/x89 EGYPTIAN HIEROGLYPH O036D ++ /xf0/x93/x8a/x8a EGYPTIAN HIEROGLYPH O037 ++ /xf0/x93/x8a/x8b EGYPTIAN HIEROGLYPH O038 ++ /xf0/x93/x8a/x8c EGYPTIAN HIEROGLYPH O039 ++ /xf0/x93/x8a/x8d EGYPTIAN HIEROGLYPH O040 ++ /xf0/x93/x8a/x8e EGYPTIAN HIEROGLYPH O041 ++ /xf0/x93/x8a/x8f EGYPTIAN HIEROGLYPH O042 ++ /xf0/x93/x8a/x90 EGYPTIAN HIEROGLYPH O043 ++ /xf0/x93/x8a/x91 EGYPTIAN HIEROGLYPH O044 ++ /xf0/x93/x8a/x92 EGYPTIAN HIEROGLYPH O045 ++ /xf0/x93/x8a/x93 EGYPTIAN HIEROGLYPH O046 ++ /xf0/x93/x8a/x94 EGYPTIAN HIEROGLYPH O047 ++ /xf0/x93/x8a/x95 EGYPTIAN HIEROGLYPH O048 ++ /xf0/x93/x8a/x96 EGYPTIAN HIEROGLYPH O049 ++ /xf0/x93/x8a/x97 EGYPTIAN HIEROGLYPH O050 ++ /xf0/x93/x8a/x98 EGYPTIAN HIEROGLYPH O050A ++ /xf0/x93/x8a/x99 EGYPTIAN HIEROGLYPH O050B ++ /xf0/x93/x8a/x9a EGYPTIAN HIEROGLYPH O051 ++ /xf0/x93/x8a/x9b EGYPTIAN HIEROGLYPH P001 ++ /xf0/x93/x8a/x9c EGYPTIAN HIEROGLYPH P001A ++ /xf0/x93/x8a/x9d EGYPTIAN HIEROGLYPH P002 ++ /xf0/x93/x8a/x9e EGYPTIAN HIEROGLYPH P003 ++ /xf0/x93/x8a/x9f EGYPTIAN HIEROGLYPH P003A ++ /xf0/x93/x8a/xa0 EGYPTIAN HIEROGLYPH P004 ++ /xf0/x93/x8a/xa1 EGYPTIAN HIEROGLYPH P005 ++ /xf0/x93/x8a/xa2 EGYPTIAN HIEROGLYPH P006 ++ /xf0/x93/x8a/xa3 EGYPTIAN HIEROGLYPH P007 ++ /xf0/x93/x8a/xa4 EGYPTIAN HIEROGLYPH P008 ++ /xf0/x93/x8a/xa5 EGYPTIAN HIEROGLYPH P009 ++ /xf0/x93/x8a/xa6 EGYPTIAN HIEROGLYPH P010 ++ /xf0/x93/x8a/xa7 EGYPTIAN HIEROGLYPH P011 ++ /xf0/x93/x8a/xa8 EGYPTIAN HIEROGLYPH Q001 ++ /xf0/x93/x8a/xa9 EGYPTIAN HIEROGLYPH Q002 ++ /xf0/x93/x8a/xaa EGYPTIAN HIEROGLYPH Q003 ++ /xf0/x93/x8a/xab EGYPTIAN HIEROGLYPH Q004 ++ /xf0/x93/x8a/xac EGYPTIAN HIEROGLYPH Q005 ++ /xf0/x93/x8a/xad EGYPTIAN HIEROGLYPH Q006 ++ /xf0/x93/x8a/xae EGYPTIAN HIEROGLYPH Q007 ++ /xf0/x93/x8a/xaf EGYPTIAN HIEROGLYPH R001 ++ /xf0/x93/x8a/xb0 EGYPTIAN HIEROGLYPH R002 ++ /xf0/x93/x8a/xb1 EGYPTIAN HIEROGLYPH R002A ++ /xf0/x93/x8a/xb2 EGYPTIAN HIEROGLYPH R003 ++ /xf0/x93/x8a/xb3 EGYPTIAN HIEROGLYPH R003A ++ /xf0/x93/x8a/xb4 EGYPTIAN HIEROGLYPH R003B ++ /xf0/x93/x8a/xb5 EGYPTIAN HIEROGLYPH R004 ++ /xf0/x93/x8a/xb6 EGYPTIAN HIEROGLYPH R005 ++ /xf0/x93/x8a/xb7 EGYPTIAN HIEROGLYPH R006 ++ /xf0/x93/x8a/xb8 EGYPTIAN HIEROGLYPH R007 ++ /xf0/x93/x8a/xb9 EGYPTIAN HIEROGLYPH R008 ++ /xf0/x93/x8a/xba EGYPTIAN HIEROGLYPH R009 ++ /xf0/x93/x8a/xbb EGYPTIAN HIEROGLYPH R010 ++ /xf0/x93/x8a/xbc EGYPTIAN HIEROGLYPH R010A ++ /xf0/x93/x8a/xbd EGYPTIAN HIEROGLYPH R011 ++ /xf0/x93/x8a/xbe EGYPTIAN HIEROGLYPH R012 ++ /xf0/x93/x8a/xbf EGYPTIAN HIEROGLYPH R013 ++ /xf0/x93/x8b/x80 EGYPTIAN HIEROGLYPH R014 ++ /xf0/x93/x8b/x81 EGYPTIAN HIEROGLYPH R015 ++ /xf0/x93/x8b/x82 EGYPTIAN HIEROGLYPH R016 ++ /xf0/x93/x8b/x83 EGYPTIAN HIEROGLYPH R016A ++ /xf0/x93/x8b/x84 EGYPTIAN HIEROGLYPH R017 ++ /xf0/x93/x8b/x85 EGYPTIAN HIEROGLYPH R018 ++ /xf0/x93/x8b/x86 EGYPTIAN HIEROGLYPH R019 ++ /xf0/x93/x8b/x87 EGYPTIAN HIEROGLYPH R020 ++ /xf0/x93/x8b/x88 EGYPTIAN HIEROGLYPH R021 ++ /xf0/x93/x8b/x89 EGYPTIAN HIEROGLYPH R022 ++ /xf0/x93/x8b/x8a EGYPTIAN HIEROGLYPH R023 ++ /xf0/x93/x8b/x8b EGYPTIAN HIEROGLYPH R024 ++ /xf0/x93/x8b/x8c EGYPTIAN HIEROGLYPH R025 ++ /xf0/x93/x8b/x8d EGYPTIAN HIEROGLYPH R026 ++ /xf0/x93/x8b/x8e EGYPTIAN HIEROGLYPH R027 ++ /xf0/x93/x8b/x8f EGYPTIAN HIEROGLYPH R028 ++ /xf0/x93/x8b/x90 EGYPTIAN HIEROGLYPH R029 ++ /xf0/x93/x8b/x91 EGYPTIAN HIEROGLYPH S001 ++ /xf0/x93/x8b/x92 EGYPTIAN HIEROGLYPH S002 ++ /xf0/x93/x8b/x93 EGYPTIAN HIEROGLYPH S002A ++ /xf0/x93/x8b/x94 EGYPTIAN HIEROGLYPH S003 ++ /xf0/x93/x8b/x95 EGYPTIAN HIEROGLYPH S004 ++ /xf0/x93/x8b/x96 EGYPTIAN HIEROGLYPH S005 ++ /xf0/x93/x8b/x97 EGYPTIAN HIEROGLYPH S006 ++ /xf0/x93/x8b/x98 EGYPTIAN HIEROGLYPH S006A ++ /xf0/x93/x8b/x99 EGYPTIAN HIEROGLYPH S007 ++ /xf0/x93/x8b/x9a EGYPTIAN HIEROGLYPH S008 ++ /xf0/x93/x8b/x9b EGYPTIAN HIEROGLYPH S009 ++ /xf0/x93/x8b/x9c EGYPTIAN HIEROGLYPH S010 ++ /xf0/x93/x8b/x9d EGYPTIAN HIEROGLYPH S011 ++ /xf0/x93/x8b/x9e EGYPTIAN HIEROGLYPH S012 ++ /xf0/x93/x8b/x9f EGYPTIAN HIEROGLYPH S013 ++ /xf0/x93/x8b/xa0 EGYPTIAN HIEROGLYPH S014 ++ /xf0/x93/x8b/xa1 EGYPTIAN HIEROGLYPH S014A ++ /xf0/x93/x8b/xa2 EGYPTIAN HIEROGLYPH S014B ++ /xf0/x93/x8b/xa3 EGYPTIAN HIEROGLYPH S015 ++ /xf0/x93/x8b/xa4 EGYPTIAN HIEROGLYPH S016 ++ /xf0/x93/x8b/xa5 EGYPTIAN HIEROGLYPH S017 ++ /xf0/x93/x8b/xa6 EGYPTIAN HIEROGLYPH S017A ++ /xf0/x93/x8b/xa7 EGYPTIAN HIEROGLYPH S018 ++ /xf0/x93/x8b/xa8 EGYPTIAN HIEROGLYPH S019 ++ /xf0/x93/x8b/xa9 EGYPTIAN HIEROGLYPH S020 ++ /xf0/x93/x8b/xaa EGYPTIAN HIEROGLYPH S021 ++ /xf0/x93/x8b/xab EGYPTIAN HIEROGLYPH S022 ++ /xf0/x93/x8b/xac EGYPTIAN HIEROGLYPH S023 ++ /xf0/x93/x8b/xad EGYPTIAN HIEROGLYPH S024 ++ /xf0/x93/x8b/xae EGYPTIAN HIEROGLYPH S025 ++ /xf0/x93/x8b/xaf EGYPTIAN HIEROGLYPH S026 ++ /xf0/x93/x8b/xb0 EGYPTIAN HIEROGLYPH S026A ++ /xf0/x93/x8b/xb1 EGYPTIAN HIEROGLYPH S026B ++ /xf0/x93/x8b/xb2 EGYPTIAN HIEROGLYPH S027 ++ /xf0/x93/x8b/xb3 EGYPTIAN HIEROGLYPH S028 ++ /xf0/x93/x8b/xb4 EGYPTIAN HIEROGLYPH S029 ++ /xf0/x93/x8b/xb5 EGYPTIAN HIEROGLYPH S030 ++ /xf0/x93/x8b/xb6 EGYPTIAN HIEROGLYPH S031 ++ /xf0/x93/x8b/xb7 EGYPTIAN HIEROGLYPH S032 ++ /xf0/x93/x8b/xb8 EGYPTIAN HIEROGLYPH S033 ++ /xf0/x93/x8b/xb9 EGYPTIAN HIEROGLYPH S034 ++ /xf0/x93/x8b/xba EGYPTIAN HIEROGLYPH S035 ++ /xf0/x93/x8b/xbb EGYPTIAN HIEROGLYPH S035A ++ /xf0/x93/x8b/xbc EGYPTIAN HIEROGLYPH S036 ++ /xf0/x93/x8b/xbd EGYPTIAN HIEROGLYPH S037 ++ /xf0/x93/x8b/xbe EGYPTIAN HIEROGLYPH S038 ++ /xf0/x93/x8b/xbf EGYPTIAN HIEROGLYPH S039 ++ /xf0/x93/x8c/x80 EGYPTIAN HIEROGLYPH S040 ++ /xf0/x93/x8c/x81 EGYPTIAN HIEROGLYPH S041 ++ /xf0/x93/x8c/x82 EGYPTIAN HIEROGLYPH S042 ++ /xf0/x93/x8c/x83 EGYPTIAN HIEROGLYPH S043 ++ /xf0/x93/x8c/x84 EGYPTIAN HIEROGLYPH S044 ++ /xf0/x93/x8c/x85 EGYPTIAN HIEROGLYPH S045 ++ /xf0/x93/x8c/x86 EGYPTIAN HIEROGLYPH S046 ++ /xf0/x93/x8c/x87 EGYPTIAN HIEROGLYPH T001 ++ /xf0/x93/x8c/x88 EGYPTIAN HIEROGLYPH T002 ++ /xf0/x93/x8c/x89 EGYPTIAN HIEROGLYPH T003 ++ /xf0/x93/x8c/x8a EGYPTIAN HIEROGLYPH T003A ++ /xf0/x93/x8c/x8b EGYPTIAN HIEROGLYPH T004 ++ /xf0/x93/x8c/x8c EGYPTIAN HIEROGLYPH T005 ++ /xf0/x93/x8c/x8d EGYPTIAN HIEROGLYPH T006 ++ /xf0/x93/x8c/x8e EGYPTIAN HIEROGLYPH T007 ++ /xf0/x93/x8c/x8f EGYPTIAN HIEROGLYPH T007A ++ /xf0/x93/x8c/x90 EGYPTIAN HIEROGLYPH T008 ++ /xf0/x93/x8c/x91 EGYPTIAN HIEROGLYPH T008A ++ /xf0/x93/x8c/x92 EGYPTIAN HIEROGLYPH T009 ++ /xf0/x93/x8c/x93 EGYPTIAN HIEROGLYPH T009A ++ /xf0/x93/x8c/x94 EGYPTIAN HIEROGLYPH T010 ++ /xf0/x93/x8c/x95 EGYPTIAN HIEROGLYPH T011 ++ /xf0/x93/x8c/x96 EGYPTIAN HIEROGLYPH T011A ++ /xf0/x93/x8c/x97 EGYPTIAN HIEROGLYPH T012 ++ /xf0/x93/x8c/x98 EGYPTIAN HIEROGLYPH T013 ++ /xf0/x93/x8c/x99 EGYPTIAN HIEROGLYPH T014 ++ /xf0/x93/x8c/x9a EGYPTIAN HIEROGLYPH T015 ++ /xf0/x93/x8c/x9b EGYPTIAN HIEROGLYPH T016 ++ /xf0/x93/x8c/x9c EGYPTIAN HIEROGLYPH T016A ++ /xf0/x93/x8c/x9d EGYPTIAN HIEROGLYPH T017 ++ /xf0/x93/x8c/x9e EGYPTIAN HIEROGLYPH T018 ++ /xf0/x93/x8c/x9f EGYPTIAN HIEROGLYPH T019 ++ /xf0/x93/x8c/xa0 EGYPTIAN HIEROGLYPH T020 ++ /xf0/x93/x8c/xa1 EGYPTIAN HIEROGLYPH T021 ++ /xf0/x93/x8c/xa2 EGYPTIAN HIEROGLYPH T022 ++ /xf0/x93/x8c/xa3 EGYPTIAN HIEROGLYPH T023 ++ /xf0/x93/x8c/xa4 EGYPTIAN HIEROGLYPH T024 ++ /xf0/x93/x8c/xa5 EGYPTIAN HIEROGLYPH T025 ++ /xf0/x93/x8c/xa6 EGYPTIAN HIEROGLYPH T026 ++ /xf0/x93/x8c/xa7 EGYPTIAN HIEROGLYPH T027 ++ /xf0/x93/x8c/xa8 EGYPTIAN HIEROGLYPH T028 ++ /xf0/x93/x8c/xa9 EGYPTIAN HIEROGLYPH T029 ++ /xf0/x93/x8c/xaa EGYPTIAN HIEROGLYPH T030 ++ /xf0/x93/x8c/xab EGYPTIAN HIEROGLYPH T031 ++ /xf0/x93/x8c/xac EGYPTIAN HIEROGLYPH T032 ++ /xf0/x93/x8c/xad EGYPTIAN HIEROGLYPH T032A ++ /xf0/x93/x8c/xae EGYPTIAN HIEROGLYPH T033 ++ /xf0/x93/x8c/xaf EGYPTIAN HIEROGLYPH T033A ++ /xf0/x93/x8c/xb0 EGYPTIAN HIEROGLYPH T034 ++ /xf0/x93/x8c/xb1 EGYPTIAN HIEROGLYPH T035 ++ /xf0/x93/x8c/xb2 EGYPTIAN HIEROGLYPH T036 ++ /xf0/x93/x8c/xb3 EGYPTIAN HIEROGLYPH U001 ++ /xf0/x93/x8c/xb4 EGYPTIAN HIEROGLYPH U002 ++ /xf0/x93/x8c/xb5 EGYPTIAN HIEROGLYPH U003 ++ /xf0/x93/x8c/xb6 EGYPTIAN HIEROGLYPH U004 ++ /xf0/x93/x8c/xb7 EGYPTIAN HIEROGLYPH U005 ++ /xf0/x93/x8c/xb8 EGYPTIAN HIEROGLYPH U006 ++ /xf0/x93/x8c/xb9 EGYPTIAN HIEROGLYPH U006A ++ /xf0/x93/x8c/xba EGYPTIAN HIEROGLYPH U006B ++ /xf0/x93/x8c/xbb EGYPTIAN HIEROGLYPH U007 ++ /xf0/x93/x8c/xbc EGYPTIAN HIEROGLYPH U008 ++ /xf0/x93/x8c/xbd EGYPTIAN HIEROGLYPH U009 ++ /xf0/x93/x8c/xbe EGYPTIAN HIEROGLYPH U010 ++ /xf0/x93/x8c/xbf EGYPTIAN HIEROGLYPH U011 ++ /xf0/x93/x8d/x80 EGYPTIAN HIEROGLYPH U012 ++ /xf0/x93/x8d/x81 EGYPTIAN HIEROGLYPH U013 ++ /xf0/x93/x8d/x82 EGYPTIAN HIEROGLYPH U014 ++ /xf0/x93/x8d/x83 EGYPTIAN HIEROGLYPH U015 ++ /xf0/x93/x8d/x84 EGYPTIAN HIEROGLYPH U016 ++ /xf0/x93/x8d/x85 EGYPTIAN HIEROGLYPH U017 ++ /xf0/x93/x8d/x86 EGYPTIAN HIEROGLYPH U018 ++ /xf0/x93/x8d/x87 EGYPTIAN HIEROGLYPH U019 ++ /xf0/x93/x8d/x88 EGYPTIAN HIEROGLYPH U020 ++ /xf0/x93/x8d/x89 EGYPTIAN HIEROGLYPH U021 ++ /xf0/x93/x8d/x8a EGYPTIAN HIEROGLYPH U022 ++ /xf0/x93/x8d/x8b EGYPTIAN HIEROGLYPH U023 ++ /xf0/x93/x8d/x8c EGYPTIAN HIEROGLYPH U023A ++ /xf0/x93/x8d/x8d EGYPTIAN HIEROGLYPH U024 ++ /xf0/x93/x8d/x8e EGYPTIAN HIEROGLYPH U025 ++ /xf0/x93/x8d/x8f EGYPTIAN HIEROGLYPH U026 ++ /xf0/x93/x8d/x90 EGYPTIAN HIEROGLYPH U027 ++ /xf0/x93/x8d/x91 EGYPTIAN HIEROGLYPH U028 ++ /xf0/x93/x8d/x92 EGYPTIAN HIEROGLYPH U029 ++ /xf0/x93/x8d/x93 EGYPTIAN HIEROGLYPH U029A ++ /xf0/x93/x8d/x94 EGYPTIAN HIEROGLYPH U030 ++ /xf0/x93/x8d/x95 EGYPTIAN HIEROGLYPH U031 ++ /xf0/x93/x8d/x96 EGYPTIAN HIEROGLYPH U032 ++ /xf0/x93/x8d/x97 EGYPTIAN HIEROGLYPH U032A ++ /xf0/x93/x8d/x98 EGYPTIAN HIEROGLYPH U033 ++ /xf0/x93/x8d/x99 EGYPTIAN HIEROGLYPH U034 ++ /xf0/x93/x8d/x9a EGYPTIAN HIEROGLYPH U035 ++ /xf0/x93/x8d/x9b EGYPTIAN HIEROGLYPH U036 ++ /xf0/x93/x8d/x9c EGYPTIAN HIEROGLYPH U037 ++ /xf0/x93/x8d/x9d EGYPTIAN HIEROGLYPH U038 ++ /xf0/x93/x8d/x9e EGYPTIAN HIEROGLYPH U039 ++ /xf0/x93/x8d/x9f EGYPTIAN HIEROGLYPH U040 ++ /xf0/x93/x8d/xa0 EGYPTIAN HIEROGLYPH U041 ++ /xf0/x93/x8d/xa1 EGYPTIAN HIEROGLYPH U042 ++ /xf0/x93/x8d/xa2 EGYPTIAN HIEROGLYPH V001 ++ /xf0/x93/x8d/xa3 EGYPTIAN HIEROGLYPH V001A ++ /xf0/x93/x8d/xa4 EGYPTIAN HIEROGLYPH V001B ++ /xf0/x93/x8d/xa5 EGYPTIAN HIEROGLYPH V001C ++ /xf0/x93/x8d/xa6 EGYPTIAN HIEROGLYPH V001D ++ /xf0/x93/x8d/xa7 EGYPTIAN HIEROGLYPH V001E ++ /xf0/x93/x8d/xa8 EGYPTIAN HIEROGLYPH V001F ++ /xf0/x93/x8d/xa9 EGYPTIAN HIEROGLYPH V001G ++ /xf0/x93/x8d/xaa EGYPTIAN HIEROGLYPH V001H ++ /xf0/x93/x8d/xab EGYPTIAN HIEROGLYPH V001I ++ /xf0/x93/x8d/xac EGYPTIAN HIEROGLYPH V002 ++ /xf0/x93/x8d/xad EGYPTIAN HIEROGLYPH V002A ++ /xf0/x93/x8d/xae EGYPTIAN HIEROGLYPH V003 ++ /xf0/x93/x8d/xaf EGYPTIAN HIEROGLYPH V004 ++ /xf0/x93/x8d/xb0 EGYPTIAN HIEROGLYPH V005 ++ /xf0/x93/x8d/xb1 EGYPTIAN HIEROGLYPH V006 ++ /xf0/x93/x8d/xb2 EGYPTIAN HIEROGLYPH V007 ++ /xf0/x93/x8d/xb3 EGYPTIAN HIEROGLYPH V007A ++ /xf0/x93/x8d/xb4 EGYPTIAN HIEROGLYPH V007B ++ /xf0/x93/x8d/xb5 EGYPTIAN HIEROGLYPH V008 ++ /xf0/x93/x8d/xb6 EGYPTIAN HIEROGLYPH V009 ++ /xf0/x93/x8d/xb7 EGYPTIAN HIEROGLYPH V010 ++ /xf0/x93/x8d/xb8 EGYPTIAN HIEROGLYPH V011 ++ /xf0/x93/x8d/xb9 EGYPTIAN HIEROGLYPH V011A ++ /xf0/x93/x8d/xba EGYPTIAN HIEROGLYPH V011B ++ /xf0/x93/x8d/xbb EGYPTIAN HIEROGLYPH V011C ++ /xf0/x93/x8d/xbc EGYPTIAN HIEROGLYPH V012 ++ /xf0/x93/x8d/xbd EGYPTIAN HIEROGLYPH V012A ++ /xf0/x93/x8d/xbe EGYPTIAN HIEROGLYPH V012B ++ /xf0/x93/x8d/xbf EGYPTIAN HIEROGLYPH V013 ++ /xf0/x93/x8e/x80 EGYPTIAN HIEROGLYPH V014 ++ /xf0/x93/x8e/x81 EGYPTIAN HIEROGLYPH V015 ++ /xf0/x93/x8e/x82 EGYPTIAN HIEROGLYPH V016 ++ /xf0/x93/x8e/x83 EGYPTIAN HIEROGLYPH V017 ++ /xf0/x93/x8e/x84 EGYPTIAN HIEROGLYPH V018 ++ /xf0/x93/x8e/x85 EGYPTIAN HIEROGLYPH V019 ++ /xf0/x93/x8e/x86 EGYPTIAN HIEROGLYPH V020 ++ /xf0/x93/x8e/x87 EGYPTIAN HIEROGLYPH V020A ++ /xf0/x93/x8e/x88 EGYPTIAN HIEROGLYPH V020B ++ /xf0/x93/x8e/x89 EGYPTIAN HIEROGLYPH V020C ++ /xf0/x93/x8e/x8a EGYPTIAN HIEROGLYPH V020D ++ /xf0/x93/x8e/x8b EGYPTIAN HIEROGLYPH V020E ++ /xf0/x93/x8e/x8c EGYPTIAN HIEROGLYPH V020F ++ /xf0/x93/x8e/x8d EGYPTIAN HIEROGLYPH V020G ++ /xf0/x93/x8e/x8e EGYPTIAN HIEROGLYPH V020H ++ /xf0/x93/x8e/x8f EGYPTIAN HIEROGLYPH V020I ++ /xf0/x93/x8e/x90 EGYPTIAN HIEROGLYPH V020J ++ /xf0/x93/x8e/x91 EGYPTIAN HIEROGLYPH V020K ++ /xf0/x93/x8e/x92 EGYPTIAN HIEROGLYPH V020L ++ /xf0/x93/x8e/x93 EGYPTIAN HIEROGLYPH V021 ++ /xf0/x93/x8e/x94 EGYPTIAN HIEROGLYPH V022 ++ /xf0/x93/x8e/x95 EGYPTIAN HIEROGLYPH V023 ++ /xf0/x93/x8e/x96 EGYPTIAN HIEROGLYPH V023A ++ /xf0/x93/x8e/x97 EGYPTIAN HIEROGLYPH V024 ++ /xf0/x93/x8e/x98 EGYPTIAN HIEROGLYPH V025 ++ /xf0/x93/x8e/x99 EGYPTIAN HIEROGLYPH V026 ++ /xf0/x93/x8e/x9a EGYPTIAN HIEROGLYPH V027 ++ /xf0/x93/x8e/x9b EGYPTIAN HIEROGLYPH V028 ++ /xf0/x93/x8e/x9c EGYPTIAN HIEROGLYPH V028A ++ /xf0/x93/x8e/x9d EGYPTIAN HIEROGLYPH V029 ++ /xf0/x93/x8e/x9e EGYPTIAN HIEROGLYPH V029A ++ /xf0/x93/x8e/x9f EGYPTIAN HIEROGLYPH V030 ++ /xf0/x93/x8e/xa0 EGYPTIAN HIEROGLYPH V030A ++ /xf0/x93/x8e/xa1 EGYPTIAN HIEROGLYPH V031 ++ /xf0/x93/x8e/xa2 EGYPTIAN HIEROGLYPH V031A ++ /xf0/x93/x8e/xa3 EGYPTIAN HIEROGLYPH V032 ++ /xf0/x93/x8e/xa4 EGYPTIAN HIEROGLYPH V033 ++ /xf0/x93/x8e/xa5 EGYPTIAN HIEROGLYPH V033A ++ /xf0/x93/x8e/xa6 EGYPTIAN HIEROGLYPH V034 ++ /xf0/x93/x8e/xa7 EGYPTIAN HIEROGLYPH V035 ++ /xf0/x93/x8e/xa8 EGYPTIAN HIEROGLYPH V036 ++ /xf0/x93/x8e/xa9 EGYPTIAN HIEROGLYPH V037 ++ /xf0/x93/x8e/xaa EGYPTIAN HIEROGLYPH V037A ++ /xf0/x93/x8e/xab EGYPTIAN HIEROGLYPH V038 ++ /xf0/x93/x8e/xac EGYPTIAN HIEROGLYPH V039 ++ /xf0/x93/x8e/xad EGYPTIAN HIEROGLYPH V040 ++ /xf0/x93/x8e/xae EGYPTIAN HIEROGLYPH V040A ++ /xf0/x93/x8e/xaf EGYPTIAN HIEROGLYPH W001 ++ /xf0/x93/x8e/xb0 EGYPTIAN HIEROGLYPH W002 ++ /xf0/x93/x8e/xb1 EGYPTIAN HIEROGLYPH W003 ++ /xf0/x93/x8e/xb2 EGYPTIAN HIEROGLYPH W003A ++ /xf0/x93/x8e/xb3 EGYPTIAN HIEROGLYPH W004 ++ /xf0/x93/x8e/xb4 EGYPTIAN HIEROGLYPH W005 ++ /xf0/x93/x8e/xb5 EGYPTIAN HIEROGLYPH W006 ++ /xf0/x93/x8e/xb6 EGYPTIAN HIEROGLYPH W007 ++ /xf0/x93/x8e/xb7 EGYPTIAN HIEROGLYPH W008 ++ /xf0/x93/x8e/xb8 EGYPTIAN HIEROGLYPH W009 ++ /xf0/x93/x8e/xb9 EGYPTIAN HIEROGLYPH W009A ++ /xf0/x93/x8e/xba EGYPTIAN HIEROGLYPH W010 ++ /xf0/x93/x8e/xbb EGYPTIAN HIEROGLYPH W010A ++ /xf0/x93/x8e/xbc EGYPTIAN HIEROGLYPH W011 ++ /xf0/x93/x8e/xbd EGYPTIAN HIEROGLYPH W012 ++ /xf0/x93/x8e/xbe EGYPTIAN HIEROGLYPH W013 ++ /xf0/x93/x8e/xbf EGYPTIAN HIEROGLYPH W014 ++ /xf0/x93/x8f/x80 EGYPTIAN HIEROGLYPH W014A ++ /xf0/x93/x8f/x81 EGYPTIAN HIEROGLYPH W015 ++ /xf0/x93/x8f/x82 EGYPTIAN HIEROGLYPH W016 ++ /xf0/x93/x8f/x83 EGYPTIAN HIEROGLYPH W017 ++ /xf0/x93/x8f/x84 EGYPTIAN HIEROGLYPH W017A ++ /xf0/x93/x8f/x85 EGYPTIAN HIEROGLYPH W018 ++ /xf0/x93/x8f/x86 EGYPTIAN HIEROGLYPH W018A ++ /xf0/x93/x8f/x87 EGYPTIAN HIEROGLYPH W019 ++ /xf0/x93/x8f/x88 EGYPTIAN HIEROGLYPH W020 ++ /xf0/x93/x8f/x89 EGYPTIAN HIEROGLYPH W021 ++ /xf0/x93/x8f/x8a EGYPTIAN HIEROGLYPH W022 ++ /xf0/x93/x8f/x8b EGYPTIAN HIEROGLYPH W023 ++ /xf0/x93/x8f/x8c EGYPTIAN HIEROGLYPH W024 ++ /xf0/x93/x8f/x8d EGYPTIAN HIEROGLYPH W024A ++ /xf0/x93/x8f/x8e EGYPTIAN HIEROGLYPH W025 ++ /xf0/x93/x8f/x8f EGYPTIAN HIEROGLYPH X001 ++ /xf0/x93/x8f/x90 EGYPTIAN HIEROGLYPH X002 ++ /xf0/x93/x8f/x91 EGYPTIAN HIEROGLYPH X003 ++ /xf0/x93/x8f/x92 EGYPTIAN HIEROGLYPH X004 ++ /xf0/x93/x8f/x93 EGYPTIAN HIEROGLYPH X004A ++ /xf0/x93/x8f/x94 EGYPTIAN HIEROGLYPH X004B ++ /xf0/x93/x8f/x95 EGYPTIAN HIEROGLYPH X005 ++ /xf0/x93/x8f/x96 EGYPTIAN HIEROGLYPH X006 ++ /xf0/x93/x8f/x97 EGYPTIAN HIEROGLYPH X006A ++ /xf0/x93/x8f/x98 EGYPTIAN HIEROGLYPH X007 ++ /xf0/x93/x8f/x99 EGYPTIAN HIEROGLYPH X008 ++ /xf0/x93/x8f/x9a EGYPTIAN HIEROGLYPH X008A ++ /xf0/x93/x8f/x9b EGYPTIAN HIEROGLYPH Y001 ++ /xf0/x93/x8f/x9c EGYPTIAN HIEROGLYPH Y001A ++ /xf0/x93/x8f/x9d EGYPTIAN HIEROGLYPH Y002 ++ /xf0/x93/x8f/x9e EGYPTIAN HIEROGLYPH Y003 ++ /xf0/x93/x8f/x9f EGYPTIAN HIEROGLYPH Y004 ++ /xf0/x93/x8f/xa0 EGYPTIAN HIEROGLYPH Y005 ++ /xf0/x93/x8f/xa1 EGYPTIAN HIEROGLYPH Y006 ++ /xf0/x93/x8f/xa2 EGYPTIAN HIEROGLYPH Y007 ++ /xf0/x93/x8f/xa3 EGYPTIAN HIEROGLYPH Y008 ++ /xf0/x93/x8f/xa4 EGYPTIAN HIEROGLYPH Z001 ++ /xf0/x93/x8f/xa5 EGYPTIAN HIEROGLYPH Z002 ++ /xf0/x93/x8f/xa6 EGYPTIAN HIEROGLYPH Z002A ++ /xf0/x93/x8f/xa7 EGYPTIAN HIEROGLYPH Z002B ++ /xf0/x93/x8f/xa8 EGYPTIAN HIEROGLYPH Z002C ++ /xf0/x93/x8f/xa9 EGYPTIAN HIEROGLYPH Z002D ++ /xf0/x93/x8f/xaa EGYPTIAN HIEROGLYPH Z003 ++ /xf0/x93/x8f/xab EGYPTIAN HIEROGLYPH Z003A ++ /xf0/x93/x8f/xac EGYPTIAN HIEROGLYPH Z003B ++ /xf0/x93/x8f/xad EGYPTIAN HIEROGLYPH Z004 ++ /xf0/x93/x8f/xae EGYPTIAN HIEROGLYPH Z004A ++ /xf0/x93/x8f/xaf EGYPTIAN HIEROGLYPH Z005 ++ /xf0/x93/x8f/xb0 EGYPTIAN HIEROGLYPH Z005A ++ /xf0/x93/x8f/xb1 EGYPTIAN HIEROGLYPH Z006 ++ /xf0/x93/x8f/xb2 EGYPTIAN HIEROGLYPH Z007 ++ /xf0/x93/x8f/xb3 EGYPTIAN HIEROGLYPH Z008 ++ /xf0/x93/x8f/xb4 EGYPTIAN HIEROGLYPH Z009 ++ /xf0/x93/x8f/xb5 EGYPTIAN HIEROGLYPH Z010 ++ /xf0/x93/x8f/xb6 EGYPTIAN HIEROGLYPH Z011 ++ /xf0/x93/x8f/xb7 EGYPTIAN HIEROGLYPH Z012 ++ /xf0/x93/x8f/xb8 EGYPTIAN HIEROGLYPH Z013 ++ /xf0/x93/x8f/xb9 EGYPTIAN HIEROGLYPH Z014 ++ /xf0/x93/x8f/xba EGYPTIAN HIEROGLYPH Z015 ++ /xf0/x93/x8f/xbb EGYPTIAN HIEROGLYPH Z015A ++ /xf0/x93/x8f/xbc EGYPTIAN HIEROGLYPH Z015B ++ /xf0/x93/x8f/xbd EGYPTIAN HIEROGLYPH Z015C ++ /xf0/x93/x8f/xbe EGYPTIAN HIEROGLYPH Z015D ++ /xf0/x93/x8f/xbf EGYPTIAN HIEROGLYPH Z015E ++ /xf0/x93/x90/x80 EGYPTIAN HIEROGLYPH Z015F ++ /xf0/x93/x90/x81 EGYPTIAN HIEROGLYPH Z015G ++ /xf0/x93/x90/x82 EGYPTIAN HIEROGLYPH Z015H ++ /xf0/x93/x90/x83 EGYPTIAN HIEROGLYPH Z015I ++ /xf0/x93/x90/x84 EGYPTIAN HIEROGLYPH Z016 ++ /xf0/x93/x90/x85 EGYPTIAN HIEROGLYPH Z016A ++ /xf0/x93/x90/x86 EGYPTIAN HIEROGLYPH Z016B ++ /xf0/x93/x90/x87 EGYPTIAN HIEROGLYPH Z016C ++ /xf0/x93/x90/x88 EGYPTIAN HIEROGLYPH Z016D ++ /xf0/x93/x90/x89 EGYPTIAN HIEROGLYPH Z016E ++ /xf0/x93/x90/x8a EGYPTIAN HIEROGLYPH Z016F ++ /xf0/x93/x90/x8b EGYPTIAN HIEROGLYPH Z016G ++ /xf0/x93/x90/x8c EGYPTIAN HIEROGLYPH Z016H ++ /xf0/x93/x90/x8d EGYPTIAN HIEROGLYPH AA001 ++ /xf0/x93/x90/x8e EGYPTIAN HIEROGLYPH AA002 ++ /xf0/x93/x90/x8f EGYPTIAN HIEROGLYPH AA003 ++ /xf0/x93/x90/x90 EGYPTIAN HIEROGLYPH AA004 ++ /xf0/x93/x90/x91 EGYPTIAN HIEROGLYPH AA005 ++ /xf0/x93/x90/x92 EGYPTIAN HIEROGLYPH AA006 ++ /xf0/x93/x90/x93 EGYPTIAN HIEROGLYPH AA007 ++ /xf0/x93/x90/x94 EGYPTIAN HIEROGLYPH AA007A ++ /xf0/x93/x90/x95 EGYPTIAN HIEROGLYPH AA007B ++ /xf0/x93/x90/x96 EGYPTIAN HIEROGLYPH AA008 ++ /xf0/x93/x90/x97 EGYPTIAN HIEROGLYPH AA009 ++ /xf0/x93/x90/x98 EGYPTIAN HIEROGLYPH AA010 ++ /xf0/x93/x90/x99 EGYPTIAN HIEROGLYPH AA011 ++ /xf0/x93/x90/x9a EGYPTIAN HIEROGLYPH AA012 ++ /xf0/x93/x90/x9b EGYPTIAN HIEROGLYPH AA013 ++ /xf0/x93/x90/x9c EGYPTIAN HIEROGLYPH AA014 ++ /xf0/x93/x90/x9d EGYPTIAN HIEROGLYPH AA015 ++ /xf0/x93/x90/x9e EGYPTIAN HIEROGLYPH AA016 ++ /xf0/x93/x90/x9f EGYPTIAN HIEROGLYPH AA017 ++ /xf0/x93/x90/xa0 EGYPTIAN HIEROGLYPH AA018 ++ /xf0/x93/x90/xa1 EGYPTIAN HIEROGLYPH AA019 ++ /xf0/x93/x90/xa2 EGYPTIAN HIEROGLYPH AA020 ++ /xf0/x93/x90/xa3 EGYPTIAN HIEROGLYPH AA021 ++ /xf0/x93/x90/xa4 EGYPTIAN HIEROGLYPH AA022 ++ /xf0/x93/x90/xa5 EGYPTIAN HIEROGLYPH AA023 ++ /xf0/x93/x90/xa6 EGYPTIAN HIEROGLYPH AA024 ++ /xf0/x93/x90/xa7 EGYPTIAN HIEROGLYPH AA025 ++ /xf0/x93/x90/xa8 EGYPTIAN HIEROGLYPH AA026 ++ /xf0/x93/x90/xa9 EGYPTIAN HIEROGLYPH AA027 ++ /xf0/x93/x90/xaa EGYPTIAN HIEROGLYPH AA028 ++ /xf0/x93/x90/xab EGYPTIAN HIEROGLYPH AA029 ++ /xf0/x93/x90/xac EGYPTIAN HIEROGLYPH AA030 ++ /xf0/x93/x90/xad EGYPTIAN HIEROGLYPH AA031 ++ /xf0/x93/x90/xae EGYPTIAN HIEROGLYPH AA032 ++ /xf0/x96/xa0/x80 BAMUM LETTER PHASE-A NGKUE MFON ++ /xf0/x96/xa0/x81 BAMUM LETTER PHASE-A GBIEE FON ++ /xf0/x96/xa0/x82 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE ++ /xf0/x96/xa0/x83 BAMUM LETTER PHASE-A PON MFON PIPAEMBA ++ /xf0/x96/xa0/x84 BAMUM LETTER PHASE-A NAA MFON ++ /xf0/x96/xa0/x85 BAMUM LETTER PHASE-A SHUENSHUET ++ /xf0/x96/xa0/x86 BAMUM LETTER PHASE-A TITA MFON ++ /xf0/x96/xa0/x87 BAMUM LETTER PHASE-A NZA MFON ++ /xf0/x96/xa0/x88 BAMUM LETTER PHASE-A SHINDA PA NJI ++ /xf0/x96/xa0/x89 BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE ++ /xf0/x96/xa0/x8a BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA ++ /xf0/x96/xa0/x8b BAMUM LETTER PHASE-A MAEMBGBIEE ++ /xf0/x96/xa0/x8c BAMUM LETTER PHASE-A TU MAEMBA ++ /xf0/x96/xa0/x8d BAMUM LETTER PHASE-A NGANGU ++ /xf0/x96/xa0/x8e BAMUM LETTER PHASE-A MAEMVEUX ++ /xf0/x96/xa0/x8f BAMUM LETTER PHASE-A MANSUAE ++ /xf0/x96/xa0/x90 BAMUM LETTER PHASE-A MVEUAENGAM ++ /xf0/x96/xa0/x91 BAMUM LETTER PHASE-A SEUNYAM ++ /xf0/x96/xa0/x92 BAMUM LETTER PHASE-A NTOQPEN ++ /xf0/x96/xa0/x93 BAMUM LETTER PHASE-A KEUKEUTNDA ++ /xf0/x96/xa0/x94 BAMUM LETTER PHASE-A NKINDI ++ /xf0/x96/xa0/x95 BAMUM LETTER PHASE-A SUU ++ /xf0/x96/xa0/x96 BAMUM LETTER PHASE-A NGKUENZEUM ++ /xf0/x96/xa0/x97 BAMUM LETTER PHASE-A LAPAQ ++ /xf0/x96/xa0/x98 BAMUM LETTER PHASE-A LET KUT ++ /xf0/x96/xa0/x99 BAMUM LETTER PHASE-A NTAP MFAA ++ /xf0/x96/xa0/x9a BAMUM LETTER PHASE-A MAEKEUP ++ /xf0/x96/xa0/x9b BAMUM LETTER PHASE-A PASHAE ++ /xf0/x96/xa0/x9c BAMUM LETTER PHASE-A GHEUAERAE ++ /xf0/x96/xa0/x9d BAMUM LETTER PHASE-A PAMSHAE ++ /xf0/x96/xa0/x9e BAMUM LETTER PHASE-A MON NGGEUAET ++ /xf0/x96/xa0/x9f BAMUM LETTER PHASE-A NZUN MEUT ++ /xf0/x96/xa0/xa0 BAMUM LETTER PHASE-A U YUQ NAE ++ /xf0/x96/xa0/xa1 BAMUM LETTER PHASE-A GHEUAEGHEUAE ++ /xf0/x96/xa0/xa2 BAMUM LETTER PHASE-A NTAP NTAA ++ /xf0/x96/xa0/xa3 BAMUM LETTER PHASE-A SISA ++ /xf0/x96/xa0/xa4 BAMUM LETTER PHASE-A MGBASA ++ /xf0/x96/xa0/xa5 BAMUM LETTER PHASE-A MEUNJOMNDEUQ ++ /xf0/x96/xa0/xa6 BAMUM LETTER PHASE-A MOOMPUQ ++ /xf0/x96/xa0/xa7 BAMUM LETTER PHASE-A KAFA ++ /xf0/x96/xa0/xa8 BAMUM LETTER PHASE-A PA LEERAEWA ++ /xf0/x96/xa0/xa9 BAMUM LETTER PHASE-A NDA LEERAEWA ++ /xf0/x96/xa0/xaa BAMUM LETTER PHASE-A PET ++ /xf0/x96/xa0/xab BAMUM LETTER PHASE-A MAEMKPEN ++ /xf0/x96/xa0/xac BAMUM LETTER PHASE-A NIKA ++ /xf0/x96/xa0/xad BAMUM LETTER PHASE-A PUP ++ /xf0/x96/xa0/xae BAMUM LETTER PHASE-A TUAEP ++ /xf0/x96/xa0/xaf BAMUM LETTER PHASE-A LUAEP ++ /xf0/x96/xa0/xb0 BAMUM LETTER PHASE-A SONJAM ++ /xf0/x96/xa0/xb1 BAMUM LETTER PHASE-A TEUTEUWEN ++ /xf0/x96/xa0/xb2 BAMUM LETTER PHASE-A MAENYI ++ /xf0/x96/xa0/xb3 BAMUM LETTER PHASE-A KET ++ /xf0/x96/xa0/xb4 BAMUM LETTER PHASE-A NDAANGGEUAET ++ /xf0/x96/xa0/xb5 BAMUM LETTER PHASE-A KUOQ ++ /xf0/x96/xa0/xb6 BAMUM LETTER PHASE-A MOOMEUT ++ /xf0/x96/xa0/xb7 BAMUM LETTER PHASE-A SHUM ++ /xf0/x96/xa0/xb8 BAMUM LETTER PHASE-A LOMMAE ++ /xf0/x96/xa0/xb9 BAMUM LETTER PHASE-A FIRI ++ /xf0/x96/xa0/xba BAMUM LETTER PHASE-A ROM ++ /xf0/x96/xa0/xbb BAMUM LETTER PHASE-A KPOQ ++ /xf0/x96/xa0/xbc BAMUM LETTER PHASE-A SOQ ++ /xf0/x96/xa0/xbd BAMUM LETTER PHASE-A MAP PIEET ++ /xf0/x96/xa0/xbe BAMUM LETTER PHASE-A SHIRAE ++ /xf0/x96/xa0/xbf BAMUM LETTER PHASE-A NTAP ++ /xf0/x96/xa1/x80 BAMUM LETTER PHASE-A SHOQ NSHUT YUM ++ /xf0/x96/xa1/x81 BAMUM LETTER PHASE-A NYIT MONGKEUAEQ ++ /xf0/x96/xa1/x82 BAMUM LETTER PHASE-A PAARAE ++ /xf0/x96/xa1/x83 BAMUM LETTER PHASE-A NKAARAE ++ /xf0/x96/xa1/x84 BAMUM LETTER PHASE-A UNKNOWN ++ /xf0/x96/xa1/x85 BAMUM LETTER PHASE-A NGGEN ++ /xf0/x96/xa1/x86 BAMUM LETTER PHASE-A MAESI ++ /xf0/x96/xa1/x87 BAMUM LETTER PHASE-A NJAM ++ /xf0/x96/xa1/x88 BAMUM LETTER PHASE-A MBANYI ++ /xf0/x96/xa1/x89 BAMUM LETTER PHASE-A NYET ++ /xf0/x96/xa1/x8a BAMUM LETTER PHASE-A TEUAEN ++ /xf0/x96/xa1/x8b BAMUM LETTER PHASE-A SOT ++ /xf0/x96/xa1/x8c BAMUM LETTER PHASE-A PAAM ++ /xf0/x96/xa1/x8d BAMUM LETTER PHASE-A NSHIEE ++ /xf0/x96/xa1/x8e BAMUM LETTER PHASE-A MAEM ++ /xf0/x96/xa1/x8f BAMUM LETTER PHASE-A NYI ++ /xf0/x96/xa1/x90 BAMUM LETTER PHASE-A KAQ ++ /xf0/x96/xa1/x91 BAMUM LETTER PHASE-A NSHA ++ /xf0/x96/xa1/x92 BAMUM LETTER PHASE-A VEE ++ /xf0/x96/xa1/x93 BAMUM LETTER PHASE-A LU ++ /xf0/x96/xa1/x94 BAMUM LETTER PHASE-A NEN ++ /xf0/x96/xa1/x95 BAMUM LETTER PHASE-A NAQ ++ /xf0/x96/xa1/x96 BAMUM LETTER PHASE-A MBAQ ++ /xf0/x96/xa1/x97 BAMUM LETTER PHASE-B NSHUET ++ /xf0/x96/xa1/x98 BAMUM LETTER PHASE-B TU MAEMGBIEE ++ /xf0/x96/xa1/x99 BAMUM LETTER PHASE-B SIEE ++ /xf0/x96/xa1/x9a BAMUM LETTER PHASE-B SET TU ++ /xf0/x96/xa1/x9b BAMUM LETTER PHASE-B LOM NTEUM ++ /xf0/x96/xa1/x9c BAMUM LETTER PHASE-B MBA MAELEE ++ /xf0/x96/xa1/x9d BAMUM LETTER PHASE-B KIEEM ++ /xf0/x96/xa1/x9e BAMUM LETTER PHASE-B YEURAE ++ /xf0/x96/xa1/x9f BAMUM LETTER PHASE-B MBAARAE ++ /xf0/x96/xa1/xa0 BAMUM LETTER PHASE-B KAM ++ /xf0/x96/xa1/xa1 BAMUM LETTER PHASE-B PEESHI ++ /xf0/x96/xa1/xa2 BAMUM LETTER PHASE-B YAFU LEERAEWA ++ /xf0/x96/xa1/xa3 BAMUM LETTER PHASE-B LAM NSHUT NYAM ++ /xf0/x96/xa1/xa4 BAMUM LETTER PHASE-B NTIEE SHEUOQ ++ /xf0/x96/xa1/xa5 BAMUM LETTER PHASE-B NDU NJAA ++ /xf0/x96/xa1/xa6 BAMUM LETTER PHASE-B GHEUGHEUAEM ++ /xf0/x96/xa1/xa7 BAMUM LETTER PHASE-B PIT ++ /xf0/x96/xa1/xa8 BAMUM LETTER PHASE-B TU NSIEE ++ /xf0/x96/xa1/xa9 BAMUM LETTER PHASE-B SHET NJAQ ++ /xf0/x96/xa1/xaa BAMUM LETTER PHASE-B SHEUAEQTU ++ /xf0/x96/xa1/xab BAMUM LETTER PHASE-B MFON TEUAEQ ++ /xf0/x96/xa1/xac BAMUM LETTER PHASE-B MBIT MBAAKET ++ /xf0/x96/xa1/xad BAMUM LETTER PHASE-B NYI NTEUM ++ /xf0/x96/xa1/xae BAMUM LETTER PHASE-B KEUPUQ ++ /xf0/x96/xa1/xaf BAMUM LETTER PHASE-B GHEUGHEN ++ /xf0/x96/xa1/xb0 BAMUM LETTER PHASE-B KEUYEUX ++ /xf0/x96/xa1/xb1 BAMUM LETTER PHASE-B LAANAE ++ /xf0/x96/xa1/xb2 BAMUM LETTER PHASE-B PARUM ++ /xf0/x96/xa1/xb3 BAMUM LETTER PHASE-B VEUM ++ /xf0/x96/xa1/xb4 BAMUM LETTER PHASE-B NGKINDI MVOP ++ /xf0/x96/xa1/xb5 BAMUM LETTER PHASE-B NGGEU MBU ++ /xf0/x96/xa1/xb6 BAMUM LETTER PHASE-B WUAET ++ /xf0/x96/xa1/xb7 BAMUM LETTER PHASE-B SAKEUAE ++ /xf0/x96/xa1/xb8 BAMUM LETTER PHASE-B TAAM ++ /xf0/x96/xa1/xb9 BAMUM LETTER PHASE-B MEUQ ++ /xf0/x96/xa1/xba BAMUM LETTER PHASE-B NGGUOQ ++ /xf0/x96/xa1/xbb BAMUM LETTER PHASE-B NGGUOQ LARGE ++ /xf0/x96/xa1/xbc BAMUM LETTER PHASE-B MFIYAQ ++ /xf0/x96/xa1/xbd BAMUM LETTER PHASE-B SUE ++ /xf0/x96/xa1/xbe BAMUM LETTER PHASE-B MBEURI ++ /xf0/x96/xa1/xbf BAMUM LETTER PHASE-B MONTIEEN ++ /xf0/x96/xa2/x80 BAMUM LETTER PHASE-B NYAEMAE ++ /xf0/x96/xa2/x81 BAMUM LETTER PHASE-B PUNGAAM ++ /xf0/x96/xa2/x82 BAMUM LETTER PHASE-B MEUT NGGEET ++ /xf0/x96/xa2/x83 BAMUM LETTER PHASE-B FEUX ++ /xf0/x96/xa2/x84 BAMUM LETTER PHASE-B MBUOQ ++ /xf0/x96/xa2/x85 BAMUM LETTER PHASE-B FEE ++ /xf0/x96/xa2/x86 BAMUM LETTER PHASE-B KEUAEM ++ /xf0/x96/xa2/x87 BAMUM LETTER PHASE-B MA NJEUAENA ++ /xf0/x96/xa2/x88 BAMUM LETTER PHASE-B MA NJUQA ++ /xf0/x96/xa2/x89 BAMUM LETTER PHASE-B LET ++ /xf0/x96/xa2/x8a BAMUM LETTER PHASE-B NGGAAM ++ /xf0/x96/xa2/x8b BAMUM LETTER PHASE-B NSEN ++ /xf0/x96/xa2/x8c BAMUM LETTER PHASE-B MA ++ /xf0/x96/xa2/x8d BAMUM LETTER PHASE-B KIQ ++ /xf0/x96/xa2/x8e BAMUM LETTER PHASE-B NGOM ++ /xf0/x96/xa2/x8f BAMUM LETTER PHASE-C NGKUE MAEMBA ++ /xf0/x96/xa2/x90 BAMUM LETTER PHASE-C NZA ++ /xf0/x96/xa2/x91 BAMUM LETTER PHASE-C YUM ++ /xf0/x96/xa2/x92 BAMUM LETTER PHASE-C WANGKUOQ ++ /xf0/x96/xa2/x93 BAMUM LETTER PHASE-C NGGEN ++ /xf0/x96/xa2/x94 BAMUM LETTER PHASE-C NDEUAEREE ++ /xf0/x96/xa2/x95 BAMUM LETTER PHASE-C NGKAQ ++ /xf0/x96/xa2/x96 BAMUM LETTER PHASE-C GHARAE ++ /xf0/x96/xa2/x97 BAMUM LETTER PHASE-C MBEEKEET ++ /xf0/x96/xa2/x98 BAMUM LETTER PHASE-C GBAYI ++ /xf0/x96/xa2/x99 BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN ++ /xf0/x96/xa2/x9a BAMUM LETTER PHASE-C NTU MBIT ++ /xf0/x96/xa2/x9b BAMUM LETTER PHASE-C MBEUM ++ /xf0/x96/xa2/x9c BAMUM LETTER PHASE-C PIRIEEN ++ /xf0/x96/xa2/x9d BAMUM LETTER PHASE-C NDOMBU ++ /xf0/x96/xa2/x9e BAMUM LETTER PHASE-C MBAA CABBAGE-TREE ++ /xf0/x96/xa2/x9f BAMUM LETTER PHASE-C KEUSHEUAEP ++ /xf0/x96/xa2/xa0 BAMUM LETTER PHASE-C GHAP ++ /xf0/x96/xa2/xa1 BAMUM LETTER PHASE-C KEUKAQ ++ /xf0/x96/xa2/xa2 BAMUM LETTER PHASE-C YU MUOMAE ++ /xf0/x96/xa2/xa3 BAMUM LETTER PHASE-C NZEUM ++ /xf0/x96/xa2/xa4 BAMUM LETTER PHASE-C MBUE ++ /xf0/x96/xa2/xa5 BAMUM LETTER PHASE-C NSEUAEN ++ /xf0/x96/xa2/xa6 BAMUM LETTER PHASE-C MBIT ++ /xf0/x96/xa2/xa7 BAMUM LETTER PHASE-C YEUQ ++ /xf0/x96/xa2/xa8 BAMUM LETTER PHASE-C KPARAQ ++ /xf0/x96/xa2/xa9 BAMUM LETTER PHASE-C KAA ++ /xf0/x96/xa2/xaa BAMUM LETTER PHASE-C SEUX ++ /xf0/x96/xa2/xab BAMUM LETTER PHASE-C NDIDA ++ /xf0/x96/xa2/xac BAMUM LETTER PHASE-C TAASHAE ++ /xf0/x96/xa2/xad BAMUM LETTER PHASE-C NJUEQ ++ /xf0/x96/xa2/xae BAMUM LETTER PHASE-C TITA YUE ++ /xf0/x96/xa2/xaf BAMUM LETTER PHASE-C SUAET ++ /xf0/x96/xa2/xb0 BAMUM LETTER PHASE-C NGGUAEN NYAM ++ /xf0/x96/xa2/xb1 BAMUM LETTER PHASE-C VEUX ++ /xf0/x96/xa2/xb2 BAMUM LETTER PHASE-C NANSANAQ ++ /xf0/x96/xa2/xb3 BAMUM LETTER PHASE-C MA KEUAERI ++ /xf0/x96/xa2/xb4 BAMUM LETTER PHASE-C NTAA ++ /xf0/x96/xa2/xb5 BAMUM LETTER PHASE-C NGGUON ++ /xf0/x96/xa2/xb6 BAMUM LETTER PHASE-C LAP ++ /xf0/x96/xa2/xb7 BAMUM LETTER PHASE-C MBIRIEEN ++ /xf0/x96/xa2/xb8 BAMUM LETTER PHASE-C MGBASAQ ++ /xf0/x96/xa2/xb9 BAMUM LETTER PHASE-C NTEUNGBA ++ /xf0/x96/xa2/xba BAMUM LETTER PHASE-C TEUTEUX ++ /xf0/x96/xa2/xbb BAMUM LETTER PHASE-C NGGUM ++ /xf0/x96/xa2/xbc BAMUM LETTER PHASE-C FUE ++ /xf0/x96/xa2/xbd BAMUM LETTER PHASE-C NDEUT ++ /xf0/x96/xa2/xbe BAMUM LETTER PHASE-C NSA ++ /xf0/x96/xa2/xbf BAMUM LETTER PHASE-C NSHAQ ++ /xf0/x96/xa3/x80 BAMUM LETTER PHASE-C BUNG ++ /xf0/x96/xa3/x81 BAMUM LETTER PHASE-C VEUAEPEN ++ /xf0/x96/xa3/x82 BAMUM LETTER PHASE-C MBERAE ++ /xf0/x96/xa3/x83 BAMUM LETTER PHASE-C RU ++ /xf0/x96/xa3/x84 BAMUM LETTER PHASE-C NJAEM ++ /xf0/x96/xa3/x85 BAMUM LETTER PHASE-C LAM ++ /xf0/x96/xa3/x86 BAMUM LETTER PHASE-C TITUAEP ++ /xf0/x96/xa3/x87 BAMUM LETTER PHASE-C NSUOT NGOM ++ /xf0/x96/xa3/x88 BAMUM LETTER PHASE-C NJEEEE ++ /xf0/x96/xa3/x89 BAMUM LETTER PHASE-C KET ++ /xf0/x96/xa3/x8a BAMUM LETTER PHASE-C NGGU ++ /xf0/x96/xa3/x8b BAMUM LETTER PHASE-C MAESI ++ /xf0/x96/xa3/x8c BAMUM LETTER PHASE-C MBUAEM ++ /xf0/x96/xa3/x8d BAMUM LETTER PHASE-C LU ++ /xf0/x96/xa3/x8e BAMUM LETTER PHASE-C KUT ++ /xf0/x96/xa3/x8f BAMUM LETTER PHASE-C NJAM ++ /xf0/x96/xa3/x90 BAMUM LETTER PHASE-C NGOM ++ /xf0/x96/xa3/x91 BAMUM LETTER PHASE-C WUP ++ /xf0/x96/xa3/x92 BAMUM LETTER PHASE-C NGGUEET ++ /xf0/x96/xa3/x93 BAMUM LETTER PHASE-C NSOM ++ /xf0/x96/xa3/x94 BAMUM LETTER PHASE-C NTEN ++ /xf0/x96/xa3/x95 BAMUM LETTER PHASE-C KUOP NKAARAE ++ /xf0/x96/xa3/x96 BAMUM LETTER PHASE-C NSUN ++ /xf0/x96/xa3/x97 BAMUM LETTER PHASE-C NDAM ++ /xf0/x96/xa3/x98 BAMUM LETTER PHASE-C MA NSIEE ++ /xf0/x96/xa3/x99 BAMUM LETTER PHASE-C YAA ++ /xf0/x96/xa3/x9a BAMUM LETTER PHASE-C NDAP ++ /xf0/x96/xa3/x9b BAMUM LETTER PHASE-C SHUEQ ++ /xf0/x96/xa3/x9c BAMUM LETTER PHASE-C SETFON ++ /xf0/x96/xa3/x9d BAMUM LETTER PHASE-C MBI ++ /xf0/x96/xa3/x9e BAMUM LETTER PHASE-C MAEMBA ++ /xf0/x96/xa3/x9f BAMUM LETTER PHASE-C MBANYI ++ /xf0/x96/xa3/xa0 BAMUM LETTER PHASE-C KEUSEUX ++ /xf0/x96/xa3/xa1 BAMUM LETTER PHASE-C MBEUX ++ /xf0/x96/xa3/xa2 BAMUM LETTER PHASE-C KEUM ++ /xf0/x96/xa3/xa3 BAMUM LETTER PHASE-C MBAA PICKET ++ /xf0/x96/xa3/xa4 BAMUM LETTER PHASE-C YUWOQ ++ /xf0/x96/xa3/xa5 BAMUM LETTER PHASE-C NJEUX ++ /xf0/x96/xa3/xa6 BAMUM LETTER PHASE-C MIEE ++ /xf0/x96/xa3/xa7 BAMUM LETTER PHASE-C MUAE ++ /xf0/x96/xa3/xa8 BAMUM LETTER PHASE-C SHIQ ++ /xf0/x96/xa3/xa9 BAMUM LETTER PHASE-C KEN LAW ++ /xf0/x96/xa3/xaa BAMUM LETTER PHASE-C KEN FATIGUE ++ /xf0/x96/xa3/xab BAMUM LETTER PHASE-C NGAQ ++ /xf0/x96/xa3/xac BAMUM LETTER PHASE-C NAQ ++ /xf0/x96/xa3/xad BAMUM LETTER PHASE-C LIQ ++ /xf0/x96/xa3/xae BAMUM LETTER PHASE-C PIN ++ /xf0/x96/xa3/xaf BAMUM LETTER PHASE-C PEN ++ /xf0/x96/xa3/xb0 BAMUM LETTER PHASE-C TET ++ /xf0/x96/xa3/xb1 BAMUM LETTER PHASE-D MBUO ++ /xf0/x96/xa3/xb2 BAMUM LETTER PHASE-D WAP ++ /xf0/x96/xa3/xb3 BAMUM LETTER PHASE-D NJI ++ /xf0/x96/xa3/xb4 BAMUM LETTER PHASE-D MFON ++ /xf0/x96/xa3/xb5 BAMUM LETTER PHASE-D NJIEE ++ /xf0/x96/xa3/xb6 BAMUM LETTER PHASE-D LIEE ++ /xf0/x96/xa3/xb7 BAMUM LETTER PHASE-D NJEUT ++ /xf0/x96/xa3/xb8 BAMUM LETTER PHASE-D NSHEE ++ /xf0/x96/xa3/xb9 BAMUM LETTER PHASE-D NGGAAMAE ++ /xf0/x96/xa3/xba BAMUM LETTER PHASE-D NYAM ++ /xf0/x96/xa3/xbb BAMUM LETTER PHASE-D WUAEN ++ /xf0/x96/xa3/xbc BAMUM LETTER PHASE-D NGKUN ++ /xf0/x96/xa3/xbd BAMUM LETTER PHASE-D SHEE ++ /xf0/x96/xa3/xbe BAMUM LETTER PHASE-D NGKAP ++ /xf0/x96/xa3/xbf BAMUM LETTER PHASE-D KEUAETMEUN ++ /xf0/x96/xa4/x80 BAMUM LETTER PHASE-D TEUT ++ /xf0/x96/xa4/x81 BAMUM LETTER PHASE-D SHEUAE ++ /xf0/x96/xa4/x82 BAMUM LETTER PHASE-D NJAP ++ /xf0/x96/xa4/x83 BAMUM LETTER PHASE-D SUE ++ /xf0/x96/xa4/x84 BAMUM LETTER PHASE-D KET ++ /xf0/x96/xa4/x85 BAMUM LETTER PHASE-D YAEMMAE ++ /xf0/x96/xa4/x86 BAMUM LETTER PHASE-D KUOM ++ /xf0/x96/xa4/x87 BAMUM LETTER PHASE-D SAP ++ /xf0/x96/xa4/x88 BAMUM LETTER PHASE-D MFEUT ++ /xf0/x96/xa4/x89 BAMUM LETTER PHASE-D NDEUX ++ /xf0/x96/xa4/x8a BAMUM LETTER PHASE-D MALEERI ++ /xf0/x96/xa4/x8b BAMUM LETTER PHASE-D MEUT ++ /xf0/x96/xa4/x8c BAMUM LETTER PHASE-D SEUAEQ ++ /xf0/x96/xa4/x8d BAMUM LETTER PHASE-D YEN ++ /xf0/x96/xa4/x8e BAMUM LETTER PHASE-D NJEUAEM ++ /xf0/x96/xa4/x8f BAMUM LETTER PHASE-D KEUOT MBUAE ++ /xf0/x96/xa4/x90 BAMUM LETTER PHASE-D NGKEURI ++ /xf0/x96/xa4/x91 BAMUM LETTER PHASE-D TU ++ /xf0/x96/xa4/x92 BAMUM LETTER PHASE-D GHAA ++ /xf0/x96/xa4/x93 BAMUM LETTER PHASE-D NGKYEE ++ /xf0/x96/xa4/x94 BAMUM LETTER PHASE-D FEUFEUAET ++ /xf0/x96/xa4/x95 BAMUM LETTER PHASE-D NDEE ++ /xf0/x96/xa4/x96 BAMUM LETTER PHASE-D MGBOFUM ++ /xf0/x96/xa4/x97 BAMUM LETTER PHASE-D LEUAEP ++ /xf0/x96/xa4/x98 BAMUM LETTER PHASE-D NDON ++ /xf0/x96/xa4/x99 BAMUM LETTER PHASE-D MONI ++ /xf0/x96/xa4/x9a BAMUM LETTER PHASE-D MGBEUN ++ /xf0/x96/xa4/x9b BAMUM LETTER PHASE-D PUUT ++ /xf0/x96/xa4/x9c BAMUM LETTER PHASE-D MGBIEE ++ /xf0/x96/xa4/x9d BAMUM LETTER PHASE-D MFO ++ /xf0/x96/xa4/x9e BAMUM LETTER PHASE-D LUM ++ /xf0/x96/xa4/x9f BAMUM LETTER PHASE-D NSIEEP ++ /xf0/x96/xa4/xa0 BAMUM LETTER PHASE-D MBAA ++ /xf0/x96/xa4/xa1 BAMUM LETTER PHASE-D KWAET ++ /xf0/x96/xa4/xa2 BAMUM LETTER PHASE-D NYET ++ /xf0/x96/xa4/xa3 BAMUM LETTER PHASE-D TEUAEN ++ /xf0/x96/xa4/xa4 BAMUM LETTER PHASE-D SOT ++ /xf0/x96/xa4/xa5 BAMUM LETTER PHASE-D YUWOQ ++ /xf0/x96/xa4/xa6 BAMUM LETTER PHASE-D KEUM ++ /xf0/x96/xa4/xa7 BAMUM LETTER PHASE-D RAEM ++ /xf0/x96/xa4/xa8 BAMUM LETTER PHASE-D TEEEE ++ /xf0/x96/xa4/xa9 BAMUM LETTER PHASE-D NGKEUAEQ ++ /xf0/x96/xa4/xaa BAMUM LETTER PHASE-D MFEUAE ++ /xf0/x96/xa4/xab BAMUM LETTER PHASE-D NSIEET ++ /xf0/x96/xa4/xac BAMUM LETTER PHASE-D KEUP ++ /xf0/x96/xa4/xad BAMUM LETTER PHASE-D PIP ++ /xf0/x96/xa4/xae BAMUM LETTER PHASE-D PEUTAE ++ /xf0/x96/xa4/xaf BAMUM LETTER PHASE-D NYUE ++ /xf0/x96/xa4/xb0 BAMUM LETTER PHASE-D LET ++ /xf0/x96/xa4/xb1 BAMUM LETTER PHASE-D NGGAAM ++ /xf0/x96/xa4/xb2 BAMUM LETTER PHASE-D MFIEE ++ /xf0/x96/xa4/xb3 BAMUM LETTER PHASE-D NGGWAEN ++ /xf0/x96/xa4/xb4 BAMUM LETTER PHASE-D YUOM ++ /xf0/x96/xa4/xb5 BAMUM LETTER PHASE-D PAP ++ /xf0/x96/xa4/xb6 BAMUM LETTER PHASE-D YUOP ++ /xf0/x96/xa4/xb7 BAMUM LETTER PHASE-D NDAM ++ /xf0/x96/xa4/xb8 BAMUM LETTER PHASE-D NTEUM ++ /xf0/x96/xa4/xb9 BAMUM LETTER PHASE-D SUAE ++ /xf0/x96/xa4/xba BAMUM LETTER PHASE-D KUN ++ /xf0/x96/xa4/xbb BAMUM LETTER PHASE-D NGGEUX ++ /xf0/x96/xa4/xbc BAMUM LETTER PHASE-D NGKIEE ++ /xf0/x96/xa4/xbd BAMUM LETTER PHASE-D TUOT ++ /xf0/x96/xa4/xbe BAMUM LETTER PHASE-D MEUN ++ /xf0/x96/xa4/xbf BAMUM LETTER PHASE-D KUQ ++ /xf0/x96/xa5/x80 BAMUM LETTER PHASE-D NSUM ++ /xf0/x96/xa5/x81 BAMUM LETTER PHASE-D TEUN ++ /xf0/x96/xa5/x82 BAMUM LETTER PHASE-D MAENJET ++ /xf0/x96/xa5/x83 BAMUM LETTER PHASE-D NGGAP ++ /xf0/x96/xa5/x84 BAMUM LETTER PHASE-D LEUM ++ /xf0/x96/xa5/x85 BAMUM LETTER PHASE-D NGGUOM ++ /xf0/x96/xa5/x86 BAMUM LETTER PHASE-D NSHUT ++ /xf0/x96/xa5/x87 BAMUM LETTER PHASE-D NJUEQ ++ /xf0/x96/xa5/x88 BAMUM LETTER PHASE-D GHEUAE ++ /xf0/x96/xa5/x89 BAMUM LETTER PHASE-D KU ++ /xf0/x96/xa5/x8a BAMUM LETTER PHASE-D REN OLD ++ /xf0/x96/xa5/x8b BAMUM LETTER PHASE-D TAE ++ /xf0/x96/xa5/x8c BAMUM LETTER PHASE-D TOQ ++ /xf0/x96/xa5/x8d BAMUM LETTER PHASE-D NYI ++ /xf0/x96/xa5/x8e BAMUM LETTER PHASE-D RII ++ /xf0/x96/xa5/x8f BAMUM LETTER PHASE-D LEEEE ++ /xf0/x96/xa5/x90 BAMUM LETTER PHASE-D MEEEE ++ /xf0/x96/xa5/x91 BAMUM LETTER PHASE-D M ++ /xf0/x96/xa5/x92 BAMUM LETTER PHASE-D SUU ++ /xf0/x96/xa5/x93 BAMUM LETTER PHASE-D MU ++ /xf0/x96/xa5/x94 BAMUM LETTER PHASE-D SHII ++ /xf0/x96/xa5/x95 BAMUM LETTER PHASE-D SHEUX ++ /xf0/x96/xa5/x96 BAMUM LETTER PHASE-D KYEE ++ /xf0/x96/xa5/x97 BAMUM LETTER PHASE-D NU ++ /xf0/x96/xa5/x98 BAMUM LETTER PHASE-D SHU ++ /xf0/x96/xa5/x99 BAMUM LETTER PHASE-D NTEE ++ /xf0/x96/xa5/x9a BAMUM LETTER PHASE-D PEE ++ /xf0/x96/xa5/x9b BAMUM LETTER PHASE-D NI ++ /xf0/x96/xa5/x9c BAMUM LETTER PHASE-D SHOQ ++ /xf0/x96/xa5/x9d BAMUM LETTER PHASE-D PUQ ++ /xf0/x96/xa5/x9e BAMUM LETTER PHASE-D MVOP ++ /xf0/x96/xa5/x9f BAMUM LETTER PHASE-D LOQ ++ /xf0/x96/xa5/xa0 BAMUM LETTER PHASE-D REN MUCH ++ /xf0/x96/xa5/xa1 BAMUM LETTER PHASE-D TI ++ /xf0/x96/xa5/xa2 BAMUM LETTER PHASE-D NTUU ++ /xf0/x96/xa5/xa3 BAMUM LETTER PHASE-D MBAA SEVEN ++ /xf0/x96/xa5/xa4 BAMUM LETTER PHASE-D SAQ ++ /xf0/x96/xa5/xa5 BAMUM LETTER PHASE-D FAA ++ /xf0/x96/xa5/xa6 BAMUM LETTER PHASE-E NDAP ++ /xf0/x96/xa5/xa7 BAMUM LETTER PHASE-E TOON ++ /xf0/x96/xa5/xa8 BAMUM LETTER PHASE-E MBEUM ++ /xf0/x96/xa5/xa9 BAMUM LETTER PHASE-E LAP ++ /xf0/x96/xa5/xaa BAMUM LETTER PHASE-E VOM ++ /xf0/x96/xa5/xab BAMUM LETTER PHASE-E LOON ++ /xf0/x96/xa5/xac BAMUM LETTER PHASE-E PAA ++ /xf0/x96/xa5/xad BAMUM LETTER PHASE-E SOM ++ /xf0/x96/xa5/xae BAMUM LETTER PHASE-E RAQ ++ /xf0/x96/xa5/xaf BAMUM LETTER PHASE-E NSHUOP ++ /xf0/x96/xa5/xb0 BAMUM LETTER PHASE-E NDUN ++ /xf0/x96/xa5/xb1 BAMUM LETTER PHASE-E PUAE ++ /xf0/x96/xa5/xb2 BAMUM LETTER PHASE-E TAM ++ /xf0/x96/xa5/xb3 BAMUM LETTER PHASE-E NGKA ++ /xf0/x96/xa5/xb4 BAMUM LETTER PHASE-E KPEUX ++ /xf0/x96/xa5/xb5 BAMUM LETTER PHASE-E WUO ++ /xf0/x96/xa5/xb6 BAMUM LETTER PHASE-E SEE ++ /xf0/x96/xa5/xb7 BAMUM LETTER PHASE-E NGGEUAET ++ /xf0/x96/xa5/xb8 BAMUM LETTER PHASE-E PAAM ++ /xf0/x96/xa5/xb9 BAMUM LETTER PHASE-E TOO ++ /xf0/x96/xa5/xba BAMUM LETTER PHASE-E KUOP ++ /xf0/x96/xa5/xbb BAMUM LETTER PHASE-E LOM ++ /xf0/x96/xa5/xbc BAMUM LETTER PHASE-E NSHIEE ++ /xf0/x96/xa5/xbd BAMUM LETTER PHASE-E NGOP ++ /xf0/x96/xa5/xbe BAMUM LETTER PHASE-E MAEM ++ /xf0/x96/xa5/xbf BAMUM LETTER PHASE-E NGKEUX ++ /xf0/x96/xa6/x80 BAMUM LETTER PHASE-E NGOQ ++ /xf0/x96/xa6/x81 BAMUM LETTER PHASE-E NSHUE ++ /xf0/x96/xa6/x82 BAMUM LETTER PHASE-E RIMGBA ++ /xf0/x96/xa6/x83 BAMUM LETTER PHASE-E NJEUX ++ /xf0/x96/xa6/x84 BAMUM LETTER PHASE-E PEEM ++ /xf0/x96/xa6/x85 BAMUM LETTER PHASE-E SAA ++ /xf0/x96/xa6/x86 BAMUM LETTER PHASE-E NGGURAE ++ /xf0/x96/xa6/x87 BAMUM LETTER PHASE-E MGBA ++ /xf0/x96/xa6/x88 BAMUM LETTER PHASE-E GHEUX ++ /xf0/x96/xa6/x89 BAMUM LETTER PHASE-E NGKEUAEM ++ /xf0/x96/xa6/x8a BAMUM LETTER PHASE-E NJAEMLI ++ /xf0/x96/xa6/x8b BAMUM LETTER PHASE-E MAP ++ /xf0/x96/xa6/x8c BAMUM LETTER PHASE-E LOOT ++ /xf0/x96/xa6/x8d BAMUM LETTER PHASE-E NGGEEEE ++ /xf0/x96/xa6/x8e BAMUM LETTER PHASE-E NDIQ ++ /xf0/x96/xa6/x8f BAMUM LETTER PHASE-E TAEN NTEUM ++ /xf0/x96/xa6/x90 BAMUM LETTER PHASE-E SET ++ /xf0/x96/xa6/x91 BAMUM LETTER PHASE-E PUM ++ /xf0/x96/xa6/x92 BAMUM LETTER PHASE-E NDAA SOFTNESS ++ /xf0/x96/xa6/x93 BAMUM LETTER PHASE-E NGGUAESHAE NYAM ++ /xf0/x96/xa6/x94 BAMUM LETTER PHASE-E YIEE ++ /xf0/x96/xa6/x95 BAMUM LETTER PHASE-E GHEUN ++ /xf0/x96/xa6/x96 BAMUM LETTER PHASE-E TUAE ++ /xf0/x96/xa6/x97 BAMUM LETTER PHASE-E YEUAE ++ /xf0/x96/xa6/x98 BAMUM LETTER PHASE-E PO ++ /xf0/x96/xa6/x99 BAMUM LETTER PHASE-E TUMAE ++ /xf0/x96/xa6/x9a BAMUM LETTER PHASE-E KEUAE ++ /xf0/x96/xa6/x9b BAMUM LETTER PHASE-E SUAEN ++ /xf0/x96/xa6/x9c BAMUM LETTER PHASE-E TEUAEQ ++ /xf0/x96/xa6/x9d BAMUM LETTER PHASE-E VEUAE ++ /xf0/x96/xa6/x9e BAMUM LETTER PHASE-E WEUX ++ /xf0/x96/xa6/x9f BAMUM LETTER PHASE-E LAAM ++ /xf0/x96/xa6/xa0 BAMUM LETTER PHASE-E PU ++ /xf0/x96/xa6/xa1 BAMUM LETTER PHASE-E TAAQ ++ /xf0/x96/xa6/xa2 BAMUM LETTER PHASE-E GHAAMAE ++ /xf0/x96/xa6/xa3 BAMUM LETTER PHASE-E NGEUREUT ++ /xf0/x96/xa6/xa4 BAMUM LETTER PHASE-E SHEUAEQ ++ /xf0/x96/xa6/xa5 BAMUM LETTER PHASE-E MGBEN ++ /xf0/x96/xa6/xa6 BAMUM LETTER PHASE-E MBEE ++ /xf0/x96/xa6/xa7 BAMUM LETTER PHASE-E NZAQ ++ /xf0/x96/xa6/xa8 BAMUM LETTER PHASE-E NKOM ++ /xf0/x96/xa6/xa9 BAMUM LETTER PHASE-E GBET ++ /xf0/x96/xa6/xaa BAMUM LETTER PHASE-E TUM ++ /xf0/x96/xa6/xab BAMUM LETTER PHASE-E KUET ++ /xf0/x96/xa6/xac BAMUM LETTER PHASE-E YAP ++ /xf0/x96/xa6/xad BAMUM LETTER PHASE-E NYI CLEAVER ++ /xf0/x96/xa6/xae BAMUM LETTER PHASE-E YIT ++ /xf0/x96/xa6/xaf BAMUM LETTER PHASE-E MFEUQ ++ /xf0/x96/xa6/xb0 BAMUM LETTER PHASE-E NDIAQ ++ /xf0/x96/xa6/xb1 BAMUM LETTER PHASE-E PIEEQ ++ /xf0/x96/xa6/xb2 BAMUM LETTER PHASE-E YUEQ ++ /xf0/x96/xa6/xb3 BAMUM LETTER PHASE-E LEUAEM ++ /xf0/x96/xa6/xb4 BAMUM LETTER PHASE-E FUE ++ /xf0/x96/xa6/xb5 BAMUM LETTER PHASE-E GBEUX ++ /xf0/x96/xa6/xb6 BAMUM LETTER PHASE-E NGKUP ++ /xf0/x96/xa6/xb7 BAMUM LETTER PHASE-E KET ++ /xf0/x96/xa6/xb8 BAMUM LETTER PHASE-E MAE ++ /xf0/x96/xa6/xb9 BAMUM LETTER PHASE-E NGKAAMI ++ /xf0/x96/xa6/xba BAMUM LETTER PHASE-E GHET ++ /xf0/x96/xa6/xbb BAMUM LETTER PHASE-E FA ++ /xf0/x96/xa6/xbc BAMUM LETTER PHASE-E NTUM ++ /xf0/x96/xa6/xbd BAMUM LETTER PHASE-E PEUT ++ /xf0/x96/xa6/xbe BAMUM LETTER PHASE-E YEUM ++ /xf0/x96/xa6/xbf BAMUM LETTER PHASE-E NGGEUAE ++ /xf0/x96/xa7/x80 BAMUM LETTER PHASE-E NYI BETWEEN ++ /xf0/x96/xa7/x81 BAMUM LETTER PHASE-E NZUQ ++ /xf0/x96/xa7/x82 BAMUM LETTER PHASE-E POON ++ /xf0/x96/xa7/x83 BAMUM LETTER PHASE-E MIEE ++ /xf0/x96/xa7/x84 BAMUM LETTER PHASE-E FUET ++ /xf0/x96/xa7/x85 BAMUM LETTER PHASE-E NAE ++ /xf0/x96/xa7/x86 BAMUM LETTER PHASE-E MUAE ++ /xf0/x96/xa7/x87 BAMUM LETTER PHASE-E GHEUAE ++ /xf0/x96/xa7/x88 BAMUM LETTER PHASE-E FU I ++ /xf0/x96/xa7/x89 BAMUM LETTER PHASE-E MVI ++ /xf0/x96/xa7/x8a BAMUM LETTER PHASE-E PUAQ ++ /xf0/x96/xa7/x8b BAMUM LETTER PHASE-E NGKUM ++ /xf0/x96/xa7/x8c BAMUM LETTER PHASE-E KUT ++ /xf0/x96/xa7/x8d BAMUM LETTER PHASE-E PIET ++ /xf0/x96/xa7/x8e BAMUM LETTER PHASE-E NTAP ++ /xf0/x96/xa7/x8f BAMUM LETTER PHASE-E YEUAET ++ /xf0/x96/xa7/x90 BAMUM LETTER PHASE-E NGGUP ++ /xf0/x96/xa7/x91 BAMUM LETTER PHASE-E PA PEOPLE ++ /xf0/x96/xa7/x92 BAMUM LETTER PHASE-E FU CALL ++ /xf0/x96/xa7/x93 BAMUM LETTER PHASE-E FOM ++ /xf0/x96/xa7/x94 BAMUM LETTER PHASE-E NJEE ++ /xf0/x96/xa7/x95 BAMUM LETTER PHASE-E A ++ /xf0/x96/xa7/x96 BAMUM LETTER PHASE-E TOQ ++ /xf0/x96/xa7/x97 BAMUM LETTER PHASE-E O ++ /xf0/x96/xa7/x98 BAMUM LETTER PHASE-E I ++ /xf0/x96/xa7/x99 BAMUM LETTER PHASE-E LAQ ++ /xf0/x96/xa7/x9a BAMUM LETTER PHASE-E PA PLURAL ++ /xf0/x96/xa7/x9b BAMUM LETTER PHASE-E TAA ++ /xf0/x96/xa7/x9c BAMUM LETTER PHASE-E TAQ ++ /xf0/x96/xa7/x9d BAMUM LETTER PHASE-E NDAA MY HOUSE ++ /xf0/x96/xa7/x9e BAMUM LETTER PHASE-E SHIQ ++ /xf0/x96/xa7/x9f BAMUM LETTER PHASE-E YEUX ++ /xf0/x96/xa7/xa0 BAMUM LETTER PHASE-E NGUAE ++ /xf0/x96/xa7/xa1 BAMUM LETTER PHASE-E YUAEN ++ /xf0/x96/xa7/xa2 BAMUM LETTER PHASE-E YOQ SWIMMING ++ /xf0/x96/xa7/xa3 BAMUM LETTER PHASE-E YOQ COVER ++ /xf0/x96/xa7/xa4 BAMUM LETTER PHASE-E YUQ ++ /xf0/x96/xa7/xa5 BAMUM LETTER PHASE-E YUN ++ /xf0/x96/xa7/xa6 BAMUM LETTER PHASE-E KEUX ++ /xf0/x96/xa7/xa7 BAMUM LETTER PHASE-E PEUX ++ /xf0/x96/xa7/xa8 BAMUM LETTER PHASE-E NJEE EPOCH ++ /xf0/x96/xa7/xa9 BAMUM LETTER PHASE-E PUE ++ /xf0/x96/xa7/xaa BAMUM LETTER PHASE-E WUE ++ /xf0/x96/xa7/xab BAMUM LETTER PHASE-E FEE ++ /xf0/x96/xa7/xac BAMUM LETTER PHASE-E VEE ++ /xf0/x96/xa7/xad BAMUM LETTER PHASE-E LU ++ /xf0/x96/xa7/xae BAMUM LETTER PHASE-E MI ++ /xf0/x96/xa7/xaf BAMUM LETTER PHASE-E REUX ++ /xf0/x96/xa7/xb0 BAMUM LETTER PHASE-E RAE ++ /xf0/x96/xa7/xb1 BAMUM LETTER PHASE-E NGUAET ++ /xf0/x96/xa7/xb2 BAMUM LETTER PHASE-E NGA ++ /xf0/x96/xa7/xb3 BAMUM LETTER PHASE-E SHO ++ /xf0/x96/xa7/xb4 BAMUM LETTER PHASE-E SHOQ ++ /xf0/x96/xa7/xb5 BAMUM LETTER PHASE-E FU REMEDY ++ /xf0/x96/xa7/xb6 BAMUM LETTER PHASE-E NA ++ /xf0/x96/xa7/xb7 BAMUM LETTER PHASE-E PI ++ /xf0/x96/xa7/xb8 BAMUM LETTER PHASE-E LOQ ++ /xf0/x96/xa7/xb9 BAMUM LETTER PHASE-E KO ++ /xf0/x96/xa7/xba BAMUM LETTER PHASE-E MEN ++ /xf0/x96/xa7/xbb BAMUM LETTER PHASE-E MA ++ /xf0/x96/xa7/xbc BAMUM LETTER PHASE-E MAQ ++ /xf0/x96/xa7/xbd BAMUM LETTER PHASE-E TEU ++ /xf0/x96/xa7/xbe BAMUM LETTER PHASE-E KI ++ /xf0/x96/xa7/xbf BAMUM LETTER PHASE-E MON ++ /xf0/x96/xa8/x80 BAMUM LETTER PHASE-E TEN ++ /xf0/x96/xa8/x81 BAMUM LETTER PHASE-E FAQ ++ /xf0/x96/xa8/x82 BAMUM LETTER PHASE-E GHOM ++ /xf0/x96/xa8/x83 BAMUM LETTER PHASE-F KA ++ /xf0/x96/xa8/x84 BAMUM LETTER PHASE-F U ++ /xf0/x96/xa8/x85 BAMUM LETTER PHASE-F KU ++ /xf0/x96/xa8/x86 BAMUM LETTER PHASE-F EE ++ /xf0/x96/xa8/x87 BAMUM LETTER PHASE-F REE ++ /xf0/x96/xa8/x88 BAMUM LETTER PHASE-F TAE ++ /xf0/x96/xa8/x89 BAMUM LETTER PHASE-F NYI ++ /xf0/x96/xa8/x8a BAMUM LETTER PHASE-F LA ++ /xf0/x96/xa8/x8b BAMUM LETTER PHASE-F RII ++ /xf0/x96/xa8/x8c BAMUM LETTER PHASE-F RIEE ++ /xf0/x96/xa8/x8d BAMUM LETTER PHASE-F MEEEE ++ /xf0/x96/xa8/x8e BAMUM LETTER PHASE-F TAA ++ /xf0/x96/xa8/x8f BAMUM LETTER PHASE-F NDAA ++ /xf0/x96/xa8/x90 BAMUM LETTER PHASE-F NJAEM ++ /xf0/x96/xa8/x91 BAMUM LETTER PHASE-F M ++ /xf0/x96/xa8/x92 BAMUM LETTER PHASE-F SUU ++ /xf0/x96/xa8/x93 BAMUM LETTER PHASE-F SHII ++ /xf0/x96/xa8/x94 BAMUM LETTER PHASE-F SI ++ /xf0/x96/xa8/x95 BAMUM LETTER PHASE-F SEUX ++ /xf0/x96/xa8/x96 BAMUM LETTER PHASE-F KYEE ++ /xf0/x96/xa8/x97 BAMUM LETTER PHASE-F KET ++ /xf0/x96/xa8/x98 BAMUM LETTER PHASE-F NUAE ++ /xf0/x96/xa8/x99 BAMUM LETTER PHASE-F NU ++ /xf0/x96/xa8/x9a BAMUM LETTER PHASE-F NJUAE ++ /xf0/x96/xa8/x9b BAMUM LETTER PHASE-F YOQ ++ /xf0/x96/xa8/x9c BAMUM LETTER PHASE-F SHU ++ /xf0/x96/xa8/x9d BAMUM LETTER PHASE-F YA ++ /xf0/x96/xa8/x9e BAMUM LETTER PHASE-F NSHA ++ /xf0/x96/xa8/x9f BAMUM LETTER PHASE-F PEUX ++ /xf0/x96/xa8/xa0 BAMUM LETTER PHASE-F NTEE ++ /xf0/x96/xa8/xa1 BAMUM LETTER PHASE-F WUE ++ /xf0/x96/xa8/xa2 BAMUM LETTER PHASE-F PEE ++ /xf0/x96/xa8/xa3 BAMUM LETTER PHASE-F RU ++ /xf0/x96/xa8/xa4 BAMUM LETTER PHASE-F NI ++ /xf0/x96/xa8/xa5 BAMUM LETTER PHASE-F REUX ++ /xf0/x96/xa8/xa6 BAMUM LETTER PHASE-F KEN ++ /xf0/x96/xa8/xa7 BAMUM LETTER PHASE-F NGKWAEN ++ /xf0/x96/xa8/xa8 BAMUM LETTER PHASE-F NGGA ++ /xf0/x96/xa8/xa9 BAMUM LETTER PHASE-F SHO ++ /xf0/x96/xa8/xaa BAMUM LETTER PHASE-F PUAE ++ /xf0/x96/xa8/xab BAMUM LETTER PHASE-F FOM ++ /xf0/x96/xa8/xac BAMUM LETTER PHASE-F WA ++ /xf0/x96/xa8/xad BAMUM LETTER PHASE-F LI ++ /xf0/x96/xa8/xae BAMUM LETTER PHASE-F LOQ ++ /xf0/x96/xa8/xaf BAMUM LETTER PHASE-F KO ++ /xf0/x96/xa8/xb0 BAMUM LETTER PHASE-F MBEN ++ /xf0/x96/xa8/xb1 BAMUM LETTER PHASE-F REN ++ /xf0/x96/xa8/xb2 BAMUM LETTER PHASE-F MA ++ /xf0/x96/xa8/xb3 BAMUM LETTER PHASE-F MO ++ /xf0/x96/xa8/xb4 BAMUM LETTER PHASE-F MBAA ++ /xf0/x96/xa8/xb5 BAMUM LETTER PHASE-F TET ++ /xf0/x96/xa8/xb6 BAMUM LETTER PHASE-F KPA ++ /xf0/x96/xa8/xb7 BAMUM LETTER PHASE-F SAMBA ++ /xf0/x96/xa8/xb8 BAMUM LETTER PHASE-F VUEQ ++ /xf0/x9b/x80/x80 KATAKANA LETTER ARCHAIC E ++ /xf0/x9b/x80/x81 HIRAGANA LETTER ARCHAIC YE + /xf0/x9d/x80/x80 BYZANTINE MUSICAL SYMBOL PSILI + /xf0/x9d/x80/x81 BYZANTINE MUSICAL SYMBOL DASEIA + /xf0/x9d/x80/x82 BYZANTINE MUSICAL SYMBOL PERISPOMENI +@@ -30151,6 +33445,1097 @@ CHARMAP + /xf0/x9f/x82/x91 DOMINO TILE VERTICAL-06-04 + /xf0/x9f/x82/x92 DOMINO TILE VERTICAL-06-05 + /xf0/x9f/x82/x93 DOMINO TILE VERTICAL-06-06 ++ /xf0/x9f/x82/xa0 PLAYING CARD BACK ++ /xf0/x9f/x82/xa1 PLAYING CARD ACE OF SPADES ++ /xf0/x9f/x82/xa2 PLAYING CARD TWO OF SPADES ++ /xf0/x9f/x82/xa3 PLAYING CARD THREE OF SPADES ++ /xf0/x9f/x82/xa4 PLAYING CARD FOUR OF SPADES ++ /xf0/x9f/x82/xa5 PLAYING CARD FIVE OF SPADES ++ /xf0/x9f/x82/xa6 PLAYING CARD SIX OF SPADES ++ /xf0/x9f/x82/xa7 PLAYING CARD SEVEN OF SPADES ++ /xf0/x9f/x82/xa8 PLAYING CARD EIGHT OF SPADES ++ /xf0/x9f/x82/xa9 PLAYING CARD NINE OF SPADES ++ /xf0/x9f/x82/xaa PLAYING CARD TEN OF SPADES ++ /xf0/x9f/x82/xab PLAYING CARD JACK OF SPADES ++ /xf0/x9f/x82/xac PLAYING CARD KNIGHT OF SPADES ++ /xf0/x9f/x82/xad PLAYING CARD QUEEN OF SPADES ++ /xf0/x9f/x82/xae PLAYING CARD KING OF SPADES ++ /xf0/x9f/x82/xb1 PLAYING CARD ACE OF HEARTS ++ /xf0/x9f/x82/xb2 PLAYING CARD TWO OF HEARTS ++ /xf0/x9f/x82/xb3 PLAYING CARD THREE OF HEARTS ++ /xf0/x9f/x82/xb4 PLAYING CARD FOUR OF HEARTS ++ /xf0/x9f/x82/xb5 PLAYING CARD FIVE OF HEARTS ++ /xf0/x9f/x82/xb6 PLAYING CARD SIX OF HEARTS ++ /xf0/x9f/x82/xb7 PLAYING CARD SEVEN OF HEARTS ++ /xf0/x9f/x82/xb8 PLAYING CARD EIGHT OF HEARTS ++ /xf0/x9f/x82/xb9 PLAYING CARD NINE OF HEARTS ++ /xf0/x9f/x82/xba PLAYING CARD TEN OF HEARTS ++ /xf0/x9f/x82/xbb PLAYING CARD JACK OF HEARTS ++ /xf0/x9f/x82/xbc PLAYING CARD KNIGHT OF HEARTS ++ /xf0/x9f/x82/xbd PLAYING CARD QUEEN OF HEARTS ++ /xf0/x9f/x82/xbe PLAYING CARD KING OF HEARTS ++ /xf0/x9f/x83/x81 PLAYING CARD ACE OF DIAMONDS ++ /xf0/x9f/x83/x82 PLAYING CARD TWO OF DIAMONDS ++ /xf0/x9f/x83/x83 PLAYING CARD THREE OF DIAMONDS ++ /xf0/x9f/x83/x84 PLAYING CARD FOUR OF DIAMONDS ++ /xf0/x9f/x83/x85 PLAYING CARD FIVE OF DIAMONDS ++ /xf0/x9f/x83/x86 PLAYING CARD SIX OF DIAMONDS ++ /xf0/x9f/x83/x87 PLAYING CARD SEVEN OF DIAMONDS ++ /xf0/x9f/x83/x88 PLAYING CARD EIGHT OF DIAMONDS ++ /xf0/x9f/x83/x89 PLAYING CARD NINE OF DIAMONDS ++ /xf0/x9f/x83/x8a PLAYING CARD TEN OF DIAMONDS ++ /xf0/x9f/x83/x8b PLAYING CARD JACK OF DIAMONDS ++ /xf0/x9f/x83/x8c PLAYING CARD KNIGHT OF DIAMONDS ++ /xf0/x9f/x83/x8d PLAYING CARD QUEEN OF DIAMONDS ++ /xf0/x9f/x83/x8e PLAYING CARD KING OF DIAMONDS ++ /xf0/x9f/x83/x8f PLAYING CARD BLACK JOKER ++ /xf0/x9f/x83/x91 PLAYING CARD ACE OF CLUBS ++ /xf0/x9f/x83/x92 PLAYING CARD TWO OF CLUBS ++ /xf0/x9f/x83/x93 PLAYING CARD THREE OF CLUBS ++ /xf0/x9f/x83/x94 PLAYING CARD FOUR OF CLUBS ++ /xf0/x9f/x83/x95 PLAYING CARD FIVE OF CLUBS ++ /xf0/x9f/x83/x96 PLAYING CARD SIX OF CLUBS ++ /xf0/x9f/x83/x97 PLAYING CARD SEVEN OF CLUBS ++ /xf0/x9f/x83/x98 PLAYING CARD EIGHT OF CLUBS ++ /xf0/x9f/x83/x99 PLAYING CARD NINE OF CLUBS ++ /xf0/x9f/x83/x9a PLAYING CARD TEN OF CLUBS ++ /xf0/x9f/x83/x9b PLAYING CARD JACK OF CLUBS ++ /xf0/x9f/x83/x9c PLAYING CARD KNIGHT OF CLUBS ++ /xf0/x9f/x83/x9d PLAYING CARD QUEEN OF CLUBS ++ /xf0/x9f/x83/x9e PLAYING CARD KING OF CLUBS ++ /xf0/x9f/x83/x9f PLAYING CARD WHITE JOKER ++ /xf0/x9f/x84/x80 DIGIT ZERO FULL STOP ++ /xf0/x9f/x84/x81 DIGIT ZERO COMMA ++ /xf0/x9f/x84/x82 DIGIT ONE COMMA ++ /xf0/x9f/x84/x83 DIGIT TWO COMMA ++ /xf0/x9f/x84/x84 DIGIT THREE COMMA ++ /xf0/x9f/x84/x85 DIGIT FOUR COMMA ++ /xf0/x9f/x84/x86 DIGIT FIVE COMMA ++ /xf0/x9f/x84/x87 DIGIT SIX COMMA ++ /xf0/x9f/x84/x88 DIGIT SEVEN COMMA ++ /xf0/x9f/x84/x89 DIGIT EIGHT COMMA ++ /xf0/x9f/x84/x8a DIGIT NINE COMMA ++ /xf0/x9f/x84/x90 PARENTHESIZED LATIN CAPITAL LETTER A ++ /xf0/x9f/x84/x91 PARENTHESIZED LATIN CAPITAL LETTER B ++ /xf0/x9f/x84/x92 PARENTHESIZED LATIN CAPITAL LETTER C ++ /xf0/x9f/x84/x93 PARENTHESIZED LATIN CAPITAL LETTER D ++ /xf0/x9f/x84/x94 PARENTHESIZED LATIN CAPITAL LETTER E ++ /xf0/x9f/x84/x95 PARENTHESIZED LATIN CAPITAL LETTER F ++ /xf0/x9f/x84/x96 PARENTHESIZED LATIN CAPITAL LETTER G ++ /xf0/x9f/x84/x97 PARENTHESIZED LATIN CAPITAL LETTER H ++ /xf0/x9f/x84/x98 PARENTHESIZED LATIN CAPITAL LETTER I ++ /xf0/x9f/x84/x99 PARENTHESIZED LATIN CAPITAL LETTER J ++ /xf0/x9f/x84/x9a PARENTHESIZED LATIN CAPITAL LETTER K ++ /xf0/x9f/x84/x9b PARENTHESIZED LATIN CAPITAL LETTER L ++ /xf0/x9f/x84/x9c PARENTHESIZED LATIN CAPITAL LETTER M ++ /xf0/x9f/x84/x9d PARENTHESIZED LATIN CAPITAL LETTER N ++ /xf0/x9f/x84/x9e PARENTHESIZED LATIN CAPITAL LETTER O ++ /xf0/x9f/x84/x9f PARENTHESIZED LATIN CAPITAL LETTER P ++ /xf0/x9f/x84/xa0 PARENTHESIZED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x84/xa1 PARENTHESIZED LATIN CAPITAL LETTER R ++ /xf0/x9f/x84/xa2 PARENTHESIZED LATIN CAPITAL LETTER S ++ /xf0/x9f/x84/xa3 PARENTHESIZED LATIN CAPITAL LETTER T ++ /xf0/x9f/x84/xa4 PARENTHESIZED LATIN CAPITAL LETTER U ++ /xf0/x9f/x84/xa5 PARENTHESIZED LATIN CAPITAL LETTER V ++ /xf0/x9f/x84/xa6 PARENTHESIZED LATIN CAPITAL LETTER W ++ /xf0/x9f/x84/xa7 PARENTHESIZED LATIN CAPITAL LETTER X ++ /xf0/x9f/x84/xa8 PARENTHESIZED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x84/xa9 PARENTHESIZED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x84/xaa TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S ++ /xf0/x9f/x84/xab CIRCLED ITALIC LATIN CAPITAL LETTER C ++ /xf0/x9f/x84/xac CIRCLED ITALIC LATIN CAPITAL LETTER R ++ /xf0/x9f/x84/xad CIRCLED CD ++ /xf0/x9f/x84/xae CIRCLED WZ ++ /xf0/x9f/x84/xb0 SQUARED LATIN CAPITAL LETTER A ++ /xf0/x9f/x84/xb1 SQUARED LATIN CAPITAL LETTER B ++ /xf0/x9f/x84/xb2 SQUARED LATIN CAPITAL LETTER C ++ /xf0/x9f/x84/xb3 SQUARED LATIN CAPITAL LETTER D ++ /xf0/x9f/x84/xb4 SQUARED LATIN CAPITAL LETTER E ++ /xf0/x9f/x84/xb5 SQUARED LATIN CAPITAL LETTER F ++ /xf0/x9f/x84/xb6 SQUARED LATIN CAPITAL LETTER G ++ /xf0/x9f/x84/xb7 SQUARED LATIN CAPITAL LETTER H ++ /xf0/x9f/x84/xb8 SQUARED LATIN CAPITAL LETTER I ++ /xf0/x9f/x84/xb9 SQUARED LATIN CAPITAL LETTER J ++ /xf0/x9f/x84/xba SQUARED LATIN CAPITAL LETTER K ++ /xf0/x9f/x84/xbb SQUARED LATIN CAPITAL LETTER L ++ /xf0/x9f/x84/xbc SQUARED LATIN CAPITAL LETTER M ++ /xf0/x9f/x84/xbd SQUARED LATIN CAPITAL LETTER N ++ /xf0/x9f/x84/xbe SQUARED LATIN CAPITAL LETTER O ++ /xf0/x9f/x84/xbf SQUARED LATIN CAPITAL LETTER P ++ /xf0/x9f/x85/x80 SQUARED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x85/x81 SQUARED LATIN CAPITAL LETTER R ++ /xf0/x9f/x85/x82 SQUARED LATIN CAPITAL LETTER S ++ /xf0/x9f/x85/x83 SQUARED LATIN CAPITAL LETTER T ++ /xf0/x9f/x85/x84 SQUARED LATIN CAPITAL LETTER U ++ /xf0/x9f/x85/x85 SQUARED LATIN CAPITAL LETTER V ++ /xf0/x9f/x85/x86 SQUARED LATIN CAPITAL LETTER W ++ /xf0/x9f/x85/x87 SQUARED LATIN CAPITAL LETTER X ++ /xf0/x9f/x85/x88 SQUARED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x85/x89 SQUARED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x85/x8a SQUARED HV ++ /xf0/x9f/x85/x8b SQUARED MV ++ /xf0/x9f/x85/x8c SQUARED SD ++ /xf0/x9f/x85/x8d SQUARED SS ++ /xf0/x9f/x85/x8e SQUARED PPV ++ /xf0/x9f/x85/x8f SQUARED WC ++ /xf0/x9f/x85/x90 NEGATIVE CIRCLED LATIN CAPITAL LETTER A ++ /xf0/x9f/x85/x91 NEGATIVE CIRCLED LATIN CAPITAL LETTER B ++ /xf0/x9f/x85/x92 NEGATIVE CIRCLED LATIN CAPITAL LETTER C ++ /xf0/x9f/x85/x93 NEGATIVE CIRCLED LATIN CAPITAL LETTER D ++ /xf0/x9f/x85/x94 NEGATIVE CIRCLED LATIN CAPITAL LETTER E ++ /xf0/x9f/x85/x95 NEGATIVE CIRCLED LATIN CAPITAL LETTER F ++ /xf0/x9f/x85/x96 NEGATIVE CIRCLED LATIN CAPITAL LETTER G ++ /xf0/x9f/x85/x97 NEGATIVE CIRCLED LATIN CAPITAL LETTER H ++ /xf0/x9f/x85/x98 NEGATIVE CIRCLED LATIN CAPITAL LETTER I ++ /xf0/x9f/x85/x99 NEGATIVE CIRCLED LATIN CAPITAL LETTER J ++ /xf0/x9f/x85/x9a NEGATIVE CIRCLED LATIN CAPITAL LETTER K ++ /xf0/x9f/x85/x9b NEGATIVE CIRCLED LATIN CAPITAL LETTER L ++ /xf0/x9f/x85/x9c NEGATIVE CIRCLED LATIN CAPITAL LETTER M ++ /xf0/x9f/x85/x9d NEGATIVE CIRCLED LATIN CAPITAL LETTER N ++ /xf0/x9f/x85/x9e NEGATIVE CIRCLED LATIN CAPITAL LETTER O ++ /xf0/x9f/x85/x9f NEGATIVE CIRCLED LATIN CAPITAL LETTER P ++ /xf0/x9f/x85/xa0 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x85/xa1 NEGATIVE CIRCLED LATIN CAPITAL LETTER R ++ /xf0/x9f/x85/xa2 NEGATIVE CIRCLED LATIN CAPITAL LETTER S ++ /xf0/x9f/x85/xa3 NEGATIVE CIRCLED LATIN CAPITAL LETTER T ++ /xf0/x9f/x85/xa4 NEGATIVE CIRCLED LATIN CAPITAL LETTER U ++ /xf0/x9f/x85/xa5 NEGATIVE CIRCLED LATIN CAPITAL LETTER V ++ /xf0/x9f/x85/xa6 NEGATIVE CIRCLED LATIN CAPITAL LETTER W ++ /xf0/x9f/x85/xa7 NEGATIVE CIRCLED LATIN CAPITAL LETTER X ++ /xf0/x9f/x85/xa8 NEGATIVE CIRCLED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x85/xa9 NEGATIVE CIRCLED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x85/xb0 NEGATIVE SQUARED LATIN CAPITAL LETTER A ++ /xf0/x9f/x85/xb1 NEGATIVE SQUARED LATIN CAPITAL LETTER B ++ /xf0/x9f/x85/xb2 NEGATIVE SQUARED LATIN CAPITAL LETTER C ++ /xf0/x9f/x85/xb3 NEGATIVE SQUARED LATIN CAPITAL LETTER D ++ /xf0/x9f/x85/xb4 NEGATIVE SQUARED LATIN CAPITAL LETTER E ++ /xf0/x9f/x85/xb5 NEGATIVE SQUARED LATIN CAPITAL LETTER F ++ /xf0/x9f/x85/xb6 NEGATIVE SQUARED LATIN CAPITAL LETTER G ++ /xf0/x9f/x85/xb7 NEGATIVE SQUARED LATIN CAPITAL LETTER H ++ /xf0/x9f/x85/xb8 NEGATIVE SQUARED LATIN CAPITAL LETTER I ++ /xf0/x9f/x85/xb9 NEGATIVE SQUARED LATIN CAPITAL LETTER J ++ /xf0/x9f/x85/xba NEGATIVE SQUARED LATIN CAPITAL LETTER K ++ /xf0/x9f/x85/xbb NEGATIVE SQUARED LATIN CAPITAL LETTER L ++ /xf0/x9f/x85/xbc NEGATIVE SQUARED LATIN CAPITAL LETTER M ++ /xf0/x9f/x85/xbd NEGATIVE SQUARED LATIN CAPITAL LETTER N ++ /xf0/x9f/x85/xbe NEGATIVE SQUARED LATIN CAPITAL LETTER O ++ /xf0/x9f/x85/xbf NEGATIVE SQUARED LATIN CAPITAL LETTER P ++ /xf0/x9f/x86/x80 NEGATIVE SQUARED LATIN CAPITAL LETTER Q ++ /xf0/x9f/x86/x81 NEGATIVE SQUARED LATIN CAPITAL LETTER R ++ /xf0/x9f/x86/x82 NEGATIVE SQUARED LATIN CAPITAL LETTER S ++ /xf0/x9f/x86/x83 NEGATIVE SQUARED LATIN CAPITAL LETTER T ++ /xf0/x9f/x86/x84 NEGATIVE SQUARED LATIN CAPITAL LETTER U ++ /xf0/x9f/x86/x85 NEGATIVE SQUARED LATIN CAPITAL LETTER V ++ /xf0/x9f/x86/x86 NEGATIVE SQUARED LATIN CAPITAL LETTER W ++ /xf0/x9f/x86/x87 NEGATIVE SQUARED LATIN CAPITAL LETTER X ++ /xf0/x9f/x86/x88 NEGATIVE SQUARED LATIN CAPITAL LETTER Y ++ /xf0/x9f/x86/x89 NEGATIVE SQUARED LATIN CAPITAL LETTER Z ++ /xf0/x9f/x86/x8a CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P ++ /xf0/x9f/x86/x8b NEGATIVE SQUARED IC ++ /xf0/x9f/x86/x8c NEGATIVE SQUARED PA ++ /xf0/x9f/x86/x8d NEGATIVE SQUARED SA ++ /xf0/x9f/x86/x8e NEGATIVE SQUARED AB ++ /xf0/x9f/x86/x8f NEGATIVE SQUARED WC ++ /xf0/x9f/x86/x90 SQUARE DJ ++ /xf0/x9f/x86/x91 SQUARED CL ++ /xf0/x9f/x86/x92 SQUARED COOL ++ /xf0/x9f/x86/x93 SQUARED FREE ++ /xf0/x9f/x86/x94 SQUARED ID ++ /xf0/x9f/x86/x95 SQUARED NEW ++ /xf0/x9f/x86/x96 SQUARED NG ++ /xf0/x9f/x86/x97 SQUARED OK ++ /xf0/x9f/x86/x98 SQUARED SOS ++ /xf0/x9f/x86/x99 SQUARED UP WITH EXCLAMATION MARK ++ /xf0/x9f/x86/x9a SQUARED VS ++ /xf0/x9f/x87/xa6 REGIONAL INDICATOR SYMBOL LETTER A ++ /xf0/x9f/x87/xa7 REGIONAL INDICATOR SYMBOL LETTER B ++ /xf0/x9f/x87/xa8 REGIONAL INDICATOR SYMBOL LETTER C ++ /xf0/x9f/x87/xa9 REGIONAL INDICATOR SYMBOL LETTER D ++ /xf0/x9f/x87/xaa REGIONAL INDICATOR SYMBOL LETTER E ++ /xf0/x9f/x87/xab REGIONAL INDICATOR SYMBOL LETTER F ++ /xf0/x9f/x87/xac REGIONAL INDICATOR SYMBOL LETTER G ++ /xf0/x9f/x87/xad REGIONAL INDICATOR SYMBOL LETTER H ++ /xf0/x9f/x87/xae REGIONAL INDICATOR SYMBOL LETTER I ++ /xf0/x9f/x87/xaf REGIONAL INDICATOR SYMBOL LETTER J ++ /xf0/x9f/x87/xb0 REGIONAL INDICATOR SYMBOL LETTER K ++ /xf0/x9f/x87/xb1 REGIONAL INDICATOR SYMBOL LETTER L ++ /xf0/x9f/x87/xb2 REGIONAL INDICATOR SYMBOL LETTER M ++ /xf0/x9f/x87/xb3 REGIONAL INDICATOR SYMBOL LETTER N ++ /xf0/x9f/x87/xb4 REGIONAL INDICATOR SYMBOL LETTER O ++ /xf0/x9f/x87/xb5 REGIONAL INDICATOR SYMBOL LETTER P ++ /xf0/x9f/x87/xb6 REGIONAL INDICATOR SYMBOL LETTER Q ++ /xf0/x9f/x87/xb7 REGIONAL INDICATOR SYMBOL LETTER R ++ /xf0/x9f/x87/xb8 REGIONAL INDICATOR SYMBOL LETTER S ++ /xf0/x9f/x87/xb9 REGIONAL INDICATOR SYMBOL LETTER T ++ /xf0/x9f/x87/xba REGIONAL INDICATOR SYMBOL LETTER U ++ /xf0/x9f/x87/xbb REGIONAL INDICATOR SYMBOL LETTER V ++ /xf0/x9f/x87/xbc REGIONAL INDICATOR SYMBOL LETTER W ++ /xf0/x9f/x87/xbd REGIONAL INDICATOR SYMBOL LETTER X ++ /xf0/x9f/x87/xbe REGIONAL INDICATOR SYMBOL LETTER Y ++ /xf0/x9f/x87/xbf REGIONAL INDICATOR SYMBOL LETTER Z ++ /xf0/x9f/x88/x80 SQUARE HIRAGANA HOKA ++ /xf0/x9f/x88/x81 SQUARED KATAKANA KOKO ++ /xf0/x9f/x88/x82 SQUARED KATAKANA SA ++ /xf0/x9f/x88/x90 SQUARED CJK UNIFIED IDEOGRAPH-624B ++ /xf0/x9f/x88/x91 SQUARED CJK UNIFIED IDEOGRAPH-5B57 ++ /xf0/x9f/x88/x92 SQUARED CJK UNIFIED IDEOGRAPH-53CC ++ /xf0/x9f/x88/x93 SQUARED KATAKANA DE ++ /xf0/x9f/x88/x94 SQUARED CJK UNIFIED IDEOGRAPH-4E8C ++ /xf0/x9f/x88/x95 SQUARED CJK UNIFIED IDEOGRAPH-591A ++ /xf0/x9f/x88/x96 SQUARED CJK UNIFIED IDEOGRAPH-89E3 ++ /xf0/x9f/x88/x97 SQUARED CJK UNIFIED IDEOGRAPH-5929 ++ /xf0/x9f/x88/x98 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 ++ /xf0/x9f/x88/x99 SQUARED CJK UNIFIED IDEOGRAPH-6620 ++ /xf0/x9f/x88/x9a SQUARED CJK UNIFIED IDEOGRAPH-7121 ++ /xf0/x9f/x88/x9b SQUARED CJK UNIFIED IDEOGRAPH-6599 ++ /xf0/x9f/x88/x9c SQUARED CJK UNIFIED IDEOGRAPH-524D ++ /xf0/x9f/x88/x9d SQUARED CJK UNIFIED IDEOGRAPH-5F8C ++ /xf0/x9f/x88/x9e SQUARED CJK UNIFIED IDEOGRAPH-518D ++ /xf0/x9f/x88/x9f SQUARED CJK UNIFIED IDEOGRAPH-65B0 ++ /xf0/x9f/x88/xa0 SQUARED CJK UNIFIED IDEOGRAPH-521D ++ /xf0/x9f/x88/xa1 SQUARED CJK UNIFIED IDEOGRAPH-7D42 ++ /xf0/x9f/x88/xa2 SQUARED CJK UNIFIED IDEOGRAPH-751F ++ /xf0/x9f/x88/xa3 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 ++ /xf0/x9f/x88/xa4 SQUARED CJK UNIFIED IDEOGRAPH-58F0 ++ /xf0/x9f/x88/xa5 SQUARED CJK UNIFIED IDEOGRAPH-5439 ++ /xf0/x9f/x88/xa6 SQUARED CJK UNIFIED IDEOGRAPH-6F14 ++ /xf0/x9f/x88/xa7 SQUARED CJK UNIFIED IDEOGRAPH-6295 ++ /xf0/x9f/x88/xa8 SQUARED CJK UNIFIED IDEOGRAPH-6355 ++ /xf0/x9f/x88/xa9 SQUARED CJK UNIFIED IDEOGRAPH-4E00 ++ /xf0/x9f/x88/xaa SQUARED CJK UNIFIED IDEOGRAPH-4E09 ++ /xf0/x9f/x88/xab SQUARED CJK UNIFIED IDEOGRAPH-904A ++ /xf0/x9f/x88/xac SQUARED CJK UNIFIED IDEOGRAPH-5DE6 ++ /xf0/x9f/x88/xad SQUARED CJK UNIFIED IDEOGRAPH-4E2D ++ /xf0/x9f/x88/xae SQUARED CJK UNIFIED IDEOGRAPH-53F3 ++ /xf0/x9f/x88/xaf SQUARED CJK UNIFIED IDEOGRAPH-6307 ++ /xf0/x9f/x88/xb0 SQUARED CJK UNIFIED IDEOGRAPH-8D70 ++ /xf0/x9f/x88/xb1 SQUARED CJK UNIFIED IDEOGRAPH-6253 ++ /xf0/x9f/x88/xb2 SQUARED CJK UNIFIED IDEOGRAPH-7981 ++ /xf0/x9f/x88/xb3 SQUARED CJK UNIFIED IDEOGRAPH-7A7A ++ /xf0/x9f/x88/xb4 SQUARED CJK UNIFIED IDEOGRAPH-5408 ++ /xf0/x9f/x88/xb5 SQUARED CJK UNIFIED IDEOGRAPH-6E80 ++ /xf0/x9f/x88/xb6 SQUARED CJK UNIFIED IDEOGRAPH-6709 ++ /xf0/x9f/x88/xb7 SQUARED CJK UNIFIED IDEOGRAPH-6708 ++ /xf0/x9f/x88/xb8 SQUARED CJK UNIFIED IDEOGRAPH-7533 ++ /xf0/x9f/x88/xb9 SQUARED CJK UNIFIED IDEOGRAPH-5272 ++ /xf0/x9f/x88/xba SQUARED CJK UNIFIED IDEOGRAPH-55B6 ++ /xf0/x9f/x89/x80 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C ++ /xf0/x9f/x89/x81 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 ++ /xf0/x9f/x89/x82 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C ++ /xf0/x9f/x89/x83 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 ++ /xf0/x9f/x89/x84 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 ++ /xf0/x9f/x89/x85 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 ++ /xf0/x9f/x89/x86 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 ++ /xf0/x9f/x89/x87 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD ++ /xf0/x9f/x89/x88 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 ++ /xf0/x9f/x89/x90 CIRCLED IDEOGRAPH ADVANTAGE ++ /xf0/x9f/x89/x91 CIRCLED IDEOGRAPH ACCEPT ++ /xf0/x9f/x8c/x80 CYCLONE ++ /xf0/x9f/x8c/x81 FOGGY ++ /xf0/x9f/x8c/x82 CLOSED UMBRELLA ++ /xf0/x9f/x8c/x83 NIGHT WITH STARS ++ /xf0/x9f/x8c/x84 SUNRISE OVER MOUNTAINS ++ /xf0/x9f/x8c/x85 SUNRISE ++ /xf0/x9f/x8c/x86 CITYSCAPE AT DUSK ++ /xf0/x9f/x8c/x87 SUNSET OVER BUILDINGS ++ /xf0/x9f/x8c/x88 RAINBOW ++ /xf0/x9f/x8c/x89 BRIDGE AT NIGHT ++ /xf0/x9f/x8c/x8a WATER WAVE ++ /xf0/x9f/x8c/x8b VOLCANO ++ /xf0/x9f/x8c/x8c MILKY WAY ++ /xf0/x9f/x8c/x8d EARTH GLOBE EUROPE-AFRICA ++ /xf0/x9f/x8c/x8e EARTH GLOBE AMERICAS ++ /xf0/x9f/x8c/x8f EARTH GLOBE ASIA-AUSTRALIA ++ /xf0/x9f/x8c/x90 GLOBE WITH MERIDIANS ++ /xf0/x9f/x8c/x91 NEW MOON SYMBOL ++ /xf0/x9f/x8c/x92 WAXING CRESCENT MOON SYMBOL ++ /xf0/x9f/x8c/x93 FIRST QUARTER MOON SYMBOL ++ /xf0/x9f/x8c/x94 WAXING GIBBOUS MOON SYMBOL ++ /xf0/x9f/x8c/x95 FULL MOON SYMBOL ++ /xf0/x9f/x8c/x96 WANING GIBBOUS MOON SYMBOL ++ /xf0/x9f/x8c/x97 LAST QUARTER MOON SYMBOL ++ /xf0/x9f/x8c/x98 WANING CRESCENT MOON SYMBOL ++ /xf0/x9f/x8c/x99 CRESCENT MOON ++ /xf0/x9f/x8c/x9a NEW MOON WITH FACE ++ /xf0/x9f/x8c/x9b FIRST QUARTER MOON WITH FACE ++ /xf0/x9f/x8c/x9c LAST QUARTER MOON WITH FACE ++ /xf0/x9f/x8c/x9d FULL MOON WITH FACE ++ /xf0/x9f/x8c/x9e SUN WITH FACE ++ /xf0/x9f/x8c/x9f GLOWING STAR ++ /xf0/x9f/x8c/xa0 SHOOTING STAR ++ /xf0/x9f/x8c/xb0 CHESTNUT ++ /xf0/x9f/x8c/xb1 SEEDLING ++ /xf0/x9f/x8c/xb2 EVERGREEN TREE ++ /xf0/x9f/x8c/xb3 DECIDUOUS TREE ++ /xf0/x9f/x8c/xb4 PALM TREE ++ /xf0/x9f/x8c/xb5 CACTUS ++ /xf0/x9f/x8c/xb7 TULIP ++ /xf0/x9f/x8c/xb8 CHERRY BLOSSOM ++ /xf0/x9f/x8c/xb9 ROSE ++ /xf0/x9f/x8c/xba HIBISCUS ++ /xf0/x9f/x8c/xbb SUNFLOWER ++ /xf0/x9f/x8c/xbc BLOSSOM ++ /xf0/x9f/x8c/xbd EAR OF MAIZE ++ /xf0/x9f/x8c/xbe EAR OF RICE ++ /xf0/x9f/x8c/xbf HERB ++ /xf0/x9f/x8d/x80 FOUR LEAF CLOVER ++ /xf0/x9f/x8d/x81 MAPLE LEAF ++ /xf0/x9f/x8d/x82 FALLEN LEAF ++ /xf0/x9f/x8d/x83 LEAF FLUTTERING IN WIND ++ /xf0/x9f/x8d/x84 MUSHROOM ++ /xf0/x9f/x8d/x85 TOMATO ++ /xf0/x9f/x8d/x86 AUBERGINE ++ /xf0/x9f/x8d/x87 GRAPES ++ /xf0/x9f/x8d/x88 MELON ++ /xf0/x9f/x8d/x89 WATERMELON ++ /xf0/x9f/x8d/x8a TANGERINE ++ /xf0/x9f/x8d/x8b LEMON ++ /xf0/x9f/x8d/x8c BANANA ++ /xf0/x9f/x8d/x8d PINEAPPLE ++ /xf0/x9f/x8d/x8e RED APPLE ++ /xf0/x9f/x8d/x8f GREEN APPLE ++ /xf0/x9f/x8d/x90 PEAR ++ /xf0/x9f/x8d/x91 PEACH ++ /xf0/x9f/x8d/x92 CHERRIES ++ /xf0/x9f/x8d/x93 STRAWBERRY ++ /xf0/x9f/x8d/x94 HAMBURGER ++ /xf0/x9f/x8d/x95 SLICE OF PIZZA ++ /xf0/x9f/x8d/x96 MEAT ON BONE ++ /xf0/x9f/x8d/x97 POULTRY LEG ++ /xf0/x9f/x8d/x98 RICE CRACKER ++ /xf0/x9f/x8d/x99 RICE BALL ++ /xf0/x9f/x8d/x9a COOKED RICE ++ /xf0/x9f/x8d/x9b CURRY AND RICE ++ /xf0/x9f/x8d/x9c STEAMING BOWL ++ /xf0/x9f/x8d/x9d SPAGHETTI ++ /xf0/x9f/x8d/x9e BREAD ++ /xf0/x9f/x8d/x9f FRENCH FRIES ++ /xf0/x9f/x8d/xa0 ROASTED SWEET POTATO ++ /xf0/x9f/x8d/xa1 DANGO ++ /xf0/x9f/x8d/xa2 ODEN ++ /xf0/x9f/x8d/xa3 SUSHI ++ /xf0/x9f/x8d/xa4 FRIED SHRIMP ++ /xf0/x9f/x8d/xa5 FISH CAKE WITH SWIRL DESIGN ++ /xf0/x9f/x8d/xa6 SOFT ICE CREAM ++ /xf0/x9f/x8d/xa7 SHAVED ICE ++ /xf0/x9f/x8d/xa8 ICE CREAM ++ /xf0/x9f/x8d/xa9 DOUGHNUT ++ /xf0/x9f/x8d/xaa COOKIE ++ /xf0/x9f/x8d/xab CHOCOLATE BAR ++ /xf0/x9f/x8d/xac CANDY ++ /xf0/x9f/x8d/xad LOLLIPOP ++ /xf0/x9f/x8d/xae CUSTARD ++ /xf0/x9f/x8d/xaf HONEY POT ++ /xf0/x9f/x8d/xb0 SHORTCAKE ++ /xf0/x9f/x8d/xb1 BENTO BOX ++ /xf0/x9f/x8d/xb2 POT OF FOOD ++ /xf0/x9f/x8d/xb3 COOKING ++ /xf0/x9f/x8d/xb4 FORK AND KNIFE ++ /xf0/x9f/x8d/xb5 TEACUP WITHOUT HANDLE ++ /xf0/x9f/x8d/xb6 SAKE BOTTLE AND CUP ++ /xf0/x9f/x8d/xb7 WINE GLASS ++ /xf0/x9f/x8d/xb8 COCKTAIL GLASS ++ /xf0/x9f/x8d/xb9 TROPICAL DRINK ++ /xf0/x9f/x8d/xba BEER MUG ++ /xf0/x9f/x8d/xbb CLINKING BEER MUGS ++ /xf0/x9f/x8d/xbc BABY BOTTLE ++ /xf0/x9f/x8e/x80 RIBBON ++ /xf0/x9f/x8e/x81 WRAPPED PRESENT ++ /xf0/x9f/x8e/x82 BIRTHDAY CAKE ++ /xf0/x9f/x8e/x83 JACK-O-LANTERN ++ /xf0/x9f/x8e/x84 CHRISTMAS TREE ++ /xf0/x9f/x8e/x85 FATHER CHRISTMAS ++ /xf0/x9f/x8e/x86 FIREWORKS ++ /xf0/x9f/x8e/x87 FIREWORK SPARKLER ++ /xf0/x9f/x8e/x88 BALLOON ++ /xf0/x9f/x8e/x89 PARTY POPPER ++ /xf0/x9f/x8e/x8a CONFETTI BALL ++ /xf0/x9f/x8e/x8b TANABATA TREE ++ /xf0/x9f/x8e/x8c CROSSED FLAGS ++ /xf0/x9f/x8e/x8d PINE DECORATION ++ /xf0/x9f/x8e/x8e JAPANESE DOLLS ++ /xf0/x9f/x8e/x8f CARP STREAMER ++ /xf0/x9f/x8e/x90 WIND CHIME ++ /xf0/x9f/x8e/x91 MOON VIEWING CEREMONY ++ /xf0/x9f/x8e/x92 SCHOOL SATCHEL ++ /xf0/x9f/x8e/x93 GRADUATION CAP ++ /xf0/x9f/x8e/xa0 CAROUSEL HORSE ++ /xf0/x9f/x8e/xa1 FERRIS WHEEL ++ /xf0/x9f/x8e/xa2 ROLLER COASTER ++ /xf0/x9f/x8e/xa3 FISHING POLE AND FISH ++ /xf0/x9f/x8e/xa4 MICROPHONE ++ /xf0/x9f/x8e/xa5 MOVIE CAMERA ++ /xf0/x9f/x8e/xa6 CINEMA ++ /xf0/x9f/x8e/xa7 HEADPHONE ++ /xf0/x9f/x8e/xa8 ARTIST PALETTE ++ /xf0/x9f/x8e/xa9 TOP HAT ++ /xf0/x9f/x8e/xaa CIRCUS TENT ++ /xf0/x9f/x8e/xab TICKET ++ /xf0/x9f/x8e/xac CLAPPER BOARD ++ /xf0/x9f/x8e/xad PERFORMING ARTS ++ /xf0/x9f/x8e/xae VIDEO GAME ++ /xf0/x9f/x8e/xaf DIRECT HIT ++ /xf0/x9f/x8e/xb0 SLOT MACHINE ++ /xf0/x9f/x8e/xb1 BILLIARDS ++ /xf0/x9f/x8e/xb2 GAME DIE ++ /xf0/x9f/x8e/xb3 BOWLING ++ /xf0/x9f/x8e/xb4 FLOWER PLAYING CARDS ++ /xf0/x9f/x8e/xb5 MUSICAL NOTE ++ /xf0/x9f/x8e/xb6 MULTIPLE MUSICAL NOTES ++ /xf0/x9f/x8e/xb7 SAXOPHONE ++ /xf0/x9f/x8e/xb8 GUITAR ++ /xf0/x9f/x8e/xb9 MUSICAL KEYBOARD ++ /xf0/x9f/x8e/xba TRUMPET ++ /xf0/x9f/x8e/xbb VIOLIN ++ /xf0/x9f/x8e/xbc MUSICAL SCORE ++ /xf0/x9f/x8e/xbd RUNNING SHIRT WITH SASH ++ /xf0/x9f/x8e/xbe TENNIS RACQUET AND BALL ++ /xf0/x9f/x8e/xbf SKI AND SKI BOOT ++ /xf0/x9f/x8f/x80 BASKETBALL AND HOOP ++ /xf0/x9f/x8f/x81 CHEQUERED FLAG ++ /xf0/x9f/x8f/x82 SNOWBOARDER ++ /xf0/x9f/x8f/x83 RUNNER ++ /xf0/x9f/x8f/x84 SURFER ++ /xf0/x9f/x8f/x86 TROPHY ++ /xf0/x9f/x8f/x87 HORSE RACING ++ /xf0/x9f/x8f/x88 AMERICAN FOOTBALL ++ /xf0/x9f/x8f/x89 RUGBY FOOTBALL ++ /xf0/x9f/x8f/x8a SWIMMER ++ /xf0/x9f/x8f/xa0 HOUSE BUILDING ++ /xf0/x9f/x8f/xa1 HOUSE WITH GARDEN ++ /xf0/x9f/x8f/xa2 OFFICE BUILDING ++ /xf0/x9f/x8f/xa3 JAPANESE POST OFFICE ++ /xf0/x9f/x8f/xa4 EUROPEAN POST OFFICE ++ /xf0/x9f/x8f/xa5 HOSPITAL ++ /xf0/x9f/x8f/xa6 BANK ++ /xf0/x9f/x8f/xa7 AUTOMATED TELLER MACHINE ++ /xf0/x9f/x8f/xa8 HOTEL ++ /xf0/x9f/x8f/xa9 LOVE HOTEL ++ /xf0/x9f/x8f/xaa CONVENIENCE STORE ++ /xf0/x9f/x8f/xab SCHOOL ++ /xf0/x9f/x8f/xac DEPARTMENT STORE ++ /xf0/x9f/x8f/xad FACTORY ++ /xf0/x9f/x8f/xae IZAKAYA LANTERN ++ /xf0/x9f/x8f/xaf JAPANESE CASTLE ++ /xf0/x9f/x8f/xb0 EUROPEAN CASTLE ++ /xf0/x9f/x90/x80 RAT ++ /xf0/x9f/x90/x81 MOUSE ++ /xf0/x9f/x90/x82 OX ++ /xf0/x9f/x90/x83 WATER BUFFALO ++ /xf0/x9f/x90/x84 COW ++ /xf0/x9f/x90/x85 TIGER ++ /xf0/x9f/x90/x86 LEOPARD ++ /xf0/x9f/x90/x87 RABBIT ++ /xf0/x9f/x90/x88 CAT ++ /xf0/x9f/x90/x89 DRAGON ++ /xf0/x9f/x90/x8a CROCODILE ++ /xf0/x9f/x90/x8b WHALE ++ /xf0/x9f/x90/x8c SNAIL ++ /xf0/x9f/x90/x8d SNAKE ++ /xf0/x9f/x90/x8e HORSE ++ /xf0/x9f/x90/x8f RAM ++ /xf0/x9f/x90/x90 GOAT ++ /xf0/x9f/x90/x91 SHEEP ++ /xf0/x9f/x90/x92 MONKEY ++ /xf0/x9f/x90/x93 ROOSTER ++ /xf0/x9f/x90/x94 CHICKEN ++ /xf0/x9f/x90/x95 DOG ++ /xf0/x9f/x90/x96 PIG ++ /xf0/x9f/x90/x97 BOAR ++ /xf0/x9f/x90/x98 ELEPHANT ++ /xf0/x9f/x90/x99 OCTOPUS ++ /xf0/x9f/x90/x9a SPIRAL SHELL ++ /xf0/x9f/x90/x9b BUG ++ /xf0/x9f/x90/x9c ANT ++ /xf0/x9f/x90/x9d HONEYBEE ++ /xf0/x9f/x90/x9e LADY BEETLE ++ /xf0/x9f/x90/x9f FISH ++ /xf0/x9f/x90/xa0 TROPICAL FISH ++ /xf0/x9f/x90/xa1 BLOWFISH ++ /xf0/x9f/x90/xa2 TURTLE ++ /xf0/x9f/x90/xa3 HATCHING CHICK ++ /xf0/x9f/x90/xa4 BABY CHICK ++ /xf0/x9f/x90/xa5 FRONT-FACING BABY CHICK ++ /xf0/x9f/x90/xa6 BIRD ++ /xf0/x9f/x90/xa7 PENGUIN ++ /xf0/x9f/x90/xa8 KOALA ++ /xf0/x9f/x90/xa9 POODLE ++ /xf0/x9f/x90/xaa DROMEDARY CAMEL ++ /xf0/x9f/x90/xab BACTRIAN CAMEL ++ /xf0/x9f/x90/xac DOLPHIN ++ /xf0/x9f/x90/xad MOUSE FACE ++ /xf0/x9f/x90/xae COW FACE ++ /xf0/x9f/x90/xaf TIGER FACE ++ /xf0/x9f/x90/xb0 RABBIT FACE ++ /xf0/x9f/x90/xb1 CAT FACE ++ /xf0/x9f/x90/xb2 DRAGON FACE ++ /xf0/x9f/x90/xb3 SPOUTING WHALE ++ /xf0/x9f/x90/xb4 HORSE FACE ++ /xf0/x9f/x90/xb5 MONKEY FACE ++ /xf0/x9f/x90/xb6 DOG FACE ++ /xf0/x9f/x90/xb7 PIG FACE ++ /xf0/x9f/x90/xb8 FROG FACE ++ /xf0/x9f/x90/xb9 HAMSTER FACE ++ /xf0/x9f/x90/xba WOLF FACE ++ /xf0/x9f/x90/xbb BEAR FACE ++ /xf0/x9f/x90/xbc PANDA FACE ++ /xf0/x9f/x90/xbd PIG NOSE ++ /xf0/x9f/x90/xbe PAW PRINTS ++ /xf0/x9f/x91/x80 EYES ++ /xf0/x9f/x91/x82 EAR ++ /xf0/x9f/x91/x83 NOSE ++ /xf0/x9f/x91/x84 MOUTH ++ /xf0/x9f/x91/x85 TONGUE ++ /xf0/x9f/x91/x86 WHITE UP POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x87 WHITE DOWN POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x88 WHITE LEFT POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x89 WHITE RIGHT POINTING BACKHAND INDEX ++ /xf0/x9f/x91/x8a FISTED HAND SIGN ++ /xf0/x9f/x91/x8b WAVING HAND SIGN ++ /xf0/x9f/x91/x8c OK HAND SIGN ++ /xf0/x9f/x91/x8d THUMBS UP SIGN ++ /xf0/x9f/x91/x8e THUMBS DOWN SIGN ++ /xf0/x9f/x91/x8f CLAPPING HANDS SIGN ++ /xf0/x9f/x91/x90 OPEN HANDS SIGN ++ /xf0/x9f/x91/x91 CROWN ++ /xf0/x9f/x91/x92 WOMANS HAT ++ /xf0/x9f/x91/x93 EYEGLASSES ++ /xf0/x9f/x91/x94 NECKTIE ++ /xf0/x9f/x91/x95 T-SHIRT ++ /xf0/x9f/x91/x96 JEANS ++ /xf0/x9f/x91/x97 DRESS ++ /xf0/x9f/x91/x98 KIMONO ++ /xf0/x9f/x91/x99 BIKINI ++ /xf0/x9f/x91/x9a WOMANS CLOTHES ++ /xf0/x9f/x91/x9b PURSE ++ /xf0/x9f/x91/x9c HANDBAG ++ /xf0/x9f/x91/x9d POUCH ++ /xf0/x9f/x91/x9e MANS SHOE ++ /xf0/x9f/x91/x9f ATHLETIC SHOE ++ /xf0/x9f/x91/xa0 HIGH-HEELED SHOE ++ /xf0/x9f/x91/xa1 WOMANS SANDAL ++ /xf0/x9f/x91/xa2 WOMANS BOOTS ++ /xf0/x9f/x91/xa3 FOOTPRINTS ++ /xf0/x9f/x91/xa4 BUST IN SILHOUETTE ++ /xf0/x9f/x91/xa5 BUSTS IN SILHOUETTE ++ /xf0/x9f/x91/xa6 BOY ++ /xf0/x9f/x91/xa7 GIRL ++ /xf0/x9f/x91/xa8 MAN ++ /xf0/x9f/x91/xa9 WOMAN ++ /xf0/x9f/x91/xaa FAMILY ++ /xf0/x9f/x91/xab MAN AND WOMAN HOLDING HANDS ++ /xf0/x9f/x91/xac TWO MEN HOLDING HANDS ++ /xf0/x9f/x91/xad TWO WOMEN HOLDING HANDS ++ /xf0/x9f/x91/xae POLICE OFFICER ++ /xf0/x9f/x91/xaf WOMAN WITH BUNNY EARS ++ /xf0/x9f/x91/xb0 BRIDE WITH VEIL ++ /xf0/x9f/x91/xb1 PERSON WITH BLOND HAIR ++ /xf0/x9f/x91/xb2 MAN WITH GUA PI MAO ++ /xf0/x9f/x91/xb3 MAN WITH TURBAN ++ /xf0/x9f/x91/xb4 OLDER MAN ++ /xf0/x9f/x91/xb5 OLDER WOMAN ++ /xf0/x9f/x91/xb6 BABY ++ /xf0/x9f/x91/xb7 CONSTRUCTION WORKER ++ /xf0/x9f/x91/xb8 PRINCESS ++ /xf0/x9f/x91/xb9 JAPANESE OGRE ++ /xf0/x9f/x91/xba JAPANESE GOBLIN ++ /xf0/x9f/x91/xbb GHOST ++ /xf0/x9f/x91/xbc BABY ANGEL ++ /xf0/x9f/x91/xbd EXTRATERRESTRIAL ALIEN ++ /xf0/x9f/x91/xbe ALIEN MONSTER ++ /xf0/x9f/x91/xbf IMP ++ /xf0/x9f/x92/x80 SKULL ++ /xf0/x9f/x92/x81 INFORMATION DESK PERSON ++ /xf0/x9f/x92/x82 GUARDSMAN ++ /xf0/x9f/x92/x83 DANCER ++ /xf0/x9f/x92/x84 LIPSTICK ++ /xf0/x9f/x92/x85 NAIL POLISH ++ /xf0/x9f/x92/x86 FACE MASSAGE ++ /xf0/x9f/x92/x87 HAIRCUT ++ /xf0/x9f/x92/x88 BARBER POLE ++ /xf0/x9f/x92/x89 SYRINGE ++ /xf0/x9f/x92/x8a PILL ++ /xf0/x9f/x92/x8b KISS MARK ++ /xf0/x9f/x92/x8c LOVE LETTER ++ /xf0/x9f/x92/x8d RING ++ /xf0/x9f/x92/x8e GEM STONE ++ /xf0/x9f/x92/x8f KISS ++ /xf0/x9f/x92/x90 BOUQUET ++ /xf0/x9f/x92/x91 COUPLE WITH HEART ++ /xf0/x9f/x92/x92 WEDDING ++ /xf0/x9f/x92/x93 BEATING HEART ++ /xf0/x9f/x92/x94 BROKEN HEART ++ /xf0/x9f/x92/x95 TWO HEARTS ++ /xf0/x9f/x92/x96 SPARKLING HEART ++ /xf0/x9f/x92/x97 GROWING HEART ++ /xf0/x9f/x92/x98 HEART WITH ARROW ++ /xf0/x9f/x92/x99 BLUE HEART ++ /xf0/x9f/x92/x9a GREEN HEART ++ /xf0/x9f/x92/x9b YELLOW HEART ++ /xf0/x9f/x92/x9c PURPLE HEART ++ /xf0/x9f/x92/x9d HEART WITH RIBBON ++ /xf0/x9f/x92/x9e REVOLVING HEARTS ++ /xf0/x9f/x92/x9f HEART DECORATION ++ /xf0/x9f/x92/xa0 DIAMOND SHAPE WITH A DOT INSIDE ++ /xf0/x9f/x92/xa1 ELECTRIC LIGHT BULB ++ /xf0/x9f/x92/xa2 ANGER SYMBOL ++ /xf0/x9f/x92/xa3 BOMB ++ /xf0/x9f/x92/xa4 SLEEPING SYMBOL ++ /xf0/x9f/x92/xa5 COLLISION SYMBOL ++ /xf0/x9f/x92/xa6 SPLASHING SWEAT SYMBOL ++ /xf0/x9f/x92/xa7 DROPLET ++ /xf0/x9f/x92/xa8 DASH SYMBOL ++ /xf0/x9f/x92/xa9 PILE OF POO ++ /xf0/x9f/x92/xaa FLEXED BICEPS ++ /xf0/x9f/x92/xab DIZZY SYMBOL ++ /xf0/x9f/x92/xac SPEECH BALLOON ++ /xf0/x9f/x92/xad THOUGHT BALLOON ++ /xf0/x9f/x92/xae WHITE FLOWER ++ /xf0/x9f/x92/xaf HUNDRED POINTS SYMBOL ++ /xf0/x9f/x92/xb0 MONEY BAG ++ /xf0/x9f/x92/xb1 CURRENCY EXCHANGE ++ /xf0/x9f/x92/xb2 HEAVY DOLLAR SIGN ++ /xf0/x9f/x92/xb3 CREDIT CARD ++ /xf0/x9f/x92/xb4 BANKNOTE WITH YEN SIGN ++ /xf0/x9f/x92/xb5 BANKNOTE WITH DOLLAR SIGN ++ /xf0/x9f/x92/xb6 BANKNOTE WITH EURO SIGN ++ /xf0/x9f/x92/xb7 BANKNOTE WITH POUND SIGN ++ /xf0/x9f/x92/xb8 MONEY WITH WINGS ++ /xf0/x9f/x92/xb9 CHART WITH UPWARDS TREND AND YEN SIGN ++ /xf0/x9f/x92/xba SEAT ++ /xf0/x9f/x92/xbb PERSONAL COMPUTER ++ /xf0/x9f/x92/xbc BRIEFCASE ++ /xf0/x9f/x92/xbd MINIDISC ++ /xf0/x9f/x92/xbe FLOPPY DISK ++ /xf0/x9f/x92/xbf OPTICAL DISC ++ /xf0/x9f/x93/x80 DVD ++ /xf0/x9f/x93/x81 FILE FOLDER ++ /xf0/x9f/x93/x82 OPEN FILE FOLDER ++ /xf0/x9f/x93/x83 PAGE WITH CURL ++ /xf0/x9f/x93/x84 PAGE FACING UP ++ /xf0/x9f/x93/x85 CALENDAR ++ /xf0/x9f/x93/x86 TEAR-OFF CALENDAR ++ /xf0/x9f/x93/x87 CARD INDEX ++ /xf0/x9f/x93/x88 CHART WITH UPWARDS TREND ++ /xf0/x9f/x93/x89 CHART WITH DOWNWARDS TREND ++ /xf0/x9f/x93/x8a BAR CHART ++ /xf0/x9f/x93/x8b CLIPBOARD ++ /xf0/x9f/x93/x8c PUSHPIN ++ /xf0/x9f/x93/x8d ROUND PUSHPIN ++ /xf0/x9f/x93/x8e PAPERCLIP ++ /xf0/x9f/x93/x8f STRAIGHT RULER ++ /xf0/x9f/x93/x90 TRIANGULAR RULER ++ /xf0/x9f/x93/x91 BOOKMARK TABS ++ /xf0/x9f/x93/x92 LEDGER ++ /xf0/x9f/x93/x93 NOTEBOOK ++ /xf0/x9f/x93/x94 NOTEBOOK WITH DECORATIVE COVER ++ /xf0/x9f/x93/x95 CLOSED BOOK ++ /xf0/x9f/x93/x96 OPEN BOOK ++ /xf0/x9f/x93/x97 GREEN BOOK ++ /xf0/x9f/x93/x98 BLUE BOOK ++ /xf0/x9f/x93/x99 ORANGE BOOK ++ /xf0/x9f/x93/x9a BOOKS ++ /xf0/x9f/x93/x9b NAME BADGE ++ /xf0/x9f/x93/x9c SCROLL ++ /xf0/x9f/x93/x9d MEMO ++ /xf0/x9f/x93/x9e TELEPHONE RECEIVER ++ /xf0/x9f/x93/x9f PAGER ++ /xf0/x9f/x93/xa0 FAX MACHINE ++ /xf0/x9f/x93/xa1 SATELLITE ANTENNA ++ /xf0/x9f/x93/xa2 PUBLIC ADDRESS LOUDSPEAKER ++ /xf0/x9f/x93/xa3 CHEERING MEGAPHONE ++ /xf0/x9f/x93/xa4 OUTBOX TRAY ++ /xf0/x9f/x93/xa5 INBOX TRAY ++ /xf0/x9f/x93/xa6 PACKAGE ++ /xf0/x9f/x93/xa7 E-MAIL SYMBOL ++ /xf0/x9f/x93/xa8 INCOMING ENVELOPE ++ /xf0/x9f/x93/xa9 ENVELOPE WITH DOWNWARDS ARROW ABOVE ++ /xf0/x9f/x93/xaa CLOSED MAILBOX WITH LOWERED FLAG ++ /xf0/x9f/x93/xab CLOSED MAILBOX WITH RAISED FLAG ++ /xf0/x9f/x93/xac OPEN MAILBOX WITH RAISED FLAG ++ /xf0/x9f/x93/xad OPEN MAILBOX WITH LOWERED FLAG ++ /xf0/x9f/x93/xae POSTBOX ++ /xf0/x9f/x93/xaf POSTAL HORN ++ /xf0/x9f/x93/xb0 NEWSPAPER ++ /xf0/x9f/x93/xb1 MOBILE PHONE ++ /xf0/x9f/x93/xb2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT ++ /xf0/x9f/x93/xb3 VIBRATION MODE ++ /xf0/x9f/x93/xb4 MOBILE PHONE OFF ++ /xf0/x9f/x93/xb5 NO MOBILE PHONES ++ /xf0/x9f/x93/xb6 ANTENNA WITH BARS ++ /xf0/x9f/x93/xb7 CAMERA ++ /xf0/x9f/x93/xb9 VIDEO CAMERA ++ /xf0/x9f/x93/xba TELEVISION ++ /xf0/x9f/x93/xbb RADIO ++ /xf0/x9f/x93/xbc VIDEOCASSETTE ++ /xf0/x9f/x94/x80 TWISTED RIGHTWARDS ARROWS ++ /xf0/x9f/x94/x81 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS ++ /xf0/x9f/x94/x82 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY ++ /xf0/x9f/x94/x83 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS ++ /xf0/x9f/x94/x84 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS ++ /xf0/x9f/x94/x85 LOW BRIGHTNESS SYMBOL ++ /xf0/x9f/x94/x86 HIGH BRIGHTNESS SYMBOL ++ /xf0/x9f/x94/x87 SPEAKER WITH CANCELLATION STROKE ++ /xf0/x9f/x94/x88 SPEAKER ++ /xf0/x9f/x94/x89 SPEAKER WITH ONE SOUND WAVE ++ /xf0/x9f/x94/x8a SPEAKER WITH THREE SOUND WAVES ++ /xf0/x9f/x94/x8b BATTERY ++ /xf0/x9f/x94/x8c ELECTRIC PLUG ++ /xf0/x9f/x94/x8d LEFT-POINTING MAGNIFYING GLASS ++ /xf0/x9f/x94/x8e RIGHT-POINTING MAGNIFYING GLASS ++ /xf0/x9f/x94/x8f LOCK WITH INK PEN ++ /xf0/x9f/x94/x90 CLOSED LOCK WITH KEY ++ /xf0/x9f/x94/x91 KEY ++ /xf0/x9f/x94/x92 LOCK ++ /xf0/x9f/x94/x93 OPEN LOCK ++ /xf0/x9f/x94/x94 BELL ++ /xf0/x9f/x94/x95 BELL WITH CANCELLATION STROKE ++ /xf0/x9f/x94/x96 BOOKMARK ++ /xf0/x9f/x94/x97 LINK SYMBOL ++ /xf0/x9f/x94/x98 RADIO BUTTON ++ /xf0/x9f/x94/x99 BACK WITH LEFTWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9a END WITH LEFTWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9b ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE ++ /xf0/x9f/x94/x9c SOON WITH RIGHTWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9d TOP WITH UPWARDS ARROW ABOVE ++ /xf0/x9f/x94/x9e NO ONE UNDER EIGHTEEN SYMBOL ++ /xf0/x9f/x94/x9f KEYCAP TEN ++ /xf0/x9f/x94/xa0 INPUT SYMBOL FOR LATIN CAPITAL LETTERS ++ /xf0/x9f/x94/xa1 INPUT SYMBOL FOR LATIN SMALL LETTERS ++ /xf0/x9f/x94/xa2 INPUT SYMBOL FOR NUMBERS ++ /xf0/x9f/x94/xa3 INPUT SYMBOL FOR SYMBOLS ++ /xf0/x9f/x94/xa4 INPUT SYMBOL FOR LATIN LETTERS ++ /xf0/x9f/x94/xa5 FIRE ++ /xf0/x9f/x94/xa6 ELECTRIC TORCH ++ /xf0/x9f/x94/xa7 WRENCH ++ /xf0/x9f/x94/xa8 HAMMER ++ /xf0/x9f/x94/xa9 NUT AND BOLT ++ /xf0/x9f/x94/xaa HOCHO ++ /xf0/x9f/x94/xab PISTOL ++ /xf0/x9f/x94/xac MICROSCOPE ++ /xf0/x9f/x94/xad TELESCOPE ++ /xf0/x9f/x94/xae CRYSTAL BALL ++ /xf0/x9f/x94/xaf SIX POINTED STAR WITH MIDDLE DOT ++ /xf0/x9f/x94/xb0 JAPANESE SYMBOL FOR BEGINNER ++ /xf0/x9f/x94/xb1 TRIDENT EMBLEM ++ /xf0/x9f/x94/xb2 BLACK SQUARE BUTTON ++ /xf0/x9f/x94/xb3 WHITE SQUARE BUTTON ++ /xf0/x9f/x94/xb4 LARGE RED CIRCLE ++ /xf0/x9f/x94/xb5 LARGE BLUE CIRCLE ++ /xf0/x9f/x94/xb6 LARGE ORANGE DIAMOND ++ /xf0/x9f/x94/xb7 LARGE BLUE DIAMOND ++ /xf0/x9f/x94/xb8 SMALL ORANGE DIAMOND ++ /xf0/x9f/x94/xb9 SMALL BLUE DIAMOND ++ /xf0/x9f/x94/xba UP-POINTING RED TRIANGLE ++ /xf0/x9f/x94/xbb DOWN-POINTING RED TRIANGLE ++ /xf0/x9f/x94/xbc UP-POINTING SMALL RED TRIANGLE ++ /xf0/x9f/x94/xbd DOWN-POINTING SMALL RED TRIANGLE ++ /xf0/x9f/x95/x90 CLOCK FACE ONE OCLOCK ++ /xf0/x9f/x95/x91 CLOCK FACE TWO OCLOCK ++ /xf0/x9f/x95/x92 CLOCK FACE THREE OCLOCK ++ /xf0/x9f/x95/x93 CLOCK FACE FOUR OCLOCK ++ /xf0/x9f/x95/x94 CLOCK FACE FIVE OCLOCK ++ /xf0/x9f/x95/x95 CLOCK FACE SIX OCLOCK ++ /xf0/x9f/x95/x96 CLOCK FACE SEVEN OCLOCK ++ /xf0/x9f/x95/x97 CLOCK FACE EIGHT OCLOCK ++ /xf0/x9f/x95/x98 CLOCK FACE NINE OCLOCK ++ /xf0/x9f/x95/x99 CLOCK FACE TEN OCLOCK ++ /xf0/x9f/x95/x9a CLOCK FACE ELEVEN OCLOCK ++ /xf0/x9f/x95/x9b CLOCK FACE TWELVE OCLOCK ++ /xf0/x9f/x95/x9c CLOCK FACE ONE-THIRTY ++ /xf0/x9f/x95/x9d CLOCK FACE TWO-THIRTY ++ /xf0/x9f/x95/x9e CLOCK FACE THREE-THIRTY ++ /xf0/x9f/x95/x9f CLOCK FACE FOUR-THIRTY ++ /xf0/x9f/x95/xa0 CLOCK FACE FIVE-THIRTY ++ /xf0/x9f/x95/xa1 CLOCK FACE SIX-THIRTY ++ /xf0/x9f/x95/xa2 CLOCK FACE SEVEN-THIRTY ++ /xf0/x9f/x95/xa3 CLOCK FACE EIGHT-THIRTY ++ /xf0/x9f/x95/xa4 CLOCK FACE NINE-THIRTY ++ /xf0/x9f/x95/xa5 CLOCK FACE TEN-THIRTY ++ /xf0/x9f/x95/xa6 CLOCK FACE ELEVEN-THIRTY ++ /xf0/x9f/x95/xa7 CLOCK FACE TWELVE-THIRTY ++ /xf0/x9f/x97/xbb MOUNT FUJI ++ /xf0/x9f/x97/xbc TOKYO TOWER ++ /xf0/x9f/x97/xbd STATUE OF LIBERTY ++ /xf0/x9f/x97/xbe SILHOUETTE OF JAPAN ++ /xf0/x9f/x97/xbf MOYAI ++ /xf0/x9f/x98/x81 GRINNING FACE WITH SMILING EYES ++ /xf0/x9f/x98/x82 FACE WITH TEARS OF JOY ++ /xf0/x9f/x98/x83 SMILING FACE WITH OPEN MOUTH ++ /xf0/x9f/x98/x84 SMILING FACE WITH OPEN MOUTH AND SMILING EYES ++ /xf0/x9f/x98/x85 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT ++ /xf0/x9f/x98/x86 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES ++ /xf0/x9f/x98/x87 SMILING FACE WITH HALO ++ /xf0/x9f/x98/x88 SMILING FACE WITH HORNS ++ /xf0/x9f/x98/x89 WINKING FACE ++ /xf0/x9f/x98/x8a SMILING FACE WITH SMILING EYES ++ /xf0/x9f/x98/x8b FACE SAVOURING DELICIOUS FOOD ++ /xf0/x9f/x98/x8c RELIEVED FACE ++ /xf0/x9f/x98/x8d SMILING FACE WITH HEART-SHAPED EYES ++ /xf0/x9f/x98/x8e SMILING FACE WITH SUNGLASSES ++ /xf0/x9f/x98/x8f SMIRKING FACE ++ /xf0/x9f/x98/x90 NEUTRAL FACE ++ /xf0/x9f/x98/x92 UNAMUSED FACE ++ /xf0/x9f/x98/x93 FACE WITH COLD SWEAT ++ /xf0/x9f/x98/x94 PENSIVE FACE ++ /xf0/x9f/x98/x96 CONFOUNDED FACE ++ /xf0/x9f/x98/x98 FACE THROWING A KISS ++ /xf0/x9f/x98/x9a KISSING FACE WITH CLOSED EYES ++ /xf0/x9f/x98/x9c FACE WITH STUCK-OUT TONGUE AND WINKING EYE ++ /xf0/x9f/x98/x9d FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES ++ /xf0/x9f/x98/x9e DISAPPOINTED FACE ++ /xf0/x9f/x98/xa0 ANGRY FACE ++ /xf0/x9f/x98/xa1 POUTING FACE ++ /xf0/x9f/x98/xa2 CRYING FACE ++ /xf0/x9f/x98/xa3 PERSEVERING FACE ++ /xf0/x9f/x98/xa4 FACE WITH LOOK OF TRIUMPH ++ /xf0/x9f/x98/xa5 DISAPPOINTED BUT RELIEVED FACE ++ /xf0/x9f/x98/xa8 FEARFUL FACE ++ /xf0/x9f/x98/xa9 WEARY FACE ++ /xf0/x9f/x98/xaa SLEEPY FACE ++ /xf0/x9f/x98/xab TIRED FACE ++ /xf0/x9f/x98/xad LOUDLY CRYING FACE ++ /xf0/x9f/x98/xb0 FACE WITH OPEN MOUTH AND COLD SWEAT ++ /xf0/x9f/x98/xb1 FACE SCREAMING IN FEAR ++ /xf0/x9f/x98/xb2 ASTONISHED FACE ++ /xf0/x9f/x98/xb3 FLUSHED FACE ++ /xf0/x9f/x98/xb5 DIZZY FACE ++ /xf0/x9f/x98/xb6 FACE WITHOUT MOUTH ++ /xf0/x9f/x98/xb7 FACE WITH MEDICAL MASK ++ /xf0/x9f/x98/xb8 GRINNING CAT FACE WITH SMILING EYES ++ /xf0/x9f/x98/xb9 CAT FACE WITH TEARS OF JOY ++ /xf0/x9f/x98/xba SMILING CAT FACE WITH OPEN MOUTH ++ /xf0/x9f/x98/xbb SMILING CAT FACE WITH HEART-SHAPED EYES ++ /xf0/x9f/x98/xbc CAT FACE WITH WRY SMILE ++ /xf0/x9f/x98/xbd KISSING CAT FACE WITH CLOSED EYES ++ /xf0/x9f/x98/xbe POUTING CAT FACE ++ /xf0/x9f/x98/xbf CRYING CAT FACE ++ /xf0/x9f/x99/x80 WEARY CAT FACE ++ /xf0/x9f/x99/x85 FACE WITH NO GOOD GESTURE ++ /xf0/x9f/x99/x86 FACE WITH OK GESTURE ++ /xf0/x9f/x99/x87 PERSON BOWING DEEPLY ++ /xf0/x9f/x99/x88 SEE-NO-EVIL MONKEY ++ /xf0/x9f/x99/x89 HEAR-NO-EVIL MONKEY ++ /xf0/x9f/x99/x8a SPEAK-NO-EVIL MONKEY ++ /xf0/x9f/x99/x8b HAPPY PERSON RAISING ONE HAND ++ /xf0/x9f/x99/x8c PERSON RAISING BOTH HANDS IN CELEBRATION ++ /xf0/x9f/x99/x8d PERSON FROWNING ++ /xf0/x9f/x99/x8e PERSON WITH POUTING FACE ++ /xf0/x9f/x99/x8f PERSON WITH FOLDED HANDS ++ /xf0/x9f/x9a/x80 ROCKET ++ /xf0/x9f/x9a/x81 HELICOPTER ++ /xf0/x9f/x9a/x82 STEAM LOCOMOTIVE ++ /xf0/x9f/x9a/x83 RAILWAY CAR ++ /xf0/x9f/x9a/x84 HIGH-SPEED TRAIN ++ /xf0/x9f/x9a/x85 HIGH-SPEED TRAIN WITH BULLET NOSE ++ /xf0/x9f/x9a/x86 TRAIN ++ /xf0/x9f/x9a/x87 METRO ++ /xf0/x9f/x9a/x88 LIGHT RAIL ++ /xf0/x9f/x9a/x89 STATION ++ /xf0/x9f/x9a/x8a TRAM ++ /xf0/x9f/x9a/x8b TRAM CAR ++ /xf0/x9f/x9a/x8c BUS ++ /xf0/x9f/x9a/x8d ONCOMING BUS ++ /xf0/x9f/x9a/x8e TROLLEYBUS ++ /xf0/x9f/x9a/x8f BUS STOP ++ /xf0/x9f/x9a/x90 MINIBUS ++ /xf0/x9f/x9a/x91 AMBULANCE ++ /xf0/x9f/x9a/x92 FIRE ENGINE ++ /xf0/x9f/x9a/x93 POLICE CAR ++ /xf0/x9f/x9a/x94 ONCOMING POLICE CAR ++ /xf0/x9f/x9a/x95 TAXI ++ /xf0/x9f/x9a/x96 ONCOMING TAXI ++ /xf0/x9f/x9a/x97 AUTOMOBILE ++ /xf0/x9f/x9a/x98 ONCOMING AUTOMOBILE ++ /xf0/x9f/x9a/x99 RECREATIONAL VEHICLE ++ /xf0/x9f/x9a/x9a DELIVERY TRUCK ++ /xf0/x9f/x9a/x9b ARTICULATED LORRY ++ /xf0/x9f/x9a/x9c TRACTOR ++ /xf0/x9f/x9a/x9d MONORAIL ++ /xf0/x9f/x9a/x9e MOUNTAIN RAILWAY ++ /xf0/x9f/x9a/x9f SUSPENSION RAILWAY ++ /xf0/x9f/x9a/xa0 MOUNTAIN CABLEWAY ++ /xf0/x9f/x9a/xa1 AERIAL TRAMWAY ++ /xf0/x9f/x9a/xa2 SHIP ++ /xf0/x9f/x9a/xa3 ROWBOAT ++ /xf0/x9f/x9a/xa4 SPEEDBOAT ++ /xf0/x9f/x9a/xa5 HORIZONTAL TRAFFIC LIGHT ++ /xf0/x9f/x9a/xa6 VERTICAL TRAFFIC LIGHT ++ /xf0/x9f/x9a/xa7 CONSTRUCTION SIGN ++ /xf0/x9f/x9a/xa8 POLICE CARS REVOLVING LIGHT ++ /xf0/x9f/x9a/xa9 TRIANGULAR FLAG ON POST ++ /xf0/x9f/x9a/xaa DOOR ++ /xf0/x9f/x9a/xab NO ENTRY SIGN ++ /xf0/x9f/x9a/xac SMOKING SYMBOL ++ /xf0/x9f/x9a/xad NO SMOKING SYMBOL ++ /xf0/x9f/x9a/xae PUT LITTER IN ITS PLACE SYMBOL ++ /xf0/x9f/x9a/xaf DO NOT LITTER SYMBOL ++ /xf0/x9f/x9a/xb0 POTABLE WATER SYMBOL ++ /xf0/x9f/x9a/xb1 NON-POTABLE WATER SYMBOL ++ /xf0/x9f/x9a/xb2 BICYCLE ++ /xf0/x9f/x9a/xb3 NO BICYCLES ++ /xf0/x9f/x9a/xb4 BICYCLIST ++ /xf0/x9f/x9a/xb5 MOUNTAIN BICYCLIST ++ /xf0/x9f/x9a/xb6 PEDESTRIAN ++ /xf0/x9f/x9a/xb7 NO PEDESTRIANS ++ /xf0/x9f/x9a/xb8 CHILDREN CROSSING ++ /xf0/x9f/x9a/xb9 MENS SYMBOL ++ /xf0/x9f/x9a/xba WOMENS SYMBOL ++ /xf0/x9f/x9a/xbb RESTROOM ++ /xf0/x9f/x9a/xbc BABY SYMBOL ++ /xf0/x9f/x9a/xbd TOILET ++ /xf0/x9f/x9a/xbe WATER CLOSET ++ /xf0/x9f/x9a/xbf SHOWER ++ /xf0/x9f/x9b/x80 BATH ++ /xf0/x9f/x9b/x81 BATHTUB ++ /xf0/x9f/x9b/x82 PASSPORT CONTROL ++ /xf0/x9f/x9b/x83 CUSTOMS ++ /xf0/x9f/x9b/x84 BAGGAGE CLAIM ++ /xf0/x9f/x9b/x85 LEFT LUGGAGE ++ /xf0/x9f/x9c/x80 ALCHEMICAL SYMBOL FOR QUINTESSENCE ++ /xf0/x9f/x9c/x81 ALCHEMICAL SYMBOL FOR AIR ++ /xf0/x9f/x9c/x82 ALCHEMICAL SYMBOL FOR FIRE ++ /xf0/x9f/x9c/x83 ALCHEMICAL SYMBOL FOR EARTH ++ /xf0/x9f/x9c/x84 ALCHEMICAL SYMBOL FOR WATER ++ /xf0/x9f/x9c/x85 ALCHEMICAL SYMBOL FOR AQUAFORTIS ++ /xf0/x9f/x9c/x86 ALCHEMICAL SYMBOL FOR AQUA REGIA ++ /xf0/x9f/x9c/x87 ALCHEMICAL SYMBOL FOR AQUA REGIA-2 ++ /xf0/x9f/x9c/x88 ALCHEMICAL SYMBOL FOR AQUA VITAE ++ /xf0/x9f/x9c/x89 ALCHEMICAL SYMBOL FOR AQUA VITAE-2 ++ /xf0/x9f/x9c/x8a ALCHEMICAL SYMBOL FOR VINEGAR ++ /xf0/x9f/x9c/x8b ALCHEMICAL SYMBOL FOR VINEGAR-2 ++ /xf0/x9f/x9c/x8c ALCHEMICAL SYMBOL FOR VINEGAR-3 ++ /xf0/x9f/x9c/x8d ALCHEMICAL SYMBOL FOR SULFUR ++ /xf0/x9f/x9c/x8e ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR ++ /xf0/x9f/x9c/x8f ALCHEMICAL SYMBOL FOR BLACK SULFUR ++ /xf0/x9f/x9c/x90 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE ++ /xf0/x9f/x9c/x91 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 ++ /xf0/x9f/x9c/x92 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 ++ /xf0/x9f/x9c/x93 ALCHEMICAL SYMBOL FOR CINNABAR ++ /xf0/x9f/x9c/x94 ALCHEMICAL SYMBOL FOR SALT ++ /xf0/x9f/x9c/x95 ALCHEMICAL SYMBOL FOR NITRE ++ /xf0/x9f/x9c/x96 ALCHEMICAL SYMBOL FOR VITRIOL ++ /xf0/x9f/x9c/x97 ALCHEMICAL SYMBOL FOR VITRIOL-2 ++ /xf0/x9f/x9c/x98 ALCHEMICAL SYMBOL FOR ROCK SALT ++ /xf0/x9f/x9c/x99 ALCHEMICAL SYMBOL FOR ROCK SALT-2 ++ /xf0/x9f/x9c/x9a ALCHEMICAL SYMBOL FOR GOLD ++ /xf0/x9f/x9c/x9b ALCHEMICAL SYMBOL FOR SILVER ++ /xf0/x9f/x9c/x9c ALCHEMICAL SYMBOL FOR IRON ORE ++ /xf0/x9f/x9c/x9d ALCHEMICAL SYMBOL FOR IRON ORE-2 ++ /xf0/x9f/x9c/x9e ALCHEMICAL SYMBOL FOR CROCUS OF IRON ++ /xf0/x9f/x9c/x9f ALCHEMICAL SYMBOL FOR REGULUS OF IRON ++ /xf0/x9f/x9c/xa0 ALCHEMICAL SYMBOL FOR COPPER ORE ++ /xf0/x9f/x9c/xa1 ALCHEMICAL SYMBOL FOR IRON-COPPER ORE ++ /xf0/x9f/x9c/xa2 ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER ++ /xf0/x9f/x9c/xa3 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER ++ /xf0/x9f/x9c/xa4 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 ++ /xf0/x9f/x9c/xa5 ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE ++ /xf0/x9f/x9c/xa6 ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE ++ /xf0/x9f/x9c/xa7 ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER ++ /xf0/x9f/x9c/xa8 ALCHEMICAL SYMBOL FOR VERDIGRIS ++ /xf0/x9f/x9c/xa9 ALCHEMICAL SYMBOL FOR TIN ORE ++ /xf0/x9f/x9c/xaa ALCHEMICAL SYMBOL FOR LEAD ORE ++ /xf0/x9f/x9c/xab ALCHEMICAL SYMBOL FOR ANTIMONY ORE ++ /xf0/x9f/x9c/xac ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY ++ /xf0/x9f/x9c/xad ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY ++ /xf0/x9f/x9c/xae ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY ++ /xf0/x9f/x9c/xaf ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY ++ /xf0/x9f/x9c/xb0 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY ++ /xf0/x9f/x9c/xb1 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 ++ /xf0/x9f/x9c/xb2 ALCHEMICAL SYMBOL FOR REGULUS ++ /xf0/x9f/x9c/xb3 ALCHEMICAL SYMBOL FOR REGULUS-2 ++ /xf0/x9f/x9c/xb4 ALCHEMICAL SYMBOL FOR REGULUS-3 ++ /xf0/x9f/x9c/xb5 ALCHEMICAL SYMBOL FOR REGULUS-4 ++ /xf0/x9f/x9c/xb6 ALCHEMICAL SYMBOL FOR ALKALI ++ /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 ++ /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE ++ /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC ++ /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC ++ /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR ++ /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 ++ /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT ++ /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE ++ /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR ++ /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 ++ /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME ++ /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX ++ /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 ++ /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 ++ /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM ++ /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL ++ /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT ++ /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE ++ /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM ++ /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX ++ /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER ++ /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX ++ /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 ++ /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE ++ /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC ++ /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC ++ /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR ++ /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 ++ /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT ++ /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE ++ /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR ++ /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 ++ /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME ++ /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX ++ /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 ++ /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 ++ /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM ++ /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL ++ /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT ++ /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE ++ /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM ++ /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX ++ /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER ++ /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX ++ /xf0/x9f/x9d/x8d ALCHEMICAL SYMBOL FOR TUTTY ++ /xf0/x9f/x9d/x8e ALCHEMICAL SYMBOL FOR CAPUT MORTUUM ++ /xf0/x9f/x9d/x8f ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE ++ /xf0/x9f/x9d/x90 ALCHEMICAL SYMBOL FOR CADUCEUS ++ /xf0/x9f/x9d/x91 ALCHEMICAL SYMBOL FOR TRIDENT ++ /xf0/x9f/x9d/x92 ALCHEMICAL SYMBOL FOR STARRED TRIDENT ++ /xf0/x9f/x9d/x93 ALCHEMICAL SYMBOL FOR LODESTONE ++ /xf0/x9f/x9d/x94 ALCHEMICAL SYMBOL FOR SOAP ++ /xf0/x9f/x9d/x95 ALCHEMICAL SYMBOL FOR URINE ++ /xf0/x9f/x9d/x96 ALCHEMICAL SYMBOL FOR HORSE DUNG ++ /xf0/x9f/x9d/x97 ALCHEMICAL SYMBOL FOR ASHES ++ /xf0/x9f/x9d/x98 ALCHEMICAL SYMBOL FOR POT ASHES ++ /xf0/x9f/x9d/x99 ALCHEMICAL SYMBOL FOR BRICK ++ /xf0/x9f/x9d/x9a ALCHEMICAL SYMBOL FOR POWDERED BRICK ++ /xf0/x9f/x9d/x9b ALCHEMICAL SYMBOL FOR AMALGAM ++ /xf0/x9f/x9d/x9c ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM ++ /xf0/x9f/x9d/x9d ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 ++ /xf0/x9f/x9d/x9e ALCHEMICAL SYMBOL FOR SUBLIMATION ++ /xf0/x9f/x9d/x9f ALCHEMICAL SYMBOL FOR PRECIPITATE ++ /xf0/x9f/x9d/xa0 ALCHEMICAL SYMBOL FOR DISTILL ++ /xf0/x9f/x9d/xa1 ALCHEMICAL SYMBOL FOR DISSOLVE ++ /xf0/x9f/x9d/xa2 ALCHEMICAL SYMBOL FOR DISSOLVE-2 ++ /xf0/x9f/x9d/xa3 ALCHEMICAL SYMBOL FOR PURIFY ++ /xf0/x9f/x9d/xa4 ALCHEMICAL SYMBOL FOR PUTREFACTION ++ /xf0/x9f/x9d/xa5 ALCHEMICAL SYMBOL FOR CRUCIBLE ++ /xf0/x9f/x9d/xa6 ALCHEMICAL SYMBOL FOR CRUCIBLE-2 ++ /xf0/x9f/x9d/xa7 ALCHEMICAL SYMBOL FOR CRUCIBLE-3 ++ /xf0/x9f/x9d/xa8 ALCHEMICAL SYMBOL FOR CRUCIBLE-4 ++ /xf0/x9f/x9d/xa9 ALCHEMICAL SYMBOL FOR CRUCIBLE-5 ++ /xf0/x9f/x9d/xaa ALCHEMICAL SYMBOL FOR ALEMBIC ++ /xf0/x9f/x9d/xab ALCHEMICAL SYMBOL FOR BATH OF MARY ++ /xf0/x9f/x9d/xac ALCHEMICAL SYMBOL FOR BATH OF VAPOURS ++ /xf0/x9f/x9d/xad ALCHEMICAL SYMBOL FOR RETORT ++ /xf0/x9f/x9d/xae ALCHEMICAL SYMBOL FOR HOUR ++ /xf0/x9f/x9d/xaf ALCHEMICAL SYMBOL FOR NIGHT ++ /xf0/x9f/x9d/xb0 ALCHEMICAL SYMBOL FOR DAY-NIGHT ++ /xf0/x9f/x9d/xb1 ALCHEMICAL SYMBOL FOR MONTH ++ /xf0/x9f/x9d/xb2 ALCHEMICAL SYMBOL FOR HALF DRAM ++ /xf0/x9f/x9d/xb3 ALCHEMICAL SYMBOL FOR HALF OUNCE ++ /xf0/xa0/x80/x80 ++ /xf0/xaa/x9b/x96 ++ /xf0/xaa/x9c/x80 ++ /xf0/xab/x9c/xb4 ++ /xf0/xab/x9d/x80 ++ /xf0/xab/xa0/x9d + .. /xf0/xa0/x80/x80 + .. /xf0/xa0/x81/x80 + .. /xf0/xa0/x82/x80 --- eglibc-2.13.orig/debian/patches/localedata/submitted-bz9725-locale-sv_SE.diff +++ eglibc-2.13/debian/patches/localedata/submitted-bz9725-locale-sv_SE.diff @@ -0,0 +1,35 @@ +--- + localedata/locales/sv_SE | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +--- a/localedata/locales/sv_SE ++++ b/localedata/locales/sv_SE +@@ -169,14 +169,23 @@ + "";/ + "";/ + "" ++% ++% Appropriate date and time representation (%c) ++% "%a %e %b %Y %H:%M:%S" +-d_t_fmt "" ++d_t_fmt "" ++% ++% Appropriate date representation (%x) "%Y-%m-%d" + d_fmt "" ++% ++% Appropriate time representation (%X) "%H:%M:%S" +-t_fmt "" ++t_fmt "" + am_pm "";"" + t_fmt_ampm "" +-date_fmt "/ +-/ +-" ++% ++% Appropriate date representation (date(1)) "%a %e %b %Y %H:%M:%S %Z" ++date_fmt "/ ++/ ++" + first_weekday 2 + first_workday 2 + END LC_TIME --- eglibc-2.13.orig/debian/patches/localedata/locale-bem-en_ZA.diff +++ eglibc-2.13/debian/patches/localedata/locale-bem-en_ZA.diff @@ -0,0 +1,326 @@ +2011-05-09 Ulrich Drepper + + [BZ #12681] + * locales/bem_ZA: New file. + * locales/en_ZA: New file. + * SUPPORTED (SUPPORTED-LOCALES): Add appropriate entries. + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index c9b5919..766c97c 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -53,6 +53,7 @@ ast_ES/ISO-8859-15 \ + be_BY.UTF-8/UTF-8 \ + be_BY/CP1251 \ + be_BY@latin/UTF-8 \ ++bem_ZM/UTF-8 \ + ber_DZ/UTF-8 \ + ber_MA/UTF-8 \ + bg_BG.UTF-8/UTF-8 \ +@@ -133,6 +134,7 @@ en_US.UTF-8/UTF-8 \ + en_US/ISO-8859-1 \ + en_ZA.UTF-8/UTF-8 \ + en_ZA/ISO-8859-1 \ ++en_ZM/UTF-8 \ + en_ZW.UTF-8/UTF-8 \ + en_ZW/ISO-8859-1 \ + es_AR.UTF-8/UTF-8 \ +diff --git a/localedata/locales/bem_ZM b/localedata/locales/bem_ZM +new file mode 100644 +index 0000000..edb5cf3 +--- /dev/null ++++ b/localedata/locales/bem_ZM +@@ -0,0 +1,195 @@ ++comment_char % ++escape_char / ++% Charset: UTF-8 ++% Authors: ++% 2011-04-18, Anthony Musaluke ++% 2011-04-18, info@2xlibre.net ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Bemba locale for Zambia" ++source "ANLoc" ++contact "Martin Benjamin" ++email "locales@africanlocalization.net" ++language "Bemba" ++territory "Zambia" ++revision "1.0" ++date "2011-04-18" ++% ++category "bem_ZM:2000";LC_IDENTIFICATION ++category "bem_ZM:2000";LC_CTYPE ++category "bem_ZM:2000";LC_COLLATE ++category "bem_ZM:2000";LC_TIME ++category "bem_ZM:2000";LC_NUMERIC ++category "bem_ZM:2000";LC_MONETARY ++category "bem_ZM:2000";LC_PAPER ++category "bem_ZM:2000";LC_MEASUREMENT ++category "bem_ZM:2000";LC_MESSAGES ++category "bem_ZM:2000";LC_NAME ++category "bem_ZM:2000";LC_ADDRESS ++category "bem_ZM:2000";LC_TELEPHONE ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_TIME ++% Januari, Februari, Machi, Epreo, Mei, Juni, Julai, Ogasti, Septemba, Oktoba, Novemba, Disemba ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Jan, Feb, Mar, Apr, May, Jun, July, Aug, Sep, Oct, Nov, Dec ++abmon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Pa Mulungu, Palichimo, Palichibuli, Palichitatu, Palichine, Palichisano, Pachibelushi ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++% Sun, Mon, Tue, Wed, Thu, Fri, Sat ++abday "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++week 7;19971130;4 ++first_weekday 1 ++first_workday 2 ++% %a %d %b %Y %R %Z ++d_t_fmt "/ ++" ++% %m/%d/%Y ++d_fmt "" ++% %T (HH:MM:SS) ++t_fmt "" ++% uluchelo, akasuba ++am_pm "";/ ++ "" ++% %I:%M:%S %p ++t_fmt_ampm "" ++END LC_TIME ++ ++LC_NUMERIC ++% . ++decimal_point "" ++% , ++thousands_sep "" ++grouping 3 ++END LC_NUMERIC ++ ++LC_MONETARY ++% K ++currency_symbol "" ++% ZMK ++int_curr_symbol "" ++% . ++mon_decimal_point "" ++% , ++mon_thousands_sep "" ++mon_grouping 3 ++positive_sign "" ++% - ++negative_sign "" ++frac_digits 2 ++int_frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 0 ++n_cs_precedes 1 ++n_sep_by_space 0 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_PAPER ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_MEASUREMENT ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_MESSAGES ++% ^[yYeE].* ++yesexpr "" ++% ^[nNaA].* ++noexpr "" ++END LC_MESSAGES ++ ++LC_NAME ++% %p%t%d1%g%t%M%f ++name_fmt "" ++% Ba ++name_gen "" ++% Ba ++name_miss "" ++% Ba ++name_mr "" ++% Bana ++name_mrs "" ++% Ba ++name_ms "" ++END LC_NAME ++ ++LC_ADDRESS ++% %a%N%f%N%e %h%N%b %s%N%z%N%T%N%c%N ++postal_fmt "/ ++/ ++" ++% Zambia ++country_name "" ++% ZM ++country_post "" ++% ZM ++country_ab2 "" ++% ZMB ++country_ab3 "" ++country_num 894 ++lang_name "" ++lang_term "" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% +%c %A %l ++tel_int_fmt "" ++% %A %l ++tel_dom_fmt "" ++% 00 ++int_select "" ++% 260 ++int_prefix "" ++END LC_TELEPHONE +diff --git a/localedata/locales/en_ZM b/localedata/locales/en_ZM +new file mode 100644 +index 0000000..ac8e680 +--- /dev/null ++++ b/localedata/locales/en_ZM +@@ -0,0 +1,92 @@ ++comment_char % ++escape_char / ++% Charset: UTF-8 ++% Authors: ++% 2011-04-18, Anthony Musaluke ++% 2011-04-18, info@2xlibre.net ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "English locale for Zambia" ++source "ANLoc" ++contact "Martin Benjamin" ++email "locales@africanlocalization.net" ++language "English" ++territory "Zambia" ++revision "1.0" ++date "2011-04-18" ++% ++category "en_ZM:2000";LC_IDENTIFICATION ++category "en_ZM:2000";LC_CTYPE ++category "en_ZM:2000";LC_COLLATE ++category "en_ZM:2000";LC_TIME ++category "en_ZM:2000";LC_NUMERIC ++category "en_ZM:2000";LC_MONETARY ++category "en_ZM:2000";LC_PAPER ++category "en_ZM:2000";LC_MEASUREMENT ++category "en_ZM:2000";LC_MESSAGES ++category "en_ZM:2000";LC_NAME ++category "en_ZM:2000";LC_ADDRESS ++category "en_ZM:2000";LC_TELEPHONE ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++END LC_CTYPE ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_TIME ++copy "en_GB" ++END LC_TIME ++ ++LC_NUMERIC ++copy "en_GB" ++END LC_NUMERIC ++ ++LC_MONETARY ++copy "bem_ZM" ++END LC_MONETARY ++ ++LC_PAPER ++copy "bem_ZM" ++END LC_PAPER ++ ++LC_MEASUREMENT ++copy "bem_ZM" ++END LC_MEASUREMENT ++ ++LC_MESSAGES ++copy "bem_ZM" ++END LC_MESSAGES ++ ++LC_NAME ++copy "en_GB" ++END LC_NAME ++ ++LC_ADDRESS ++% %a%N%f%N%e %h%N%b %s%N%z%N%T%N%c%N ++postal_fmt "/ ++/ ++" ++% Zambia ++country_name "" ++% ZM ++country_post "" ++% ZM ++country_ab2 "" ++% ZMB ++country_ab3 "" ++country_num 894 ++END LC_ADDRESS ++ ++LC_TELEPHONE ++copy "bem_ZM" ++END LC_TELEPHONE --- eglibc-2.13.orig/debian/patches/localedata/locales_GB.diff +++ eglibc-2.13/debian/patches/localedata/locales_GB.diff @@ -0,0 +1,43 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add AM/PM strings to cy_GB and en_GB. +# DP: This patch has been rejected upstream but is in fedora-branch. +# DP: Related bugs: #240901 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: taken from Fedora +# DP: Upstream status: not submitted +# DP: Date: 2006-02-16 + +--- + localedata/locales/cy_GB | 7 +++++-- + localedata/locales/en_GB | 4 ++-- + 2 files changed, 7 insertions(+), 4 deletions(-) + +--- a/localedata/locales/cy_GB ++++ b/localedata/locales/cy_GB +@@ -248,8 +248,11 @@ + d_t_fmt "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/en_GB ++++ b/localedata/locales/en_GB +@@ -116,8 +116,8 @@ + d_t_fmt "" + d_fmt "" + t_fmt "" +-am_pm "";"" +-t_fmt_ampm "" ++am_pm "";"" ++t_fmt_ampm "" + date_fmt "/ + / + " --- eglibc-2.13.orig/debian/patches/localedata/locales_CH.diff +++ eglibc-2.13/debian/patches/localedata/locales_CH.diff @@ -0,0 +1,24 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: LC_NUMERIC: copy de_CH into it_CH +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-10-02 + +--- + localedata/locales/it_CH | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/localedata/locales/it_CH ++++ b/localedata/locales/it_CH +@@ -57,9 +57,7 @@ + END LC_MONETARY + + LC_NUMERIC +-decimal_point "" +-thousands_sep "" +-grouping 3;3 ++copy "de_CH" + END LC_NUMERIC + + LC_TIME --- eglibc-2.13.orig/debian/patches/localedata/locale-ku_TR.diff +++ eglibc-2.13/debian/patches/localedata/locale-ku_TR.diff @@ -0,0 +1,189 @@ +# DP: Description: Please add Kurdish locale +# DP: Related bugs: BZ870 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Kader DILSIZ, Pablo Saratxaga +# DP: Upstream status: Version 0.1 submitted in the original bugreport +# DP: has been committed, this new version has been sent just after. +# DP: Date: 2006-01-06 + +--- + localedata/locales/ku_TR | 104 ++++++++++++++++++++++------------------------- + 1 file changed, 49 insertions(+), 55 deletions(-) + +--- a/localedata/locales/ku_TR ++++ b/localedata/locales/ku_TR +@@ -16,6 +16,8 @@ + % Distribution and use is free, also + % for commercial purposes. + % History: ++% 0.2 2005-04-24 Erdal Ronah ++% Fix LC_CTYPE and LC_NAME sections. Remove dotless i from LC_COLLATE + + LC_IDENTIFICATION + title "Kurdish (latin) locale for Turkey" +@@ -27,8 +29,8 @@ + fax "" + language "Kurdish" + territory "Turkey" +-revision "0.1" +-date "2003-07-27" ++revision "0.2" ++date "2005-04-24" + % + category "ku_TR:2000";LC_IDENTIFICATION + category "ku_TR:2000";LC_CTYPE +@@ -46,7 +48,7 @@ + END LC_IDENTIFICATION + + LC_CTYPE +-copy "tr_TR" ++copy "i18n" + END LC_CTYPE + + LC_COLLATE +@@ -56,7 +58,6 @@ + + collating-symbol + collating-symbol > +-collating-symbol + collating-symbol > + collating-symbol + collating-symbol > +@@ -65,9 +66,7 @@ + + reorder-after + > +-reorder-after +- +- ++reorder-after + > + reorder-after + +@@ -84,13 +83,9 @@ + reorder-after + >;;;IGNORE + +-reorder-after +- ;;;IGNORE +- ;;;IGNORE ++reorder-after + >;;;IGNORE +-reorder-after +- ;;;IGNORE +- ;;;IGNORE ++reorder-after + >;;;IGNORE + + reorder-after +@@ -116,35 +111,35 @@ + END LC_NUMERIC + + LC_TIME +-abday "";"";/ +- "";"";/ +- "";"";/ +- "" +-day "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + abmon "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"";/ + "";"" +-mon "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "";/ +- "" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" + % format: %A %d %B %Y %T %Z + d_t_fmt "" + % format: %d/%m/%Y +@@ -182,15 +177,15 @@ + name_fmt "/ + " + % TODO +-% Sayýn +-name_gen "" ++% Birz ++name_gen "" + % "M." +-name_mr "" +-% "Jne" +-name_mrs "" +-name_ms "" +-% "Kc,k" +-name_miss "" ++name_mr "" ++% "Birz" ++name_mrs "" ++name_ms "" ++% "Birz" ++name_miss "" + END LC_NAME + + LC_ADDRESS +@@ -199,17 +194,16 @@ + / + / + " +-% TODO +-country_name "" +-country_post "TR" +-country_ab2 "TR" +-country_ab3 "TUR" ++country_name "" ++country_post "" ++country_ab2 "" ++country_ab3 "" + country_num 792 + country_isbn 975 +-country_car "TR" +-% "kurdi" +-lang_name "" +-lang_ab "ku" +-lang_term "kur" +-lang_lib "kur" ++country_car "" ++% "kurd" ++lang_name "" ++lang_ab "" ++lang_term "" ++lang_lib "" + END LC_ADDRESS --- eglibc-2.13.orig/debian/patches/localedata/first_weekday.diff +++ eglibc-2.13/debian/patches/localedata/first_weekday.diff @@ -0,0 +1,1637 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Add first_weekday and first_workday, most come +# DP: from OpenOffice through CLDR +# DP: This patch applies the following conventions: +# DP: 1=Sunday...7=Saturday +# DP: The week keyword is removed from all locales. +# DP: Normally GTK apps should work with these settings, as well as +# DP: other apps. +# DP: Related bugs: #343885 347323 #379100 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted + +--- + localedata/locales/aa_DJ | 2 ++ + localedata/locales/aa_ER | 2 ++ + localedata/locales/aa_ER@saaho | 2 ++ + localedata/locales/aa_ET | 2 ++ + localedata/locales/af_ZA | 2 ++ + localedata/locales/am_ET | 2 ++ + localedata/locales/ar_AE | 2 ++ + localedata/locales/ar_BH | 2 ++ + localedata/locales/ar_DZ | 2 ++ + localedata/locales/ar_EG | 2 ++ + localedata/locales/ar_IN | 2 ++ + localedata/locales/ar_IQ | 2 ++ + localedata/locales/ar_JO | 2 ++ + localedata/locales/ar_KW | 2 ++ + localedata/locales/ar_LB | 2 ++ + localedata/locales/ar_LY | 2 ++ + localedata/locales/ar_MA | 2 ++ + localedata/locales/ar_OM | 2 ++ + localedata/locales/ar_QA | 2 ++ + localedata/locales/ar_SA | 2 ++ + localedata/locales/ar_SD | 2 ++ + localedata/locales/ar_SY | 2 ++ + localedata/locales/ar_TN | 2 ++ + localedata/locales/ar_YE | 2 ++ + localedata/locales/az_AZ | 2 ++ + localedata/locales/be_BY | 3 +++ + localedata/locales/be_BY@latin | 3 +++ + localedata/locales/bn_IN | 2 ++ + localedata/locales/br_FR | 2 ++ + localedata/locales/bs_BA | 2 ++ + localedata/locales/byn_ER | 2 ++ + localedata/locales/ca_ES | 2 ++ + localedata/locales/de_BE | 2 ++ + localedata/locales/de_LU | 2 ++ + localedata/locales/dz_BT | 3 ++- + localedata/locales/el_GR | 2 ++ + localedata/locales/en_AU | 2 ++ + localedata/locales/en_CA | 2 ++ + localedata/locales/en_DK | 3 +++ + localedata/locales/en_HK | 2 ++ + localedata/locales/en_IE | 2 ++ + localedata/locales/en_IN | 2 ++ + localedata/locales/en_NZ | 2 ++ + localedata/locales/en_PH | 2 ++ + localedata/locales/en_SG | 2 ++ + localedata/locales/en_ZA | 2 ++ + localedata/locales/es_AR | 2 ++ + localedata/locales/es_BO | 2 ++ + localedata/locales/es_CL | 2 ++ + localedata/locales/es_DO | 2 ++ + localedata/locales/es_EC | 2 ++ + localedata/locales/es_GT | 2 ++ + localedata/locales/es_HN | 2 ++ + localedata/locales/es_MX | 2 ++ + localedata/locales/es_NI | 2 ++ + localedata/locales/es_PA | 2 ++ + localedata/locales/es_PE | 2 ++ + localedata/locales/es_PR | 2 ++ + localedata/locales/es_PY | 2 ++ + localedata/locales/es_SV | 2 ++ + localedata/locales/es_US | 2 ++ + localedata/locales/es_UY | 2 ++ + localedata/locales/es_VE | 2 ++ + localedata/locales/eu_ES | 1 + + localedata/locales/ga_IE | 2 ++ + localedata/locales/gd_GB | 2 ++ + localedata/locales/gez_ER | 2 ++ + localedata/locales/gez_ET | 2 ++ + localedata/locales/gl_ES | 2 ++ + localedata/locales/gu_IN | 2 ++ + localedata/locales/gv_GB | 2 ++ + localedata/locales/he_IL | 2 ++ + localedata/locales/hi_IN | 2 ++ + localedata/locales/hr_HR | 2 ++ + localedata/locales/hsb_DE | 2 ++ + localedata/locales/hy_AM | 2 ++ + localedata/locales/id_ID | 2 ++ + localedata/locales/is_IS | 2 ++ + localedata/locales/it_CH | 2 ++ + localedata/locales/it_IT | 2 ++ + localedata/locales/ja_JP | 2 ++ + localedata/locales/kk_KZ | 2 ++ + localedata/locales/km_KH | 2 ++ + localedata/locales/kn_IN | 2 ++ + localedata/locales/ko_KR | 2 ++ + localedata/locales/ku_TR | 2 ++ + localedata/locales/kw_GB | 2 ++ + localedata/locales/lo_LA | 2 ++ + localedata/locales/lt_LT | 2 ++ + localedata/locales/lv_LV | 2 ++ + localedata/locales/ml_IN | 2 ++ + localedata/locales/mn_MN | 2 ++ + localedata/locales/mr_IN | 2 ++ + localedata/locales/ms_MY | 2 ++ + localedata/locales/ne_NP | 2 ++ + localedata/locales/nl_BE | 2 ++ + localedata/locales/nl_NL | 2 ++ + localedata/locales/nr_ZA | 2 ++ + localedata/locales/nso_ZA | 2 ++ + localedata/locales/oc_FR | 2 ++ + localedata/locales/om_ET | 2 ++ + localedata/locales/pa_IN | 2 ++ + localedata/locales/pt_BR | 1 + + localedata/locales/pt_PT | 2 ++ + localedata/locales/rw_RW | 2 ++ + localedata/locales/sa_IN | 2 ++ + localedata/locales/se_NO | 3 +++ + localedata/locales/sid_ET | 2 ++ + localedata/locales/sl_SI | 2 ++ + localedata/locales/so_DJ | 2 ++ + localedata/locales/so_ET | 2 ++ + localedata/locales/so_KE | 2 ++ + localedata/locales/so_SO | 2 ++ + localedata/locales/sq_AL | 2 ++ + localedata/locales/ss_ZA | 2 ++ + localedata/locales/st_ZA | 2 ++ + localedata/locales/ta_IN | 2 ++ + localedata/locales/te_IN | 2 ++ + localedata/locales/th_TH | 2 ++ + localedata/locales/ti_ER | 2 ++ + localedata/locales/ti_ET | 2 ++ + localedata/locales/tig_ER | 2 ++ + localedata/locales/tn_ZA | 2 ++ + localedata/locales/tr_TR | 2 ++ + localedata/locales/ts_ZA | 2 ++ + localedata/locales/tt_RU | 2 ++ + localedata/locales/uz_UZ | 2 ++ + localedata/locales/uz_UZ@cyrillic | 2 ++ + localedata/locales/ve_ZA | 2 ++ + localedata/locales/vi_VN | 2 ++ + localedata/locales/wa_BE | 3 ++- + localedata/locales/wal_ET | 2 ++ + localedata/locales/xh_ZA | 2 ++ + localedata/locales/yi_US | 2 ++ + localedata/locales/zh_CN | 2 ++ + localedata/locales/zh_HK | 2 ++ + localedata/locales/zh_SG | 2 ++ + localedata/locales/zh_TW | 3 +++ + localedata/locales/zu_ZA | 2 ++ + 137 files changed, 276 insertions(+), 2 deletions(-) + +--- a/localedata/locales/aa_DJ ++++ b/localedata/locales/aa_DJ +@@ -273,5 +273,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/aa_ER ++++ b/localedata/locales/aa_ER +@@ -223,5 +223,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/aa_ER@saaho ++++ b/localedata/locales/aa_ER@saaho +@@ -207,5 +207,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/aa_ET ++++ b/localedata/locales/aa_ET +@@ -226,5 +226,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/af_ZA ++++ b/localedata/locales/af_ZA +@@ -164,6 +164,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/am_ET ++++ b/localedata/locales/am_ET +@@ -1564,5 +1564,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/ar_AE ++++ b/localedata/locales/ar_AE +@@ -141,6 +141,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_BH ++++ b/localedata/locales/ar_BH +@@ -145,6 +145,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_DZ ++++ b/localedata/locales/ar_DZ +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_EG ++++ b/localedata/locales/ar_EG +@@ -148,6 +148,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_IN ++++ b/localedata/locales/ar_IN +@@ -127,6 +127,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: copied from other *_IN locales ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/ar_IQ ++++ b/localedata/locales/ar_IQ +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_JO ++++ b/localedata/locales/ar_JO +@@ -162,6 +162,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_KW ++++ b/localedata/locales/ar_KW +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_LB ++++ b/localedata/locales/ar_LB +@@ -161,6 +161,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_LY ++++ b/localedata/locales/ar_LY +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_MA ++++ b/localedata/locales/ar_MA +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_OM ++++ b/localedata/locales/ar_OM +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_QA ++++ b/localedata/locales/ar_QA +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_SA ++++ b/localedata/locales/ar_SA +@@ -132,6 +132,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_SD ++++ b/localedata/locales/ar_SD +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_SY ++++ b/localedata/locales/ar_SY +@@ -161,6 +161,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 5 + END LC_TIME + + +--- a/localedata/locales/ar_TN ++++ b/localedata/locales/ar_TN +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/ar_YE ++++ b/localedata/locales/ar_YE +@@ -144,6 +144,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + +--- a/localedata/locales/az_AZ ++++ b/localedata/locales/az_AZ +@@ -274,6 +274,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/be_BY ++++ b/localedata/locales/be_BY +@@ -145,6 +145,9 @@ + date_fmt "/ + / + " ++% Copied from be_BY@alternative ++first_weekday 2 ++first_workday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/be_BY@latin ++++ b/localedata/locales/be_BY@latin +@@ -102,6 +102,9 @@ + date_fmt "/ + / + " ++% Copied from be_BY@alternative ++first_weekday 2 ++first_workday 2 + END LC_TIME + + LC_COLLATE +--- a/localedata/locales/bn_IN ++++ b/localedata/locales/bn_IN +@@ -145,6 +145,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/br_FR ++++ b/localedata/locales/br_FR +@@ -141,6 +141,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/bs_BA ++++ b/localedata/locales/bs_BA +@@ -208,6 +208,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/byn_ER ++++ b/localedata/locales/byn_ER +@@ -218,5 +218,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/ca_ES ++++ b/localedata/locales/ca_ES +@@ -138,6 +138,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/de_BE ++++ b/localedata/locales/de_BE +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/de_LU ++++ b/localedata/locales/de_LU +@@ -119,6 +119,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/dz_BT ++++ b/localedata/locales/dz_BT +@@ -1546,7 +1546,8 @@ + / + " + +- ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/el_GR ++++ b/localedata/locales/el_GR +@@ -139,6 +139,8 @@ + % + % Appropriate date representation (date(1)) "%a %d %b %Y %r %Z" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/en_AU ++++ b/localedata/locales/en_AU +@@ -117,6 +117,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/en_CA ++++ b/localedata/locales/en_CA +@@ -132,6 +132,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/en_HK ++++ b/localedata/locales/en_HK +@@ -133,6 +133,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/en_IE ++++ b/localedata/locales/en_IE +@@ -115,6 +115,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/en_IN ++++ b/localedata/locales/en_IN +@@ -132,6 +132,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/en_NZ ++++ b/localedata/locales/en_NZ +@@ -117,6 +117,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/en_PH ++++ b/localedata/locales/en_PH +@@ -133,6 +133,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/en_SG ++++ b/localedata/locales/en_SG +@@ -131,6 +131,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/en_ZA ++++ b/localedata/locales/en_ZA +@@ -205,6 +205,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/es_AR ++++ b/localedata/locales/es_AR +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_BO ++++ b/localedata/locales/es_BO +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_CL ++++ b/localedata/locales/es_CL +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_DO ++++ b/localedata/locales/es_DO +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_EC ++++ b/localedata/locales/es_EC +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_GT ++++ b/localedata/locales/es_GT +@@ -121,6 +121,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_HN ++++ b/localedata/locales/es_HN +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_MX ++++ b/localedata/locales/es_MX +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_NI ++++ b/localedata/locales/es_NI +@@ -114,6 +114,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_PA ++++ b/localedata/locales/es_PA +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_PE ++++ b/localedata/locales/es_PE +@@ -123,6 +123,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_PR ++++ b/localedata/locales/es_PR +@@ -113,6 +113,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_PY ++++ b/localedata/locales/es_PY +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_SV ++++ b/localedata/locales/es_SV +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_US ++++ b/localedata/locales/es_US +@@ -174,6 +174,8 @@ + date_fmt "/ + / + " ++% FIXME ++first_weekday 1 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_UY ++++ b/localedata/locales/es_UY +@@ -122,6 +122,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/es_VE ++++ b/localedata/locales/es_VE +@@ -123,6 +123,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/eu_ES ++++ b/localedata/locales/eu_ES +@@ -131,6 +131,7 @@ + date_fmt "/ + / + " ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/ga_IE ++++ b/localedata/locales/ga_IE +@@ -117,6 +117,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/gd_GB ++++ b/localedata/locales/gd_GB +@@ -122,6 +122,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/gez_ER ++++ b/localedata/locales/gez_ER +@@ -215,5 +215,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/gez_ET ++++ b/localedata/locales/gez_ET +@@ -216,5 +216,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/gl_ES ++++ b/localedata/locales/gl_ES +@@ -121,6 +121,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/gu_IN ++++ b/localedata/locales/gu_IN +@@ -178,6 +178,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/gv_GB ++++ b/localedata/locales/gv_GB +@@ -131,6 +131,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/he_IL ++++ b/localedata/locales/he_IL +@@ -123,6 +123,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/hi_IN ++++ b/localedata/locales/hi_IN +@@ -173,6 +173,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/hr_HR ++++ b/localedata/locales/hr_HR +@@ -220,6 +220,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/hy_AM ++++ b/localedata/locales/hy_AM +@@ -147,6 +147,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/id_ID ++++ b/localedata/locales/id_ID +@@ -120,6 +120,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/is_IS ++++ b/localedata/locales/is_IS +@@ -2223,6 +2223,8 @@ + date_fmt "/ + / + " ++% FIXME: found in Java ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/it_CH ++++ b/localedata/locales/it_CH +@@ -100,6 +96,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/it_IT ++++ b/localedata/locales/it_IT +@@ -124,6 +124,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/ja_JP ++++ b/localedata/locales/ja_JP +@@ -15006,6 +15006,8 @@ + "";"";/ + "";"";/ + "";"" ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/kk_KZ ++++ b/localedata/locales/kk_KZ +@@ -232,6 +232,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/km_KH ++++ b/localedata/locales/km_KH +@@ -1841,6 +1841,8 @@ + % ICT-7ICT-7 + %timezone "" + ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/kn_IN ++++ b/localedata/locales/kn_IN +@@ -182,6 +182,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/ko_KR ++++ b/localedata/locales/ko_KR +@@ -6189,6 +6189,8 @@ + / + / + " ++% FIXME: found in CLDR ++first_weekday 1 + + END LC_TIME + +--- a/localedata/locales/ku_TR ++++ b/localedata/locales/ku_TR +@@ -149,6 +149,8 @@ + t_fmt_ampm "" + % format: %A %d %B %Y + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/kw_GB ++++ b/localedata/locales/kw_GB +@@ -123,6 +123,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/lo_LA ++++ b/localedata/locales/lo_LA +@@ -718,6 +718,8 @@ + " + % ICT-7ICT-7 + timezone "" ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/lt_LT ++++ b/localedata/locales/lt_LT +@@ -137,6 +137,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/lv_LV ++++ b/localedata/locales/lv_LV +@@ -2183,6 +2183,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/ml_IN ++++ b/localedata/locales/ml_IN +@@ -163,6 +163,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME ++first_weekday 1 + END LC_TIME + % + LC_MESSAGES +--- a/localedata/locales/mn_MN ++++ b/localedata/locales/mn_MN +@@ -220,6 +220,8 @@ + % "%Z %Y ony %B %e, %a %H:%M:%S" + date_fmt "/ + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/mr_IN ++++ b/localedata/locales/mr_IN +@@ -170,6 +170,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/ms_MY ++++ b/localedata/locales/ms_MY +@@ -139,6 +139,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +--- a/localedata/locales/ne_NP ++++ b/localedata/locales/ne_NP +@@ -153,6 +153,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/nl_BE ++++ b/localedata/locales/nl_BE +@@ -104,6 +104,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/nr_ZA ++++ b/localedata/locales/nr_ZA +@@ -162,6 +162,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/nso_ZA ++++ b/localedata/locales/nso_ZA +@@ -157,6 +157,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/oc_FR ++++ b/localedata/locales/oc_FR +@@ -123,6 +123,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_NAME +--- a/localedata/locales/om_ET ++++ b/localedata/locales/om_ET +@@ -233,5 +233,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/pa_IN ++++ b/localedata/locales/pa_IN +@@ -170,6 +170,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/pt_BR ++++ b/localedata/locales/pt_BR +@@ -120,6 +120,7 @@ + date_fmt "/ + / + " ++first_weekday 1 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/pt_PT ++++ b/localedata/locales/pt_PT +@@ -124,6 +124,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/rw_RW ++++ b/localedata/locales/rw_RW +@@ -109,6 +109,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/sa_IN ++++ b/localedata/locales/sa_IN +@@ -182,6 +182,8 @@ + date_fmt "/ + / + " ++% FIXME: copied from other *_IN locales ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/se_NO ++++ b/localedata/locales/se_NO +@@ -277,6 +277,9 @@ + " + + % %a %b-%e %H:%M:%S %Z %Y søn jan-31 21:15:11 CET 2001 ++% FIXME: found in CLDR ++first_weekday 2 ++first_workday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/sid_ET ++++ b/localedata/locales/sid_ET +@@ -222,5 +222,7 @@ + % + date_fmt "/ + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/sl_SI ++++ b/localedata/locales/sl_SI +@@ -157,6 +157,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/so_DJ ++++ b/localedata/locales/so_DJ +@@ -222,5 +222,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/so_ET ++++ b/localedata/locales/so_ET +@@ -219,5 +219,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/so_KE ++++ b/localedata/locales/so_KE +@@ -218,5 +218,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/so_SO ++++ b/localedata/locales/so_SO +@@ -278,5 +278,7 @@ + date_fmt "/ + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/sq_AL ++++ b/localedata/locales/sq_AL +@@ -290,6 +290,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +--- a/localedata/locales/ss_ZA ++++ b/localedata/locales/ss_ZA +@@ -167,6 +167,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/st_ZA ++++ b/localedata/locales/st_ZA +@@ -164,6 +164,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/ta_IN ++++ b/localedata/locales/ta_IN +@@ -154,6 +154,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/te_IN ++++ b/localedata/locales/te_IN +@@ -156,6 +156,8 @@ + % %p%I.%M.%S %Z + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/th_TH ++++ b/localedata/locales/th_TH +@@ -913,6 +913,8 @@ + " + % ICT-7ICT-7 + timezone "" ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/ti_ER ++++ b/localedata/locales/ti_ER +@@ -270,5 +270,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/ti_ET ++++ b/localedata/locales/ti_ET +@@ -1072,5 +1072,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/tig_ER ++++ b/localedata/locales/tig_ER +@@ -218,5 +218,7 @@ + / + " + % ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/tn_ZA ++++ b/localedata/locales/tn_ZA +@@ -169,6 +169,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/tr_TR ++++ b/localedata/locales/tr_TR +@@ -1540,6 +1540,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/ts_ZA ++++ b/localedata/locales/ts_ZA +@@ -164,6 +164,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/tt_RU ++++ b/localedata/locales/tt_RU +@@ -297,6 +297,8 @@ + t_fmt "" + am_pm "";"" + t_fmt_ampm "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_PAPER +--- a/localedata/locales/uz_UZ ++++ b/localedata/locales/uz_UZ +@@ -260,6 +260,8 @@ + am_pm "";"" + t_fmt_ampm "" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/uz_UZ@cyrillic ++++ b/localedata/locales/uz_UZ@cyrillic +@@ -263,6 +263,8 @@ + am_pm "";"" + t_fmt_ampm "" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/ve_ZA ++++ b/localedata/locales/ve_ZA +@@ -166,6 +166,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/vi_VN ++++ b/localedata/locales/vi_VN +@@ -294,6 +294,8 @@ + am_pm "";"" + t_fmt_ampm "" + date_fmt "" ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + % yes: Va^ng / Da. +--- a/localedata/locales/wa_BE ++++ b/localedata/locales/wa_BE +@@ -163,7 +163,8 @@ + am_pm "";"" + t_fmt_ampm "" + % prumî djoû del samwinne (1=londi) +-first_weekday 1 ++% FIXME No, 2=lundi ++first_weekday 2 + END LC_TIME + + LC_NAME +--- a/localedata/locales/wal_ET ++++ b/localedata/locales/wal_ET +@@ -232,5 +232,7 @@ + / + / + " ++% FIXME: found in CLDR ++first_weekday 7 + END LC_TIME + % +--- a/localedata/locales/xh_ZA ++++ b/localedata/locales/xh_ZA +@@ -164,6 +164,8 @@ + % time-zone name, + % year with century as a decimal number,e.g. 2001. + % ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/yi_US ++++ b/localedata/locales/yi_US +@@ -186,6 +186,8 @@ + am_pm "";"" + t_fmt_ampm "" + cal_direction 3 ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/zh_CN ++++ b/localedata/locales/zh_CN +@@ -135,6 +135,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/zh_HK ++++ b/localedata/locales/zh_HK +@@ -141,6 +141,8 @@ + date_fmt "/ + / + " ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + +--- a/localedata/locales/zh_SG ++++ b/localedata/locales/zh_SG +@@ -130,6 +130,8 @@ + % Appropriate 12 h time representation (%r) + t_fmt_ampm "" + % ++% FIXME: found in CLDR ++first_weekday 2 + END LC_TIME + + +--- a/localedata/locales/zh_TW ++++ b/localedata/locales/zh_TW +@@ -128,6 +128,9 @@ + / + " + ++% FIXME: found in CLDR ++first_weekday 1 ++ + END LC_TIME + + LC_MESSAGES +--- a/localedata/locales/zu_ZA ++++ b/localedata/locales/zu_ZA +@@ -170,6 +170,8 @@ + % %Z - time-zone name, + % %Y - year with century as a decimal number,e.g. 2001. + ++% FIXME: found in CLDR ++first_weekday 1 + END LC_TIME + + LC_MESSAGES --- eglibc-2.13.orig/debian/patches/localedata/locale-ia.diff +++ eglibc-2.13/debian/patches/localedata/locale-ia.diff @@ -0,0 +1,163 @@ +Locale definition for the interlingua locale, submitted by +Alberto Mardegan in #224756. +Ulrich Drepper claimed that he will not accept artificial +languages (like interlingua and esperanto), this locale +will thus not be submitted upstream. + +--- + localedata/SUPPORTED | 1 + localedata/locales/ia | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 140 insertions(+) + +--- /dev/null ++++ b/localedata/locales/ia +@@ -0,0 +1,139 @@ ++comment_char % ++escape_char / ++% ++% Interlingua Language Locale ++ ++LC_IDENTIFICATION ++title "Interlingua locale" ++source "" ++address "" ++contact "" ++email "mardy@despammed.com" ++tel "" ++fax "" ++language "Interlingua" ++territory "" ++revision "1.0" ++date "2003-11-25" ++% ++category "ia:2000";LC_IDENTIFICATION ++category "ia:2000";LC_CTYPE ++category "ia:2000";LC_COLLATE ++category "ia:2000";LC_TIME ++category "ia:2000";LC_NUMERIC ++category "ia:2000";LC_MONETARY ++category "ia:2000";LC_MESSAGES ++category "ia:2000";LC_PAPER ++category "ia:2000";LC_NAME ++category "ia:2000";LC_ADDRESS ++category "ia:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++yesexpr "" ++noexpr "" ++END LC_MESSAGES ++ ++LC_MONETARY ++int_curr_symbol "" ++currency_symbol "" ++mon_decimal_point "" ++mon_thousands_sep "" ++mon_grouping 3;3 ++positive_sign "" ++negative_sign "" ++int_frac_digits 2 ++frac_digits 2 ++p_cs_precedes 1 ++p_sep_by_space 1 ++n_cs_precedes 1 ++n_sep_by_space 1 ++p_sign_posn 1 ++n_sign_posn 1 ++END LC_MONETARY ++ ++LC_NUMERIC ++decimal_point "" ++thousands_sep "" ++grouping 0;0 ++END LC_NUMERIC ++ ++LC_TIME ++abday "";"";/ ++ "";"";/ ++ "";"";/ ++ "" ++day "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++abmon "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"";/ ++ "";"" ++mon "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "";/ ++ "" ++d_t_fmt "" ++d_fmt "" ++t_fmt "" ++am_pm "";"" ++t_fmt_ampm "" ++date_fmt "/ ++/ ++" ++END LC_TIME ++ ++LC_PAPER ++% FIXME ++height 297 ++% FIXME ++width 210 ++END LC_PAPER ++ ++LC_TELEPHONE ++tel_int_fmt "/ ++" ++int_select "" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++% FIXME ++measurement 1 ++END LC_MEASUREMENT ++ ++LC_NAME ++name_fmt "/ ++" ++END LC_NAME ++ ++LC_ADDRESS ++postal_fmt "/ ++/ ++/ ++/ ++" ++END LC_ADDRESS +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -244,6 +244,7 @@ + hu_HU/ISO-8859-2 \ + hy_AM/UTF-8 \ + hy_AM.ARMSCII-8/ARMSCII-8 \ ++ia/UTF-8 \ + id_ID.UTF-8/UTF-8 \ + id_ID/ISO-8859-1 \ + ig_NG/UTF-8 \ --- eglibc-2.13.orig/debian/patches/localedata/locale-tt_RU.diff +++ eglibc-2.13/debian/patches/localedata/locale-tt_RU.diff @@ -0,0 +1,18 @@ +2010-05-04 Andreas Schwab + + * SUPPORTED (SUPPORTED-LOCALES): Fix name of tt_RU.UTF-8@iqtelif + locale. + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index a1ebcac..d665961 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -386,7 +386,7 @@ tr_TR.UTF-8/UTF-8 \ + tr_TR/ISO-8859-9 \ + ts_ZA/UTF-8 \ + tt_RU.UTF-8/UTF-8 \ +-tt_RU@iqtelif.UTF-8/UTF-8 \ ++tt_RU.UTF-8@iqtelif/UTF-8 \ + ug_CN/UTF-8 \ + uk_UA.UTF-8/UTF-8 \ + uk_UA/KOI8-U \ --- eglibc-2.13.orig/debian/patches/localedata/locale-C.diff +++ eglibc-2.13/debian/patches/localedata/locale-C.diff @@ -0,0 +1,41 @@ +--- + localedata/locales/C | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +--- /dev/null ++++ b/localedata/locales/C +@@ -0,0 +1,34 @@ ++escape_char / ++comment_char % ++% Locale for C locale in UTF-8 ++% Contributed by Aurelien Jarno , 2011 ++ ++LC_IDENTIFICATION ++title "C locale" ++source "" ++address "" ++contact "" ++email "aurel32@debian.org" ++tel "" ++fax "" ++language "C" ++territory "" ++revision "1.0" ++date "2011-02-08" ++% ++category "C:2011";LC_IDENTIFICATION ++category "C:2011";LC_CTYPE ++category "C:2011";LC_COLLATE ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++translit_start ++include "translit_combining";"" ++translit_end ++END LC_CTYPE ++ ++LC_COLLATE ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++END LC_COLLATE --- eglibc-2.13.orig/debian/patches/localedata/submitted-bz9732-dz_BT-collation.diff +++ eglibc-2.13/debian/patches/localedata/submitted-bz9732-dz_BT-collation.diff @@ -0,0 +1,2409 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Enhance collation rules for dz_BT. These rules have +# DP: been written by Pema Geyleg and Denis Barbier, based on +# DP: C. Fynn's chart. +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Pema Geyleg and Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-30 + +--- + localedata/locales/dz_BT | 2330 +++++++++++++++++++++++++---------------------- + 1 file changed, 1285 insertions(+), 1045 deletions(-) + +--- a/localedata/locales/dz_BT ++++ b/localedata/locales/dz_BT +@@ -56,7 +56,30 @@ + LC_COLLATE + copy "iso14651_t1" + +-script ++% Collation rules written by Pema Geyleg, Pablo Saratxaga and Denis ++% Barbier, based on Dzongkha collation chart provided by Christopher J Fynn ++% at http://www.btinternet.com/~c.fynn/misc/DZ_bt/dzongkha-collate.html ++ ++% Third level ++ ++% Nominal, subjoined or variant forms ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++% Tibetan signs ++collating-symbol ++collating-symbol ++collating-symbol ++ ++% Second level ++collating-symbol ++collating-symbol ++collating-symbol ++ ++% Primary level ++collating-symbol + + % 30 base letters + collating-symbol +@@ -96,669 +119,736 @@ + collating-symbol + collating-symbol + +-% pre-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% nominal, subjoined or variant forms +-collating-symbol +-collating-symbol +-collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++% ++collating-symbol ++% ++collating-symbol ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++%%% Not in Fynn's chart ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" ++% ++collating-symbol ++collating-element from "" ++% ++collating-symbol ++collating-symbol ++collating-symbol ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol + +-% ka-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% kha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% ga-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ga-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% nga-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the nga-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ca-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% cha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% ja-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% nya-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ta-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% tha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% da-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the da-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% na-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the na-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% pa-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the pa-radical +-% itself, and the following letter. +-collating-symbol % ambiguous in Dzongkha +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% pha-radicals +-collating-symbol +-collating-element from "" +- +-% ba-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ba-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ma-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ma-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% tsa-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% tsha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% dza-radicals +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% zha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% za-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% ya-radicals +-collating-symbol +-collating-element from "" +- +-% ra-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the ra-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-element from "" +- +-% sha-radicals +-collating-symbol +-collating-symbol +-collating-element from "" +-collating-element from "" +- +-% sa-radicals +-% as there are ambiguous, the next letter has to be added too; +-% so the are in fact double elements: the sa-radical +-% itself, and the following letter. +-collating-symbol % ambiguous +-collating-symbol % ambiguous +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" +- +-% ha-radicals +-collating-symbol +-collating-element from "" +- +-% generic definitions +-reorder-after ++reorder-after + + ++ ++ ++ ++ ++ ++ + + reorder-after +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++reorder-after ++ + +-% a better place than after cyrillic ya should be defined + reorder-after ++ + +- +- +- +- +- +- +- +- +- +- ++ ++ ++ + +- +- +- +- +- +- +- +- +- ++ + +- +- +- +- +- +- +- ++ + +- +- +- +- ++ + +- +- ++ + +- +- +- +- +- ++ + +- +- +- +- +- +- ++ + +- +- +- +- +- +- +- +- ++ + +- +- ++ + +- +- +- +- +- +- +- +- +- +- ++ + +- +- +- +- +- +- ++ + +- +- +- ++ + +- ++ + +- +- +- +- +- ++ + +- +- +- ++ + +- +- +- +- +- +- ++ + +- +- ++ + +- +- +- +- ++ + ++ + +- +- ++ + +- +- ++ + ++ + +- ++ + +- ++ + ++ + +- +- ++ + +- +- ++ + +- ++ + ++ ++ + + + + + +-%order_start ;forward;forward;forward;forward,position ++ + +-% specific definitions +-reorder-after +-% digits ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++reorder-end ++ ++script ++ ++order_start ;forward;forward;forward;forward,position + <0>;;IGNORE;IGNORE + <0>;;IGNORE;IGNORE + <1>;;IGNORE;IGNORE +@@ -780,430 +870,580 @@ + <9>;;IGNORE;IGNORE + <9>;;IGNORE;IGNORE + +-% letters +- ;;;IGNORE % ka +- ;;;IGNORE +- "";"";"";IGNORE % kssa +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % kha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ga +- ;;;IGNORE +- "";"";"";IGNORE % gha +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % nga +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ca +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % cha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ja +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % nya +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ta +- ;;;IGNORE +- ;;;IGNORE % tta +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % tha +- ;;;IGNORE +- ;;;IGNORE % ttha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % da +- ;;;IGNORE +- ;;;IGNORE % dda +- ;;;IGNORE +- "";"";"";IGNORE % dha +- "";"";"";IGNORE +- "";"";"";IGNORE % ddha +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % na +- ;;;IGNORE +- ;;;IGNORE % nna +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % pa +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % pha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ba +- ;;;IGNORE +- "";"";"";IGNORE % bha +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % ma +- ;;;IGNORE +- ;;;IGNORE % +- ;;;IGNORE % +- ;;;IGNORE % +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % tsa +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % tsha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % dza +- ;;;IGNORE +- "";"";"";IGNORE % dzha +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % wa +- ;;;IGNORE +- ;;;IGNORE % fixed wa +- ;;;IGNORE % zha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % za +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % -a +- ;;;IGNORE +- ;;;IGNORE % ya +- ;;;IGNORE +- ;;;IGNORE % fixed ya +- ;;;IGNORE +- ;;;IGNORE % ra +- ;;;IGNORE +- ;;;IGNORE % fixed ra +- ;;;IGNORE +- ;;;IGNORE % vocalic r +-% FIXME; which of the two? +- ;;;IGNORE % vocalic rr +-% "";";";IGNORE % vocalic rr +- "";"";"";IGNORE +- ;;;IGNORE % la +- ;;;IGNORE +- ;;;IGNORE % vocalic l +-% FIXME; which of the two? +- ;;;IGNORE % vocalic ll +-% "";";";IGNORE % vocalic ll +- ;;;IGNORE % sha +- ;;;IGNORE +- ;;;IGNORE % ssa +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % sa +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE % ha +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE % a +- ;;;IGNORE +- +-% explicit vowels +- IGNORE;;IGNORE;IGNORE % long vowel mark % FIXME +- ;;;IGNORE % i +- ;;;IGNORE % reversed i +- ;;;IGNORE % ii +- ;;;IGNORE % reversed ii +- ;;;IGNORE % u +- ;;;IGNORE % uu +- ;;;IGNORE % e +- ;;;IGNORE % ee +- ;;;IGNORE % o +- ;;;IGNORE % oo +- +-% FIXME: 0F39, 0F7F, 0F84, 0F85, 0F86, 0F87, +- +-% FIXME: 0F88, UF89, UF8A, 0F8B +- IGNORE;;IGNORE;IGNORE +- IGNORE;;IGNORE;IGNORE +- IGNORE;;IGNORE;IGNORE +- IGNORE;;IGNORE;IGNORE ++ ;IGNORE;IGNORE;IGNORE + +-reorder-end ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ "";"";"";IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++order_end + + END LC_COLLATE + --- eglibc-2.13.orig/debian/patches/localedata/submitted-translit-colon.diff +++ eglibc-2.13/debian/patches/localedata/submitted-translit-colon.diff @@ -0,0 +1,30 @@ +2010-06-13 Aurelien Jarno + + * locale/C-translit.h.in: Add entry for U20A1. + +--- + locale/C-translit.h.in | 1 + + localedata/locales/translit_neutral | 2 ++ + 2 files changed, 3 insertions(+) + +--- a/locale/C-translit.h.in ++++ b/locale/C-translit.h.in +@@ -103,6 +103,7 @@ + "\x2061" "" /* FUNCTION APPLICATION */ + "\x2062" "" /* INVISIBLE TIMES */ + "\x2063" "" /* INVISIBLE SEPARATOR */ ++"\x20a1" "CRC" /* COLON SIGN */ + "\x20a8" "Rs" /* RUPEE SIGN */ + "\x20ac" "EUR" /* EURO SIGN */ + "\x2100" "a/c" /* ACCOUNT OF */ +--- a/localedata/locales/translit_neutral ++++ b/localedata/locales/translit_neutral +@@ -128,6 +128,8 @@ + "" + % DONG SIGN + "" ++% COLON SIGN ++ "" + % EURO SIGN + "" + % TRADE MARK SIGN --- eglibc-2.13.orig/debian/patches/localedata/locale-et_EE.diff +++ eglibc-2.13/debian/patches/localedata/locale-et_EE.diff @@ -0,0 +1,21 @@ +2011-01-12 Aurelien Jarno + + * locales/et_EE: Change currency to euro. + +--- + localedata/locales/et_EE | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/localedata/locales/et_EE ++++ b/localedata/locales/et_EE +@@ -109,8 +109,8 @@ + END LC_CTYPE + + LC_MONETARY +-int_curr_symbol "" +-currency_symbol "" ++int_curr_symbol "" ++currency_symbol "" + mon_decimal_point "" + mon_thousands_sep "" + mon_grouping 3;3 --- eglibc-2.13.orig/debian/patches/localedata/tailor-iso14651_t1.diff +++ eglibc-2.13/debian/patches/localedata/tailor-iso14651_t1.diff @@ -0,0 +1,13183 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Rewrite collation rules to include iso14651_t1 +# DP: es_ES: BZ664, by Pablo Saratxaga +# DP: da_DK fi_FI nb_NO: BZ672, by Denis Barbier +# DP: ar_SA cs_CZ et_EE hr_HR lt_LT pl_PL sl_SI tr_TR: not +# DP: submitted yet. +# DP: Related bugs: BZ664 BZ672 +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier, Pablo Saratxaga +# DP: Upstream status: BZ664 BZ672 +# DP: Date: 2006-01-18 + +2008-08-08 Aurelien Jarno + + Loosy update for glibc 2.8. + +2007-05-25 Pierre Habouzit + + Loosy update for glibc 2.6. + +2005-01-16 Denis Barbier + + [BZ #672] + Replace current collation rules by including iso14651_t1 and adding + extra rules if needed. There should be no noticeable changes in + sorted text. only ligatures and ignoreable characters have modified + weights. + * locales/da_DK: Likewise. + * locales/fi_FI: Likewise. + * locales/nb_NO: Likewise. + +--- + localedata/locales/ar_SA | 219 ---- + localedata/locales/da_DK | 27 + localedata/locales/es_ES | 12 + localedata/locales/et_EE | 2099 --------------------------------------------- + localedata/locales/fi_FI | 45 + localedata/locales/hr_HR | 2158 +---------------------------------------------- + localedata/locales/lt_LT | 2064 -------------------------------------------- + localedata/locales/pl_PL | 2139 +--------------------------------------------- + localedata/locales/sl_SI | 2076 --------------------------------------------- + localedata/locales/tr_TR | 2120 +--------------------------------------------- + 10 files changed, 346 insertions(+), 12613 deletions(-) + +--- a/localedata/locales/da_DK ++++ b/localedata/locales/da_DK +@@ -81,34 +81,37 @@ + % and are treated as in Danish + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE + ;;;IGNORE + + % is a separate letter in Danish + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + % is a separate letter in Danish + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + % is a separate letter in Danish + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE + ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + ;;;IGNORE + +@@ -116,6 +119,7 @@ + % removed from latest iso14651 tables. + reorder-after + "";"";"";IGNORE ++reorder-after + "";"";"";IGNORE + + reorder-after +@@ -123,8 +127,9 @@ + + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE + ;;;IGNORE + + reorder-end +--- a/localedata/locales/es_ES ++++ b/localedata/locales/es_ES +@@ -50,6 +50,18 @@ + LC_COLLATE + % Copy the template from ISO/IEC 14651 + copy "iso14651_t1" ++ ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-end + END LC_COLLATE + + LC_CTYPE +--- a/localedata/locales/fi_FI ++++ b/localedata/locales/fi_FI +@@ -63,60 +63,65 @@ + + + +-reorder-after ++reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + ;;;IGNORE + +-reorder-after ++reorder-after + ;;; +- ;;; + ;;; +- ;;; + ;;; +- ;;; + ;;; +- ;;; + ;;; +- ;;; + ;;; +- ;;; + ;;; +- ;;; + ;;; ++reorder-after ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; ++ ;;; + ;;; + + reorder-after + ;;;IGNORE ++reorder-after + ;;;IGNORE + + % Present in iso14651_t1, but these definitions seem to have been + % removed from latest iso14651 tables. +-reorder-after ++reorder-after + "";"";"";IGNORE ++reorder-after + "";"";"";IGNORE + + reorder-after + ;;;IGNORE +- ;;;IGNORE + ;;;IGNORE ++reorder-after ++ ;;;IGNORE + ;;;IGNORE + + reorder-end +--- a/localedata/locales/ar_SA ++++ b/localedata/locales/ar_SA +@@ -43,223 +43,8 @@ + % Set up the LC_COLLATE category + + LC_COLLATE +- +- +-order_start forward; forward +- +- +- +- +- +- +- +- +- +- +- +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- ; +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +- IGNORE +-order_end +- +- ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" + END LC_COLLATE + + +--- a/localedata/locales/et_EE ++++ b/localedata/locales/et_EE +@@ -55,2067 +55,48 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- ;; +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +--- a/localedata/locales/hr_HR ++++ b/localedata/locales/hr_HR +@@ -48,10 +48,25 @@ + END LC_IDENTIFICATION + + LC_COLLATE +-collating-element from "" +-collating-element from "" +-collating-element from "" +-collating-element from "" ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-element from "" ++collating-element from "" ++collating-element from "" ++collating-element from "" + collating-element from "" + collating-element from "" + collating-element from "" +@@ -61,2078 +76,71 @@ + collating-element from "" + collating-element from "" + +-% Base collation scheme: 1994-03-22 +- +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-order_end ++reorder-end + + END LC_COLLATE + +--- a/localedata/locales/lt_LT ++++ b/localedata/locales/lt_LT +@@ -58,2067 +58,13 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++reorder-after ++ + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +--- a/localedata/locales/pl_PL ++++ b/localedata/locales/pl_PL +@@ -48,2067 +48,88 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ;IGNORE;; ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- ;IGNORE;; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +--- a/localedata/locales/sl_SI ++++ b/localedata/locales/sl_SI +@@ -48,2067 +48,37 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++copy "iso14651_t1" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script ++reorder-after ++ + +-% collating symbols ++reorder-after ++ + +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. ++reorder-after ++ + +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +--- a/localedata/locales/tr_TR ++++ b/localedata/locales/tr_TR +@@ -61,2067 +61,67 @@ + END LC_IDENTIFICATION + + LC_COLLATE ++define UPPERCASE_FIRST ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++ ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-% Base collation scheme: 1994-03-22 +- +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + --- eglibc-2.13.orig/debian/patches/localedata/new-valencian-locale.diff +++ eglibc-2.13/debian/patches/localedata/new-valencian-locale.diff @@ -0,0 +1,117 @@ +Submitted upstream: BZ2522 + +--- + localedata/SUPPORTED | 2 + localedata/locales/ca_ES@valencia | 96 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 98 insertions(+) + +--- /dev/null ++++ b/localedata/locales/ca_ES@valencia +@@ -0,0 +1,96 @@ ++comment_char % ++escape_char / ++% ++% Valencian (southern Catalan) locale for Spain with Euro ++% ++% Note that this locale is almost the same as ca_ES@euro. The point of having ++% a separate locale is only for PO translations, which have a lot of social ++% support and are very appreciated by the Valencian-speaking community. ++% ++% Contact: Jordi Mallach ++% Email: jordi@gnu.org ++% Tel: ++% Fax: ++% Language: ca ++% Territory: ES ++% Option: euro ++% Revision: 1.0 ++% Date: 2006-04-06 ++% Application: general ++% Users: general ++% Repertoiremap: mnemonic,ds ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Valencian (southern Catalan) locale for Spain with Euro" ++source "" ++address "" ++contact "Jordi Mallach" ++email "jordi@gnu.org" ++tel "" ++fax "" ++language "Catalan" ++territory "Spain" ++revision "1.0" ++date "2006-04-06" ++% ++category "ca_ES@valencia:2006";LC_IDENTIFICATION ++category "ca_ES@valencia:2006";LC_CTYPE ++category "ca_ES@valencia:2006";LC_COLLATE ++category "ca_ES@valencia:2006";LC_MONETARY ++category "ca_ES@valencia:2006";LC_NUMERIC ++category "ca_ES@valencia:2006";LC_TIME ++category "ca_ES@valencia:2006";LC_MESSAGES ++category "ca_ES@valencia:2006";LC_PAPER ++category "ca_ES@valencia:2006";LC_NAME ++category "ca_ES@valencia:2006";LC_ADDRESS ++category "ca_ES@valencia:2006";LC_TELEPHONE ++category "ca_ES@valencia:2006";LC_MEASUREMENT ++ ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_COLLATE ++copy "ca_ES" ++END LC_COLLATE ++ ++LC_MONETARY ++copy "ca_ES" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "ca_ES" ++END LC_NUMERIC ++ ++LC_TIME ++copy "ca_ES" ++END LC_TIME ++ ++LC_MESSAGES ++copy "ca_ES" ++END LC_MESSAGES ++ ++LC_PAPER ++copy "ca_ES" ++END LC_PAPER ++ ++LC_NAME ++copy "ca_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "ca_ES" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++copy "ca_ES" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "ca_ES" ++END LC_MEASUREMENT +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -72,6 +72,8 @@ + ca_ES.UTF-8/UTF-8 \ + ca_ES/ISO-8859-1 \ + ca_ES@euro/ISO-8859-15 \ ++ca_ES.UTF-8@valencia/UTF-8 \ ++ca_ES@valencia/ISO-8859-15 \ + ca_FR.UTF-8/UTF-8 \ + ca_FR/ISO-8859-15 \ + ca_IT.UTF-8/UTF-8 \ --- eglibc-2.13.orig/debian/patches/localedata/locale-se_NO.diff +++ eglibc-2.13/debian/patches/localedata/locale-se_NO.diff @@ -0,0 +1,34 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: Fix se_NO locale +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: Not submitted yet +# DP: Date: 2006-06-02 + +--- + localedata/locales/se_NO | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/localedata/locales/se_NO ++++ b/localedata/locales/se_NO +@@ -137,7 +137,7 @@ + ;;;IGNORE % ezh caron + + reorder-after +- ;;;IGNORE % EZH ++ ;;;IGNORE % EZH + ;;;IGNORE % EZH caron + + reorder-after +@@ -164,9 +164,10 @@ + reorder-after + ;;;IGNORE % Kcaron + +-reorder-after ++reorder-after + ;"";"";IGNORE % ß + ;;;IGNORE % 288 ++reorder-after + ;;;IGNORE % 405 + + --- eglibc-2.13.orig/debian/patches/localedata/locale-hsb_DE.diff +++ eglibc-2.13/debian/patches/localedata/locale-hsb_DE.diff @@ -0,0 +1,2215 @@ +--- + localedata/locales/hsb_DE | 2190 ++-------------------------------------------- + 1 file changed, 119 insertions(+), 2071 deletions(-) + +--- a/localedata/locales/hsb_DE ++++ b/localedata/locales/hsb_DE +@@ -34,7 +34,14 @@ + + END LC_IDENTIFICATION + ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ + LC_COLLATE ++% Copy the template from ISO/IEC 14651 ++copy "iso14651_t1" ++ + collating-element from "" + collating-element from "" + collating-element from "" +@@ -44,2081 +51,122 @@ + collating-element from "" + collating-element from "" + +-% Base collation scheme: 1994-03-22 ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++collating-symbol ++ ++collating-symbol ++collating-symbol ++ ++reorder-after ++ ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++% Is oacute really used? ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE ++ ++reorder-after ++ ;;;IGNORE ++reorder-after ++ ;;;IGNORE + +-% Ordering algorithm: +-% 1. Spaces and hyphen (but not soft +-% hyphen) before punctuation +-% characters, punctuation characters +-% before numbers, +-% numbers before letters. +-% 2. Letters with diacritical marks are +-% members of equivalence classes +-% 3. A distinction is made with regards +-% to case as noted below. +-% 4. Special characters are ignored +-% when comparing letters, but then +-% they are considered +-% 5. The alphabets are sorted in order +-% of first appearance in ISO 10646: +-% Latin, Greek, Cyrillic, etc. +-% +-% According to Greek specifications, +-% the steps 2. and 3. above are reversed +-% for the Greek script +- +-% collating symbols +- +-% The collating symbol naming is +-% mostly taken from ISO 10646-1, +-% for example the case and accent +-% names are from this standard. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% and +-% are for cases like Danish +-% and Spanish being treated +-% as one letter. +- +-% The ...... collating +-% symbols have defined weights as +-% the last character in a group of +-% Latin letters. They are used +-% to specify deltas by locales using +-% a locale as the default ordering +-% and by "replace-after" statements +-% specifying the changed placement +-% in an ordering of a character. +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +-collating-symbol +- +-% letter;accent;case;specials +- +-order_start forward;backward/ +- ;forward;position +- +-% or letters first: +- +- +- +- +- +- +-% Accents: +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ;;;IGNORE +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-<"=> IGNORE;IGNORE;IGNORE;<"=> +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +-UNDEFINED IGNORE;IGNORE;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;;;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- ;IGNORE;IGNORE;IGNORE +- +-% Arabic collating +- +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- IGNORE;IGNORE;IGNORE; +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- IGNORE;IGNORE;;IGNORE +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- "";"";"";IGNORE +- +-% katakana/hiragana sorting +-% base is katakana, as this is present in most charsets +-% normal before voiced before semi-voiced +-% small vocals before normal vocals +-% katakana before hiragana +- +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- ;;IGNORE;IGNORE +- +-order_end ++reorder-end + + END LC_COLLATE + +-LC_CTYPE +-copy "i18n" +-END LC_CTYPE +- + LC_MESSAGES + yesexpr "" + noexpr "" --- eglibc-2.13.orig/debian/patches/localedata/locale-eu_FR.diff +++ eglibc-2.13/debian/patches/localedata/locale-eu_FR.diff @@ -0,0 +1,198 @@ +# DP: Description: #257840: locales: Please add the eu_FR locale +# DP: Related bugs: #257840 +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Christian Perrier +# DP: Upstream status: Not submitted +# DP: Status Details: sending upstream +# DP: Date: 2004-07-31 + +--- + localedata/SUPPORTED | 3 + + localedata/locales/eu_FR | 83 ++++++++++++++++++++++++++++++++++++++++++ + localedata/locales/eu_FR@euro | 83 ++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 169 insertions(+) + +--- /dev/null ++++ b/localedata/locales/eu_FR +@@ -0,0 +1,83 @@ ++comment_char % ++escape_char / ++% ++% Basque Language Locale for France ++% Language: eu ++% Territory: FR ++% Revision: 1.0 ++% Date: 2004-06-24 ++% Users: general ++% Charset: ISO-8859-1 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Basque locale for France" ++source "Christian Perrier and the Debian Project" ++address "" ++contact "Christian Perrier" ++email "bubulle@debian.org" ++tel "" ++fax "" ++language "Basque" ++territory "France" ++revision "1.0" ++date "2004-06-24" ++% ++category "eu_FR:2000";LC_IDENTIFICATION ++category "eu_FR:2000";LC_CTYPE ++category "eu_FR:2000";LC_COLLATE ++category "eu_FR:2000";LC_TIME ++category "eu_FR:2000";LC_NUMERIC ++category "eu_FR:2000";LC_MONETARY ++category "eu_FR:2000";LC_MESSAGES ++category "eu_FR:2000";LC_PAPER ++category "eu_FR:2000";LC_NAME ++category "eu_FR:2000";LC_ADDRESS ++category "eu_FR:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "eu_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "fr_FR" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "fr_FR" ++END LC_NUMERIC ++ ++LC_TIME ++copy "eu_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "fr_FR" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "fr_FR" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "fr_FR" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "eu_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "fr_FR" ++END LC_ADDRESS +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -186,6 +186,9 @@ + eu_ES.UTF-8/UTF-8 \ + eu_ES/ISO-8859-1 \ + eu_ES@euro/ISO-8859-15 \ ++eu_FR.UTF-8/UTF-8 \ ++eu_FR/ISO-8859-1 \ ++eu_FR@euro/ISO-8859-15 \ + fa_IR/UTF-8 \ + fi_FI.UTF-8/UTF-8 \ + fi_FI/ISO-8859-1 \ +--- /dev/null ++++ b/localedata/locales/eu_FR@euro +@@ -0,0 +1,83 @@ ++comment_char % ++escape_char / ++% ++% Basque Language Locale for France ++% Language: eu ++% Territory: FR ++% Revision: 1.0 ++% Date: 2004-06-24 ++% Users: general ++% Charset: ISO-8859-15 ++% Distribution and use is free, also ++% for commercial purposes. ++ ++LC_IDENTIFICATION ++title "Basque locale for France" ++source "Christian Perrier and the Debian Project" ++address "" ++contact "Christian Perrier" ++email "bubulle@debian.org" ++tel "" ++fax "" ++language "Basque" ++territory "France" ++revision "1.0" ++date "2004-06-24" ++% ++category "eu_FR:2000";LC_IDENTIFICATION ++category "eu_FR:2000";LC_CTYPE ++category "eu_FR:2000";LC_COLLATE ++category "eu_FR:2000";LC_TIME ++category "eu_FR:2000";LC_NUMERIC ++category "eu_FR:2000";LC_MONETARY ++category "eu_FR:2000";LC_MESSAGES ++category "eu_FR:2000";LC_PAPER ++category "eu_FR:2000";LC_NAME ++category "eu_FR:2000";LC_ADDRESS ++category "eu_FR:2000";LC_TELEPHONE ++ ++END LC_IDENTIFICATION ++ ++LC_COLLATE ++copy "iso14651_t1" ++END LC_COLLATE ++ ++LC_CTYPE ++copy "i18n" ++END LC_CTYPE ++ ++LC_MESSAGES ++copy "eu_ES" ++END LC_MESSAGES ++ ++LC_MONETARY ++copy "fr_FR" ++END LC_MONETARY ++ ++LC_NUMERIC ++copy "fr_FR" ++END LC_NUMERIC ++ ++LC_TIME ++copy "eu_ES" ++END LC_TIME ++ ++LC_PAPER ++copy "fr_FR" ++END LC_PAPER ++ ++LC_TELEPHONE ++copy "fr_FR" ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++copy "fr_FR" ++END LC_MEASUREMENT ++ ++LC_NAME ++copy "eu_ES" ++END LC_NAME ++ ++LC_ADDRESS ++copy "fr_FR" ++END LC_ADDRESS --- eglibc-2.13.orig/debian/patches/locale/check-unknown-symbols.diff +++ eglibc-2.13/debian/patches/locale/check-unknown-symbols.diff @@ -0,0 +1,37 @@ +Check for unknown symbols in collation rules. This is useful to detect +broken locales since unknown symbols are always wrong. + +This request has not been submitted upstream yet. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +--- + locale/programs/ld-collate.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/locale/programs/ld-collate.c ++++ b/locale/programs/ld-collate.c +@@ -3501,8 +3501,20 @@ + } + else if (arg != NULL) + { ++ void *ptr = NULL; + symstr = arg->val.str.startmb; + symlen = arg->val.str.lenmb; ++ if (state != 5 ++ && find_entry (&charmap->char_table, symstr, symlen, &ptr) != 0 ++ && (repertoire == NULL || ++ find_entry (&repertoire->char_table, symstr, symlen, &ptr) != 0) ++ && find_entry (&collate->elem_table, symstr, symlen, &ptr) != 0 ++ && find_entry (&collate->sym_table, symstr, symlen, &ptr) != 0) ++ { ++ if (verbose) ++ lr_error (ldfile, _("%s: symbol `%.*s' not known"), ++ "LC_COLLATE", (int) symlen, symstr); ++ } + } + else + { --- eglibc-2.13.orig/debian/patches/locale/LC_COLLATE-keywords-ordering.diff +++ eglibc-2.13/debian/patches/locale/LC_COLLATE-keywords-ordering.diff @@ -0,0 +1,108 @@ +Be less strict about keywords ordering in LC_COLLATE section, to +ease definition of new scripts. + +Submitted upstream: BZ690 + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ690 +# DP: Date: 2006-01-08 + +--- + locale/programs/ld-collate.c | 32 ++++++++++++++++++-------------- + 1 file changed, 18 insertions(+), 14 deletions(-) + +--- a/locale/programs/ld-collate.c ++++ b/locale/programs/ld-collate.c +@@ -2752,14 +2752,23 @@ + switch (nowtok) + { + case tok_copy: +- /* Allow copying other locales. */ ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ + now = lr_token (ldfile, charmap, result, NULL, verbose); + if (now->tok != tok_string) + goto err_label; + +- if (! ignore_content) +- load_locale (LC_COLLATE, now->val.str.startmb, repertoire_name, +- charmap, result); ++ if (state == 1 || state == 3 || state == 5) ++ goto err_label; ++ ++ load_locale (LC_COLLATE, now->val.str.startmb, repertoire_name, ++ charmap, result); + + lr_ignore_rest (ldfile, 1); + break; +@@ -2773,9 +2782,6 @@ + break; + } + +- if (state != 0) +- goto err_label; +- + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_number) + goto err_label; +@@ -2796,7 +2802,7 @@ + break; + } + +- if (state != 0) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -2843,7 +2849,7 @@ + break; + } + +- if (state != 0 && state != 2) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -2909,7 +2915,7 @@ + break; + } + +- if (state != 0 && state != 2) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -3055,7 +3061,7 @@ + break; + } + +- if (state != 0) ++ if (state == 1 || state == 3 || state == 5) + goto err_label; + + arg = lr_token (ldfile, charmap, result, repertoire, verbose); +@@ -3176,7 +3182,7 @@ + break; + } + +- if (state != 0 && state != 1 && state != 2) ++ if (state == 3 || state == 5) + goto err_label; + state = 1; + +@@ -3487,8 +3493,6 @@ + %s: missing `reorder-end' keyword"), "LC_COLLATE")); + state = 4; + } +- else if (state != 2 && state != 4) +- goto err_label; + state = 5; + + /* Get the name of the sections we are adding after. */ --- eglibc-2.13.orig/debian/patches/locale/LC_IDENTIFICATION-optional-fields.diff +++ eglibc-2.13/debian/patches/locale/LC_IDENTIFICATION-optional-fields.diff @@ -0,0 +1,37 @@ +In LC_IDENTIFICATION, audience, application and abbreviation keywords +are optional, thus do not report an error if they are not defined. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +--- + locale/programs/ld-identification.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/locale/programs/ld-identification.c ++++ b/locale/programs/ld-identification.c +@@ -147,6 +147,9 @@ + "LC_IDENTIFICATION", #cat)); \ + identification->cat = ""; \ + } ++#define TEST_ELEM_OPT(cat) \ ++ if (identification->cat == NULL) \ ++ identification->cat = ""; \ + + TEST_ELEM (title); + TEST_ELEM (source); +@@ -157,9 +160,9 @@ + TEST_ELEM (fax); + TEST_ELEM (language); + TEST_ELEM (territory); +- TEST_ELEM (audience); +- TEST_ELEM (application); +- TEST_ELEM (abbreviation); ++ TEST_ELEM_OPT (audience); ++ TEST_ELEM_OPT (application); ++ TEST_ELEM_OPT (abbreviation); + TEST_ELEM (revision); + TEST_ELEM (date); + --- eglibc-2.13.orig/debian/patches/locale/preprocessor-collate.diff +++ eglibc-2.13/debian/patches/locale/preprocessor-collate.diff @@ -0,0 +1,342 @@ +Allow preprocessor-like directives. These keywords were already +defined in locale/programs/locfile-kw.h, an implementation for +'define', 'undef', 'ifdef', 'else' and 'endif' is now provided in +locale/programs/ld-collate.c. For the moment, 'ifndef' and 'elif' +are not implemented because they do not appear in locfile-kw.h. +This patch is harmless, it only adds new keywords. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: BZ686 +# DP: Date: 2006-01-08 + +--- + locale/programs/ld-collate.c | 275 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 275 insertions(+) + +--- a/locale/programs/ld-collate.c ++++ b/locale/programs/ld-collate.c +@@ -164,6 +164,24 @@ + size_t line; + }; + ++/* Data type for toggles. */ ++struct toggle_list_t; ++ ++struct toggle_list_t ++{ ++ const char *name; ++ ++ /* Predecessor in the list. */ ++ struct toggle_list_t *last; ++ ++ /* This flag is set when a keyword is undefined. */ ++ int is_undefined; ++ ++ /* Where does the branch come from. */ ++ const char *file; ++ size_t line; ++}; ++ + /* Sparse table of struct element_t *. */ + #define TABLE wchead_table + #define ELEMENT struct element_t * +@@ -219,6 +237,9 @@ + /* This value is used when handling ellipsis. */ + struct element_t ellipsis_weight; + ++ /* This is a stack of . */ ++ struct toggle_list_t *flow_control; ++ + /* Known collating elements. */ + hash_table elem_table; + +@@ -1467,6 +1488,56 @@ + } + + ++static struct token * ++flow_skip (struct linereader *ldfile, const struct charmap_t *charmap, ++ struct locale_collate_t *collate) ++{ ++ int level = 0; ++ struct token *now; ++ enum token_t nowtok; ++ while (1) ++ { ++ lr_ignore_rest (ldfile, 0); ++ now = lr_token (ldfile, charmap, NULL, NULL, 0); ++ nowtok = now->tok; ++ if (nowtok == tok_eof) ++ break; ++ else if (nowtok == tok_ifdef || nowtok == tok_ifndef) ++ ++level ; ++ else if (nowtok == tok_else) ++ { ++ if (strcmp (collate->flow_control->name, "else") == 0) ++ lr_error (ldfile, ++ _("%s: `else' statement at `%s:%Zu' cannot be followed by another `else' statement"), ++ "LC_COLLATE", collate->flow_control->name, collate->flow_control->line); ++ if (level == 0) ++ { ++ collate->flow_control->name = "else"; ++ collate->flow_control->file = ldfile->fname; ++ collate->flow_control->line = ldfile->lineno; ++ break; ++ } ++ } ++ else if (nowtok == tok_endif) ++ { ++ if (level == 0) ++ { ++ collate->flow_control = collate->flow_control->last; ++ break; ++ } ++ --level ; ++ } ++ } ++ if (nowtok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control beginning at %s:%Zu"), ++ "LC_COLLATE", collate->flow_control->name, ++ collate->flow_control->file, ++ collate->flow_control->line)); ++ return now; ++} ++ ++ + static void + collate_startup (struct linereader *ldfile, struct localedef_t *locale, + struct localedef_t *copy_locale, int ignore_content) +@@ -2514,6 +2585,8 @@ + */ + int state = 0; + ++ static struct toggle_list_t *defined_keywords = NULL; ++ + /* Get the repertoire we have to use. */ + if (repertoire_name != NULL) + repertoire = repertoire_read (repertoire_name); +@@ -2528,6 +2601,82 @@ + } + while (nowtok == tok_eol); + ++ while (nowtok == tok_define || nowtok == tok_undef) ++ { ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ now = lr_token (ldfile, charmap, result, NULL, verbose); ++ nowtok = now->tok; ++ continue; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ ++ if (nowtok == tok_define) ++ { ++ struct toggle_list_t *runp = defined_keywords; ++ char *name; ++ ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); ++ else ++ runp = runp->last; ++ ++ if (runp != NULL && runp->is_undefined == 0) ++ { ++ lr_ignore_rest (ldfile, 0); ++ SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); ++ } ++ ++ if (runp == NULL) ++ { ++ runp = (struct toggle_list_t *) xcalloc (1, sizeof (*runp)); ++ runp->last = defined_keywords; ++ defined_keywords = runp; ++ } ++ else ++ { ++ free ((char *) runp->name); ++ runp->is_undefined = 0; ++ } ++ ++ name = (char *) xmalloc (arg->val.str.lenmb + 1); ++ memcpy (name, arg->val.str.startmb, arg->val.str.lenmb); ++ name[arg->val.str.lenmb] = '\0'; ++ runp->name = name; ++ } ++ else ++ { ++ struct toggle_list_t *runp = defined_keywords; ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ { ++ runp->is_undefined = 1; ++ SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); ++ } ++ else ++ runp = runp->last; ++ } ++ ++ lr_ignore_rest (ldfile, 1); ++ do ++ { ++ now = lr_token (ldfile, charmap, result, NULL, verbose); ++ nowtok = now->tok; ++ } ++ while (nowtok == tok_eol); ++ } ++ + if (nowtok == tok_copy) + { + now = lr_token (ldfile, charmap, result, NULL, verbose); +@@ -3682,6 +3831,125 @@ + repertoire, result, nowtok); + break; + ++ case tok_ifdef: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ else ++ { ++ struct toggle_list_t *runp = defined_keywords; ++ struct toggle_list_t *flow = (struct toggle_list_t *) xcalloc (1, sizeof (*runp)); ++ flow->name = "ifdef"; ++ flow->file = ldfile->fname; ++ flow->line = ldfile->lineno; ++ flow->last = collate->flow_control; ++ collate->flow_control = flow; ++ ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ break; ++ else ++ runp = runp->last; ++ ++ if (runp == NULL) ++ { ++ now = flow_skip(ldfile, charmap, collate); ++ if (now->tok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control"), "LC_COLLATE", collate->flow_control->name)); ++ } ++ } ++ lr_ignore_rest (ldfile, 1); ++ break; ++ ++ case tok_ifndef: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ arg = lr_token (ldfile, charmap, result, NULL, verbose); ++ if (arg->tok != tok_ident) ++ goto err_label; ++ else ++ { ++ struct toggle_list_t *runp = defined_keywords; ++ struct toggle_list_t *flow = (struct toggle_list_t *) xcalloc (1, sizeof (*runp)); ++ flow->name = "ifndef"; ++ flow->file = ldfile->fname; ++ flow->line = ldfile->lineno; ++ flow->last = collate->flow_control; ++ collate->flow_control = flow; ++ ++ while (runp != NULL) ++ if (strncmp (runp->name, arg->val.str.startmb, ++ arg->val.str.lenmb) == 0 ++ && runp->name[arg->val.str.lenmb] == '\0') ++ break; ++ else ++ runp = runp->last; ++ ++ if (runp != NULL) ++ { ++ now = flow_skip(ldfile, charmap, collate); ++ if (now->tok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control"), "LC_COLLATE", collate->flow_control->name)); ++ } ++ } ++ lr_ignore_rest (ldfile, 1); ++ break; ++ ++ case tok_else: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ if (strcmp (collate->flow_control->name, "else") == 0) ++ lr_error (ldfile, ++ _("%s: `else' statement at `%s:%Zu' cannot be followed by another `else' statement"), ++ "LC_COLLATE", collate->flow_control->name, collate->flow_control->line); ++ collate->flow_control->name = "else"; ++ collate->flow_control->file = ldfile->fname; ++ collate->flow_control->line = ldfile->lineno; ++ now = flow_skip(ldfile, charmap, collate); ++ if (now->tok == tok_eof) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control"), "LC_COLLATE", collate->flow_control->name)); ++ break; ++ ++ case tok_endif: ++ /* Ignore the rest of the line if we don't need the input of ++ this line. */ ++ if (ignore_content) ++ { ++ lr_ignore_rest (ldfile, 0); ++ break; ++ } ++ ++ if (collate->flow_control == NULL) ++ goto err_label; ++ else ++ collate->flow_control = collate->flow_control->last; ++ break; ++ + case tok_end: + /* Next we assume `LC_COLLATE'. */ + if (!ignore_content) +@@ -3711,6 +3979,13 @@ + else if (state == 5) + WITH_CUR_LOCALE (error (0, 0, _("\ + %s: missing `reorder-sections-end' keyword"), "LC_COLLATE")); ++ if (collate->flow_control != NULL ++ && strcmp(collate->flow_control->file, ldfile->fname) == 0) ++ WITH_CUR_LOCALE (error (0, 0, _("\ ++%s: unterminated `%s' flow control beginning at %s:%Zu"), ++ "LC_COLLATE", collate->flow_control->name, ++ collate->flow_control->file, ++ collate->flow_control->line)); + } + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok == tok_eof) --- eglibc-2.13.orig/debian/patches/locale/preprocessor-collate-uli-sucks.diff +++ eglibc-2.13/debian/patches/locale/preprocessor-collate-uli-sucks.diff @@ -0,0 +1,334 @@ +--- + locale/programs/ld-collate.c | 265 ------------------------------------------- + 1 file changed, 265 deletions(-) + +--- a/locale/programs/ld-collate.c ++++ b/locale/programs/ld-collate.c +@@ -185,14 +185,6 @@ + #include "3level.h" + + +-/* Simple name list for the preprocessor. */ +-struct name_list +-{ +- struct name_list *next; +- char str[0]; +-}; +- +- + /* The real definition of the struct for the LC_COLLATE locale. */ + struct locale_collate_t + { +@@ -254,15 +246,6 @@ + /* The arrays with the collation sequence order. */ + unsigned char mbseqorder[256]; + struct collseq_table wcseqorder; +- +- /* State of the preprocessor. */ +- enum +- { +- else_none = 0, +- else_ignore, +- else_seen +- } +- else_action; + }; + + +@@ -270,9 +253,6 @@ + LC_COLLATE category descriptions in all files. */ + static uint32_t nrules; + +-/* List of defined preprocessor symbols. */ +-static struct name_list *defined; +- + + /* We need UTF-8 encoding of numbers. */ + static inline int +@@ -2511,46 +2491,6 @@ + } + + +-static enum token_t +-skip_to (struct linereader *ldfile, struct locale_collate_t *collate, +- const struct charmap_t *charmap, int to_endif) +-{ +- while (1) +- { +- struct token *now = lr_token (ldfile, charmap, NULL, NULL, 0); +- enum token_t nowtok = now->tok; +- +- if (nowtok == tok_eof || nowtok == tok_end) +- return nowtok; +- +- if (nowtok == tok_ifdef || nowtok == tok_ifndef) +- { +- lr_error (ldfile, _("%s: nested conditionals not supported"), +- "LC_COLLATE"); +- nowtok = skip_to (ldfile, collate, charmap, tok_endif); +- if (nowtok == tok_eof || nowtok == tok_end) +- return nowtok; +- } +- else if (nowtok == tok_endif || (!to_endif && nowtok == tok_else)) +- { +- lr_ignore_rest (ldfile, 1); +- return nowtok; +- } +- else if (!to_endif && (nowtok == tok_elifdef || nowtok == tok_elifndef)) +- { +- /* Do not read the rest of the line. */ +- return nowtok; +- } +- else if (nowtok == tok_else) +- { +- lr_error (ldfile, _("%s: more then one 'else'"), "LC_COLLATE"); +- } +- +- lr_ignore_rest (ldfile, 0); +- } +-} +- +- + void + collate_read (struct linereader *ldfile, struct localedef_t *result, + const struct charmap_t *charmap, const char *repertoire_name, +@@ -2581,8 +2521,6 @@ + /* The rest of the line containing `LC_COLLATE' must be free. */ + lr_ignore_rest (ldfile, 1); + +- while (1) +- { + do + { + now = lr_token (ldfile, charmap, result, NULL, verbose); +@@ -2590,31 +2528,6 @@ + } + while (nowtok == tok_eol); + +- if (nowtok != tok_define) +- break; +- +- if (ignore_content) +- lr_ignore_rest (ldfile, 0); +- else +- { +- arg = lr_token (ldfile, charmap, result, NULL, verbose); +- if (arg->tok != tok_ident) +- SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); +- else +- { +- /* Simply add the new symbol. */ +- struct name_list *newsym = xmalloc (sizeof (*newsym) +- + arg->val.str.lenmb + 1); +- memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb); +- newsym->str[arg->val.str.lenmb] = '\0'; +- newsym->next = defined; +- defined = newsym; +- +- lr_ignore_rest (ldfile, 1); +- } +- } +- } +- + if (nowtok == tok_copy) + { + now = lr_token (ldfile, charmap, result, NULL, verbose); +@@ -3770,7 +3683,6 @@ + break; + + case tok_end: +- seen_end: + /* Next we assume `LC_COLLATE'. */ + if (!ignore_content) + { +@@ -3811,182 +3723,6 @@ + lr_ignore_rest (ldfile, arg->tok == tok_lc_collate); + return; + +- case tok_define: +- if (ignore_content) +- { +- lr_ignore_rest (ldfile, 0); +- break; +- } +- +- arg = lr_token (ldfile, charmap, result, NULL, verbose); +- if (arg->tok != tok_ident) +- goto err_label; +- +- /* Simply add the new symbol. */ +- struct name_list *newsym = xmalloc (sizeof (*newsym) +- + arg->val.str.lenmb + 1); +- memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb); +- newsym->str[arg->val.str.lenmb] = '\0'; +- newsym->next = defined; +- defined = newsym; +- +- lr_ignore_rest (ldfile, 1); +- break; +- +- case tok_undef: +- if (ignore_content) +- { +- lr_ignore_rest (ldfile, 0); +- break; +- } +- +- arg = lr_token (ldfile, charmap, result, NULL, verbose); +- if (arg->tok != tok_ident) +- goto err_label; +- +- /* Remove _all_ occurrences of the symbol from the list. */ +- struct name_list *prevdef = NULL; +- struct name_list *curdef = defined; +- while (curdef != NULL) +- if (strncmp (arg->val.str.startmb, curdef->str, +- arg->val.str.lenmb) == 0 +- && curdef->str[arg->val.str.lenmb] == '\0') +- { +- if (prevdef == NULL) +- defined = curdef->next; +- else +- prevdef->next = curdef->next; +- +- struct name_list *olddef = curdef; +- curdef = curdef->next; +- +- free (olddef); +- } +- else +- { +- prevdef = curdef; +- curdef = curdef->next; +- } +- +- lr_ignore_rest (ldfile, 1); +- break; +- +- case tok_ifdef: +- case tok_ifndef: +- if (ignore_content) +- { +- lr_ignore_rest (ldfile, 0); +- break; +- } +- +- found_ifdef: +- arg = lr_token (ldfile, charmap, result, NULL, verbose); +- if (arg->tok != tok_ident) +- goto err_label; +- lr_ignore_rest (ldfile, 1); +- +- if (collate->else_action == else_none) +- { +- curdef = defined; +- while (curdef != NULL) +- if (strncmp (arg->val.str.startmb, curdef->str, +- arg->val.str.lenmb) == 0 +- && curdef->str[arg->val.str.lenmb] == '\0') +- break; +- else +- curdef = curdef->next; +- +- if ((nowtok == tok_ifdef && curdef != NULL) +- || (nowtok == tok_ifndef && curdef == NULL)) +- { +- /* We have to use the if-branch. */ +- collate->else_action = else_ignore; +- } +- else +- { +- /* We have to use the else-branch, if there is one. */ +- nowtok = skip_to (ldfile, collate, charmap, 0); +- if (nowtok == tok_else) +- collate->else_action = else_seen; +- else if (nowtok == tok_elifdef) +- { +- nowtok = tok_ifdef; +- goto found_ifdef; +- } +- else if (nowtok == tok_elifndef) +- { +- nowtok = tok_ifndef; +- goto found_ifdef; +- } +- else if (nowtok == tok_eof) +- goto seen_eof; +- else if (nowtok == tok_end) +- goto seen_end; +- } +- } +- else +- { +- /* XXX Should it really become necessary to support nested +- preprocessor handling we will push the state here. */ +- lr_error (ldfile, _("%s: nested conditionals not supported"), +- "LC_COLLATE"); +- nowtok = skip_to (ldfile, collate, charmap, 1); +- if (nowtok == tok_eof) +- goto seen_eof; +- else if (nowtok == tok_end) +- goto seen_end; +- } +- break; +- +- case tok_elifdef: +- case tok_elifndef: +- case tok_else: +- if (ignore_content) +- { +- lr_ignore_rest (ldfile, 0); +- break; +- } +- +- lr_ignore_rest (ldfile, 1); +- +- if (collate->else_action == else_ignore) +- { +- /* Ignore everything until the endif. */ +- nowtok = skip_to (ldfile, collate, charmap, 1); +- if (nowtok == tok_eof) +- goto seen_eof; +- else if (nowtok == tok_end) +- goto seen_end; +- } +- else +- { +- assert (collate->else_action == else_none); +- lr_error (ldfile, _("\ +-%s: '%s' without matching 'ifdef' or 'ifndef'"), "LC_COLLATE", +- nowtok == tok_else ? "else" +- : nowtok == tok_elifdef ? "elifdef" : "elifndef"); +- } +- break; +- +- case tok_endif: +- if (ignore_content) +- { +- lr_ignore_rest (ldfile, 0); +- break; +- } +- +- lr_ignore_rest (ldfile, 1); +- +- if (collate->else_action != else_ignore +- && collate->else_action != else_seen) +- lr_error (ldfile, _("\ +-%s: 'endif' without matching 'ifdef' or 'ifndef'"), "LC_COLLATE"); +- +- /* XXX If we support nested preprocessor directives we pop +- the state here. */ +- collate->else_action = else_none; +- break; +- + default: + err_label: + SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); +@@ -3997,7 +3733,6 @@ + nowtok = now->tok; + } + +- seen_eof: + /* When we come here we reached the end of the file. */ + lr_error (ldfile, _("%s: premature end of file"), "LC_COLLATE"); + } --- eglibc-2.13.orig/debian/patches/locale/locale-print-LANGUAGE.diff +++ eglibc-2.13/debian/patches/locale/locale-print-LANGUAGE.diff @@ -0,0 +1,32 @@ +Comments tell that LANG has to be the first value, and LC_ALL the last +one. Thus LANGUAGE is printed between them. + +# DP: Dpatch author: Denis Barbier +# DP: Patch author: Denis Barbier +# DP: Upstream status: not submitted +# DP: Date: 2006-01-08 + +--- + locale/programs/locale.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/locale/programs/locale.c ++++ b/locale/programs/locale.c +@@ -796,6 +796,7 @@ + { + size_t cat_no; + const char *lcall = getenv ("LC_ALL") ? : ""; ++ const char *language = getenv ("LANGUAGE") ? : ""; + const char *lang = getenv ("LANG") ? : ""; + + auto void get_source (const char *name); +@@ -814,6 +815,9 @@ + /* LANG has to be the first value. */ + print_assignment ("LANG", lang, false); + ++ if (getenv ("POSIXLY_CORRECT") == NULL) ++ printf ("LANGUAGE=%s\n", language); ++ + /* Now all categories in an unspecified order. */ + for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) + if (cat_no != LC_ALL) --- eglibc-2.13.orig/debian/patches/locale/fix-LC_COLLATE-rules.diff +++ eglibc-2.13/debian/patches/locale/fix-LC_COLLATE-rules.diff @@ -0,0 +1,54 @@ +--- + locale/programs/ld-collate.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +--- a/locale/programs/ld-collate.c ++++ b/locale/programs/ld-collate.c +@@ -1555,6 +1555,7 @@ + int i; + int need_undefined = 0; + struct section_list *sect; ++ enum coll_sort_rule *orules; + int ruleidx; + int nr_wide_elems = 0; + +@@ -1566,18 +1567,28 @@ + "LC_COLLATE")); + return; + } ++ if (nrules == 0) ++ { ++ /* An error message has already been printed: ++ empty category description not allowed. */ ++ return; ++ } + + /* If this assertion is hit change the type in `element_t'. */ + assert (nrules <= sizeof (runp->used_in_level) * 8); + + /* Make sure that the `position' rule is used either in all sections + or in none. */ ++ sect = collate->sections; ++ while (sect != NULL && sect->rules == NULL) ++ sect = sect->next; ++ orules = sect->rules; + for (i = 0; i < nrules; ++i) + for (sect = collate->sections; sect != NULL; sect = sect->next) + if (sect != collate->current_section + && sect->rules != NULL + && ((sect->rules[i] & sort_position) +- != (collate->current_section->rules[i] & sort_position))) ++ != (orules[i] & sort_position))) + { + WITH_CUR_LOCALE (error (0, 0, _("\ + %s: `position' must be used for a specific level in all sections or none"), +@@ -3362,6 +3373,9 @@ + no_error = 0; + } + } ++ /* Update current section. */ ++ if (collate->cursor != NULL) ++ collate->current_section = collate->cursor->section; + + lr_ignore_rest (ldfile, no_error); + } --- eglibc-2.13.orig/debian/patches/mips/local-lowlevellock.diff +++ eglibc-2.13/debian/patches/mips/local-lowlevellock.diff @@ -0,0 +1,19 @@ +2010-02-09 Aurelien Jarno + + * sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h: remove + useless include. + +--- + ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h ++++ b/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h +@@ -24,7 +24,6 @@ + #include + #include + #include +-#include + #include + + #define FUTEX_WAIT 0 --- eglibc-2.13.orig/debian/patches/mips/submitted-wordsize-clang.diff +++ eglibc-2.13/debian/patches/mips/submitted-wordsize-clang.diff @@ -0,0 +1,24 @@ +2011-06-04 Aurelien Jarno + + * sysdeps/mips/bits/wordsize.h(__WORDSIZE): Define from _MIPS_SZPTR + or __INTPTR_WIDTH__. + +diff --git a/ports/sysdeps/mips/bits/wordsize.h b/ports/sysdeps/mips/bits/wordsize.h +index 06967e5..099dfdc 100644 +--- a/ports/sysdeps/mips/bits/wordsize.h ++++ b/ports/sysdeps/mips/bits/wordsize.h +@@ -16,7 +16,13 @@ + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +-#define __WORDSIZE _MIPS_SZPTR ++#if defined (_MIPS_SZPTR) ++# define __WORDSIZE _MIPS_SZPTR ++#elif defined (__INTPTR_WIDTH__) ++# define __WORDSIZE __INTPTR_WIDTH__ ++#else ++# error Cannot define __WORDSIZE ++#endif + #if _MIPS_SIM == _ABI64 + # define __WORDSIZE_COMPAT32 1 + #endif --- eglibc-2.13.orig/debian/patches/mips/submitted-dl-platform.diff +++ eglibc-2.13/debian/patches/mips/submitted-dl-platform.diff @@ -0,0 +1,162 @@ +http://sources.redhat.com/bugzilla/show_bug.cgi?id=12193 + +--- a/ports/sysdeps/mips/dl-machine.h ++++ b/ports/sysdeps/mips/dl-machine.h +@@ -305,6 +305,18 @@ + # define ARCH_LA_PLTEXIT mips_n64_gnu_pltexit + # endif + ++/* We define an initialization function. This is called very early in ++ _dl_sysdep_start. */ ++#define DL_PLATFORM_INIT dl_platform_init () ++ ++static inline void __attribute__ ((unused)) ++dl_platform_init (void) ++{ ++ if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0') ++ /* Avoid an empty string which would disturb us. */ ++ GLRO(dl_platform) = NULL; ++} ++ + /* For a non-writable PLT, rewrite the .got.plt entry at RELOC_ADDR to + point at the symbol with address VALUE. For a writable PLT, rewrite + the corresponding PLT entry instead. */ +--- a/ports/sysdeps/mips/dl-procinfo.c ++++ b/ports/sysdeps/mips/dl-procinfo.c +@@ -0,0 +1,64 @@ ++/* Data for Mips version of processor capability information. ++ Copyright (C) 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++/* This information must be kept in sync with the _DL_PLATFORM_COUNT ++ definitions in procinfo.h. ++ ++ If anything should be added here check whether the size of each string ++ is still ok with the given array size. ++ ++ All the #ifdefs in the definitions are quite irritating but ++ necessary if we want to avoid duplicating the information. There ++ are three different modes: ++ ++ - PROCINFO_DECL is defined. This means we are only interested in ++ declarations. ++ ++ - PROCINFO_DECL is not defined: ++ ++ + if SHARED is defined the file is included in an array ++ initializer. The .element = { ... } syntax is needed. ++ ++ + if SHARED is not defined a normal array initialization is ++ needed. ++ */ ++ ++#ifndef PROCINFO_CLASS ++#define PROCINFO_CLASS ++#endif ++ ++#if !defined PROCINFO_DECL && defined SHARED ++ ._dl_mips_platforms ++#else ++PROCINFO_CLASS const char _dl_mips_platforms[4][11] ++#endif ++#ifndef PROCINFO_DECL ++= { ++ "loongson2e", "loongson2f", "octeon", "octeon2" ++ } ++#endif ++#if !defined SHARED || defined PROCINFO_DECL ++; ++#else ++, ++#endif ++ ++#undef PROCINFO_DECL ++#undef PROCINFO_CLASS +diff -Nur eglibc-2.11.2/ports/sysdeps/mips/dl-procinfo.h eglibc-2.11.2.new/ports/sysdeps/mips/dl-procinfo.h +--- eglibc-2.11.2/ports/sysdeps/mips/dl-procinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ eglibc-2.11.2.new/ports/sysdeps/mips/dl-procinfo.h 2010-11-03 19:16:37.000000000 +0100 +@@ -0,0 +1,68 @@ ++/* Mips version of processor capability information handling macros. ++ Copyright (C) 2007 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Robert Millan . ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _DL_PROCINFO_H ++#define _DL_PROCINFO_H 1 ++ ++#include ++ ++ ++/* Mask to filter out platforms. */ ++#define _DL_HWCAP_PLATFORM (-1ULL) ++ ++#define _DL_PLATFORMS_COUNT 1 ++ ++static inline const char * ++__attribute__ ((unused)) ++_dl_platform_string (int idx) ++{ ++ return GLRO(dl_mips_platforms)[idx]; ++}; ++ ++static inline int ++__attribute__ ((unused, always_inline)) ++_dl_string_platform (const char *str) ++{ ++ int i; ++ ++ if (str != NULL) ++ for (i = 0; i < _DL_PLATFORMS_COUNT; ++i) ++ { ++ if (strcmp (str, _dl_platform_string (i)) == 0) ++ return i; ++ } ++ return -1; ++}; ++ ++/* We cannot provide a general printing function. */ ++#define _dl_procinfo(word) -1 ++ ++/* There are no hardware capabilities defined. */ ++#define _dl_hwcap_string(idx) "" ++ ++/* By default there is no important hardware capability. */ ++#define HWCAP_IMPORTANT (0) ++ ++/* We don't have any hardware capabilities. */ ++#define _DL_HWCAP_COUNT 0 ++ ++#define _dl_string_hwcap(str) (-1) ++ ++#endif /* dl-procinfo.h */ --- eglibc-2.13.orig/debian/patches/mips/local-r10k.diff +++ eglibc-2.13/debian/patches/mips/local-r10k.diff @@ -0,0 +1,64 @@ +the R10000 needs an LL/SC Workaround. If not applied all R10k before +rev 3.0 misbehave on atomic ops and rev 2.6 and lower (e.g. SGI IP28) +die after very few seconds with a deadlock due to even more erratas. + +--- + ports/sysdeps/mips/bits/atomic.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/ports/sysdeps/mips/bits/atomic.h ++++ b/ports/sysdeps/mips/bits/atomic.h +@@ -74,7 +74,7 @@ + "bne %0,%3,2f\n\t" \ + "move %1,%4\n\t" \ + "sc %1,%2\n\t" \ +- "beqz %1,1b\n" \ ++ "beqzl %1,1b\n" \ + acq "\n\t" \ + ".set pop\n" \ + "2:\n\t" \ +@@ -98,7 +98,7 @@ + "bne %0,%3,2f\n\t" \ + "move %1,%4\n\t" \ + "scd %1,%2\n\t" \ +- "beqz %1,1b\n" \ ++ "beqzl %1,1b\n" \ + acq "\n\t" \ + ".set pop\n" \ + "2:\n\t" \ +@@ -192,7 +192,7 @@ + "ll %0,%4\n\t" \ + "move %1,%3\n\t" \ + "sc %1,%2\n\t" \ +- "beqz %1,1b\n" \ ++ "beqzl %1,1b\n" \ + acq "\n\t" \ + ".set pop\n" \ + "2:\n\t" \ +@@ -216,7 +216,7 @@ + "lld %0,%4\n\t" \ + "move %1,%3\n\t" \ + "scd %1,%2\n\t" \ +- "beqz %1,1b\n" \ ++ "beqzl %1,1b\n" \ + acq "\n\t" \ + ".set pop\n" \ + "2:\n\t" \ +@@ -251,7 +251,7 @@ + "ll %0,%4\n\t" \ + "addu %1,%0,%3\n\t" \ + "sc %1,%2\n\t" \ +- "beqz %1,1b\n" \ ++ "beqzl %1,1b\n" \ + acq "\n\t" \ + ".set pop\n" \ + "2:\n\t" \ +@@ -275,7 +275,7 @@ + "lld %0,%4\n\t" \ + "daddu %1,%0,%3\n\t" \ + "scd %1,%2\n\t" \ +- "beqz %1,1b\n" \ ++ "beqzl %1,1b\n" \ + acq "\n\t" \ + ".set pop\n" \ + "2:\n\t" \ --- eglibc-2.13.orig/debian/patches/mips/submitted-rld_map.diff +++ eglibc-2.13/debian/patches/mips/submitted-rld_map.diff @@ -0,0 +1,21 @@ +2010-05-20 Aurelien Jarno + + * sysdeps/mips/dl-machine.h (ELF_MACHINE_DEBUG_SETUP): test for + RLD_MAP pointer before using it. + +--- + ports/sysdeps/mips/dl-machine.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/ports/sysdeps/mips/dl-machine.h ++++ b/ports/sysdeps/mips/dl-machine.h +@@ -70,7 +70,8 @@ + /* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in + with the run-time address of the r_debug structure */ + #define ELF_MACHINE_DEBUG_SETUP(l,r) \ +-do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \ ++do { if ((l)->l_info[DT_MIPS (RLD_MAP)] && \ ++ (l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) \ + *(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \ + (ElfW(Addr)) (r); \ + } while (0) --- eglibc-2.13.orig/debian/patches/m68k/local-pthread_lock.diff +++ eglibc-2.13/debian/patches/m68k/local-pthread_lock.diff @@ -0,0 +1,24 @@ +--- + linuxthreads/sysdeps/m68k/pspinlock.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/linuxthreads/sysdeps/m68k/pspinlock.c ++++ b/linuxthreads/sysdeps/m68k/pspinlock.c +@@ -25,7 +25,7 @@ + int + __pthread_spin_lock (pthread_spinlock_t *lock) + { +- unsigned int val; ++ unsigned char val; + + do + asm volatile ("tas %1; sne %0" +@@ -42,7 +42,7 @@ + int + __pthread_spin_trylock (pthread_spinlock_t *lock) + { +- unsigned int val; ++ unsigned char val; + + asm volatile ("tas %1; sne %0" + : "=dm" (val), "=m" (*lock) --- eglibc-2.13.orig/debian/patches/m68k/local-mathinline_h.diff +++ eglibc-2.13/debian/patches/m68k/local-mathinline_h.diff @@ -0,0 +1,53 @@ +--- + ports/sysdeps/m68k/m680x0/fpu/bits/mathinline.h | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/ports/sysdeps/m68k/m680x0/fpu/bits/mathinline.h ++++ b/ports/sysdeps/m68k/m680x0/fpu/bits/mathinline.h +@@ -100,7 +100,7 @@ + /* Define a const math function. */ + #define __m81_defun(rettype, func, args) \ + __m81_inline rettype __attribute__((__const__)) \ +- __m81_u(func) args ++ __NTH(__m81_u(func) args) + + /* Define the three variants of a math function that has a direct + implementation in the m68k fpu. FUNC is the name for C (which will be +@@ -313,8 +313,8 @@ + } \ + \ + __m81_inline float_type \ +-__m81_u(__CONCAT(__fma,s))(float_type __x, float_type __y, \ +- float_type __z) \ ++__NTH(__m81_u(__CONCAT(__fma,s))(float_type __x, float_type __y, \ ++ float_type __z)) \ + { \ + return (__x * __y) + __z; \ + } +@@ -330,8 +330,8 @@ + + # define __inline_functions(float_type, s) \ + __m81_inline void \ +-__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \ +- float_type *__cosx) \ ++__NTH(__m81_u(__CONCAT(__sincos,s))(float_type __x, float_type *__sinx, \ ++ float_type *__cosx)) \ + { \ + __asm ("fsincos%.x %2,%1:%0" \ + : "=f" (*__sinx), "=f" (*__cosx) : "f" (__x)); \ +@@ -352,13 +352,13 @@ + NAME, to make token pasting work correctly with -traditional. */ + # define __inline_forward_c(rettype, name, args1, args2) \ + extern __inline rettype __attribute__((__const__)) \ +- name args1 \ ++ __NTH(name args1) \ + { \ + return __CONCAT(__,name) args2; \ + } + + # define __inline_forward(rettype, name, args1, args2) \ +-extern __inline rettype name args1 \ ++extern __inline rettype __NTH(name args1) \ + { \ + return __CONCAT(__,name) args2; \ + } --- eglibc-2.13.orig/debian/patches/m68k/submitted-gcc34-seccomment.diff +++ eglibc-2.13/debian/patches/m68k/submitted-gcc34-seccomment.diff @@ -0,0 +1,33 @@ +# DP: Description: Make glibc-2.3.5 compile with gcc-3.4/4.0 + binutils 2.16 +# on m68k fixed by adding #APP. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: Andreas Schwab +# DP: Upstream status: Pending +# DP: Status Details: +# DP: Date: 2005-08-03 + +From: Andreas Schwab + +--- + include/libc-symbols.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/include/libc-symbols.h ++++ b/include/libc-symbols.h +@@ -239,12 +239,12 @@ + # define __make_section_unallocated(section_string) + # endif + +-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus ++/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus + section attributes on what looks like a comment to the assembler. */ + # ifdef HAVE_SECTION_QUOTES +-# define __sec_comment "\"\n\t#\"" ++# define __sec_comment "\"\n#APP\n\t#\"" + # else +-# define __sec_comment "\n\t#" ++# define __sec_comment "\n#APP\n\t#" + # endif + # define link_warning(symbol, msg) \ + __make_section_unallocated (".gnu.warning." #symbol) \ --- eglibc-2.13.orig/debian/patches/m68k/local-fpic.diff +++ eglibc-2.13/debian/patches/m68k/local-fpic.diff @@ -0,0 +1,16 @@ +# DP: Make sure libc_nonshared.a is compiled with -fPIC on m68k + +--- + ports/sysdeps/m68k/Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/ports/sysdeps/m68k/Makefile ++++ b/ports/sysdeps/m68k/Makefile +@@ -33,3 +33,7 @@ + ifeq ($(subdir),elf) + CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused + endif ++ ++# Build objects in libc_nonshared.a with -fPIC (instead of -fpic) to avoid ++# possible linkage problems. ++CFLAGS-.oS += -fPIC --- eglibc-2.13.orig/debian/patches/m68k/local-reloc.diff +++ eglibc-2.13/debian/patches/m68k/local-reloc.diff @@ -0,0 +1,23 @@ +# DP: Description: binutils bug workaround +# DP: Related bugs: #263601: m68k: workaround for binutils problem +# DP: Dpatch author: Roman Zippel +# DP: Patch author: Richard Zidlicky +# DP: Upstream status: Debian-Specific +# DP: Status Details: Actual fix is to modify m68k binutils. +# DP: Date: 2004-08-09 + +--- + ports/sysdeps/m68k/dl-machine.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/ports/sysdeps/m68k/dl-machine.h ++++ b/ports/sysdeps/m68k/dl-machine.h +@@ -312,6 +312,8 @@ + Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); + if (ELF32_R_TYPE (reloc->r_info) == R_68K_JMP_SLOT) + *reloc_addr += l_addr; ++ else if (ELF32_R_TYPE (reloc->r_info) == R_68K_NONE) ++ return; + else + _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); + } --- eglibc-2.13.orig/debian/patches/m68k/local-dwarf2-buildfix.diff +++ eglibc-2.13/debian/patches/m68k/local-dwarf2-buildfix.diff @@ -0,0 +1,39 @@ +# DP: Description: Adding empty m68k framestate.c not to build for dwarf2. +# DP: Related bugs: +# DP: Dpatch author: GOTO Masanori +# DP: Patch author: GOTO Masanori +# DP: Upstream status: Debian-Specific +# DP: Status Details: m68k uses sjlj exceptions, not dwarf2 unwind. +# DP: This patch adds empty framestate.c for m68k to avoid +# DP: dwarf2 build failure. +# DP: Date: 2003-07-19 (Update 2005-03-16 gotom) + +2005-03-16 GOTO Masanori + + * sysdeps/m68k/unwind-pe.c: Update to fix compilation failure. + +2003-07-19 GOTO Masanori + + * sysdeps/m68k/framestate.c: Add to fix compilation failure + with sjlj exception, suggested by Philip Blundell. + + +--- + sysdeps/m68k/framestate.c | 2 ++ + sysdeps/m68k/unwind-pe.c | 6 ++++++ + 2 files changed, 8 insertions(+) + +--- /dev/null ++++ b/sysdeps/m68k/unwind-pe.c +@@ -0,0 +1,6 @@ ++#include ++#include ++ ++#define _LIBC_DEFINITIONS ++#define NO_BASE_OF_ENCODED_VALUE ++#include "unwind-pe.h" +--- /dev/null ++++ b/sysdeps/m68k/framestate.c +@@ -0,0 +1,2 @@ ++ ++ --- eglibc-2.13.orig/debian/patches/m68k/local-compat.diff +++ eglibc-2.13/debian/patches/m68k/local-compat.diff @@ -0,0 +1,27 @@ +# DP: Fixes some old compatibility issues with m68k and lchown/chown + +--- + ports/sysdeps/unix/sysv/linux/m68k/chown.c | 5 +++++ + ports/sysdeps/unix/sysv/linux/m68k/lchown.c | 5 +++++ + 2 files changed, 10 insertions(+) + +--- a/ports/sysdeps/unix/sysv/linux/m68k/chown.c ++++ b/ports/sysdeps/unix/sysv/linux/m68k/chown.c +@@ -67,3 +67,8 @@ + } + libc_hidden_def (__chown) + weak_alias (__chown, chown) ++ ++#include ++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2) ++compat_symbol (libc, __chown, chown, GLIBC_2_1); ++#endif +--- a/ports/sysdeps/unix/sysv/linux/m68k/lchown.c ++++ b/ports/sysdeps/unix/sysv/linux/m68k/lchown.c +@@ -1 +1,6 @@ + #include ++ ++#include ++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2) ++compat_symbol (libc, __lchown, lchown, GLIBC_2_1); ++#endif --- eglibc-2.13.orig/debian/patches/sparc/cvs-ifunc.diff +++ eglibc-2.13/debian/patches/sparc/cvs-ifunc.diff @@ -0,0 +1,240 @@ +2011-06-07 David S. Miller + + * sysdeps/sparc/sparc32/dl-irel.h (elf_irela): Pass dl_hwcap to + ifuncs. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela, + elf_machine_lazy_rel): Likewise. + * sysdeps/sparc/sparc64/dl-irel.h (elf_irela): Likewise. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela, + elf_machine_lazy_rel): Likewise. + * sysdeps/sparc/sparc64/multiarch/memcpy.S (memcpy): Fetch + dl_hwcap via passed in argument. + * sysdeps/sparc/sparc64/multiarch/memset.S (memset, bzero): + Likewise. + +diff --git a/sysdeps/sparc/sparc32/dl-irel.h b/sysdeps/sparc/sparc32/dl-irel.h +index 1891938..2753fb4 100644 +--- a/sysdeps/sparc/sparc32/dl-irel.h ++++ b/sysdeps/sparc/sparc32/dl-irel.h +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #define ELF_MACHINE_IRELA 1 + +@@ -36,13 +37,13 @@ elf_irela (const Elf32_Rela *reloc) + if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1)) + { + Elf32_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) (); ++ Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); + *reloc_addr = value; + } + else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1)) + { + Elf32_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) (); ++ Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); + + sparc_fixup_plt (reloc, reloc_addr, value, 0, 1); + } +diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h +index 9631db3..f8e8fe4 100644 +--- a/sysdeps/sparc/sparc32/dl-machine.h ++++ b/sysdeps/sparc/sparc32/dl-machine.h +@@ -399,7 +399,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, + && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0) + && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)) + { +- value = ((Elf32_Addr (*) (void)) value) (); ++ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap)); + } + + switch (r_type) +@@ -430,11 +430,11 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, + *reloc_addr = value; + break; + case R_SPARC_IRELATIVE: +- value = ((Elf32_Addr (*) (void)) value) (); ++ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap)); + *reloc_addr = value; + break; + case R_SPARC_JMP_IREL: +- value = ((Elf32_Addr (*) (void)) value) (); ++ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap)); + /* Fall thru */ + case R_SPARC_JMP_SLOT: + { +@@ -562,7 +562,7 @@ elf_machine_lazy_rel (struct link_map *map, + else if (r_type == R_SPARC_JMP_IREL) + { + Elf32_Addr value = map->l_addr + reloc->r_addend; +- value = ((Elf32_Addr (*) (void)) value) (); ++ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap)); + sparc_fixup_plt (reloc, reloc_addr, value, 1, 1); + } + else if (r_type == R_SPARC_NONE) +diff --git a/sysdeps/sparc/sparc64/dl-irel.h b/sysdeps/sparc/sparc64/dl-irel.h +index 1a2a0a3..0d70e2a 100644 +--- a/sysdeps/sparc/sparc64/dl-irel.h ++++ b/sysdeps/sparc/sparc64/dl-irel.h +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #define ELF_MACHINE_IRELA 1 + +@@ -36,13 +37,13 @@ elf_irela (const Elf64_Rela *reloc) + if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1)) + { + Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) (); ++ Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); + *reloc_addr = value; + } + else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1)) + { + Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; +- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) (); ++ Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap)); + struct link_map map = { .l_addr = 0 }; + + /* 'high' is always zero, for large PLT entries the linker +diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h +index 82ab5a4..aaa22d6 100644 +--- a/sysdeps/sparc/sparc64/dl-machine.h ++++ b/sysdeps/sparc/sparc64/dl-machine.h +@@ -430,7 +430,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, + if (sym != NULL + && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0) + && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)) +- value = ((Elf64_Addr (*) (void)) value) (); ++ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap)); + + switch (r_type) + { +@@ -460,11 +460,11 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, + *reloc_addr = value; + break; + case R_SPARC_IRELATIVE: +- value = ((Elf64_Addr (*) (void)) value) (); ++ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap)); + *reloc_addr = value; + break; + case R_SPARC_JMP_IREL: +- value = ((Elf64_Addr (*) (void)) value) (); ++ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap)); + /* Fall thru */ + case R_SPARC_JMP_SLOT: + #ifdef RESOLVE_CONFLICT_FIND_MAP +@@ -658,7 +658,7 @@ elf_machine_lazy_rel (struct link_map *map, + || r_type == R_SPARC_IRELATIVE) + { + Elf64_Addr value = map->l_addr + reloc->r_addend; +- value = ((Elf64_Addr (*) (void)) value) (); ++ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap)); + if (r_type == R_SPARC_JMP_IREL) + { + /* 'high' is always zero, for large PLT entries the linker +diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy.S b/sysdeps/sparc/sparc64/multiarch/memcpy.S +index a708de1..c12dc3b 100644 +--- a/sysdeps/sparc/sparc64/multiarch/memcpy.S ++++ b/sysdeps/sparc/sparc64/multiarch/memcpy.S +@@ -32,26 +32,10 @@ ENTRY(memcpy) + or %o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3 + 1: add %o7, %o3, %o3 + mov %o5, %o7 +- sethi %hi(_rtld_global_ro), %o2 +- or %o2, %lo(_rtld_global_ro), %o2 +-# ifdef __arch64__ +- ldx [%o3 + %o2], %o2 +- ldx [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2 +-# else +- ld [%o3 + %o2], %o2 +- ld [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2 +-# endif +-# else +- set _dl_hwcap, %o3 +-# ifdef __arch64__ +- ldx [%o3], %o2 +-# else +- ld [%o3 + 4], %o2 +-# endif + # endif +- andcc %o2, 0x80, %g0 ! HWCAP_SPARC_N2 ++ andcc %o0, 0x80, %g0 ! HWCAP_SPARC_N2 + be 1f +- andcc %o2, 0x40, %g0 ! HWCAP_SPARC_BLKINIT ++ andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT + # ifdef SHARED + sethi %gdop_hix22(__memcpy_niagara2), %o1 + xor %o1, %gdop_lox10(__memcpy_niagara2), %o1 +@@ -61,7 +45,7 @@ ENTRY(memcpy) + ba 10f + nop + 1: be 1f +- andcc %o2, 0x20, %g0 ! HWCAP_SPARC_ULTRA3 ++ andcc %o0, 0x20, %g0 ! HWCAP_SPARC_ULTRA3 + # ifdef SHARED + sethi %gdop_hix22(__memcpy_niagara1), %o1 + xor %o1, %gdop_lox10(__memcpy_niagara1), %o1 +diff --git a/sysdeps/sparc/sparc64/multiarch/memset.S b/sysdeps/sparc/sparc64/multiarch/memset.S +index befd7ed..2e27448 100644 +--- a/sysdeps/sparc/sparc64/multiarch/memset.S ++++ b/sysdeps/sparc/sparc64/multiarch/memset.S +@@ -32,24 +32,8 @@ ENTRY(memset) + or %o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3 + 1: add %o7, %o3, %o3 + mov %o5, %o7 +- sethi %hi(_rtld_global_ro), %o2 +- or %o2, %lo(_rtld_global_ro), %o2 +-# ifdef __arch64__ +- ldx [%o3 + %o2], %o2 +- ldx [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2 +-# else +- ld [%o3 + %o2], %o2 +- ld [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2 +-# endif +-# else +- set _dl_hwcap, %o3 +-# ifdef __arch64__ +- ldx [%o3], %o2 +-# else +- ld [%o3 + 4], %o2 +-# endif + # endif +- andcc %o2, 0x40, %g0 ! HWCAP_SPARC_BLKINIT ++ andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT + be 9f + nop + # ifdef SHARED +@@ -84,24 +68,8 @@ ENTRY(__bzero) + or %o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3 + 1: add %o7, %o3, %o3 + mov %o5, %o7 +- sethi %hi(_rtld_global_ro), %o2 +- or %o2, %lo(_rtld_global_ro), %o2 +-# ifdef __arch64__ +- ldx [%o3 + %o2], %o2 +- ldx [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2 +-# else +- ld [%o3 + %o2], %o2 +- ld [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2 +-# endif +-# else +- set _dl_hwcap, %o3 +-# ifdef __arch64__ +- ldx [%o3], %o2 +-# else +- ld [%o3 + 4], %o2 +-# endif + # endif +- andcc %o2, 0x40, %g0 ! HWCAP_SPARC_BLKINIT ++ andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT + be 9f + nop + # ifdef SHARED --- eglibc-2.13.orig/debian/patches/sparc/submitted-bzero.diff +++ eglibc-2.13/debian/patches/sparc/submitted-bzero.diff @@ -0,0 +1,19 @@ +2011-02-28 Aurelien Jarno + + * sysdeps/sparc/sparc64/multiarch/memset.S(__bzero): call + __bzero_ultra1 instead of __memset_ultra1. + +diff a/sysdeps/sparc/sparc64/multiarch/memset.S b/sysdeps/sparc/sparc64/multiarch/memset.S +--- a/sysdeps/sparc/sparc64/multiarch/memset.S ++++ b/sysdeps/sparc/sparc64/multiarch/memset.S +@@ -114,8 +114,8 @@ ENTRY(__bzero) + nop + 9: + # ifdef SHARED +- sethi %gdop_hix22(__memset_ultra1), %o1 +- xor %o1, %gdop_lox10(__memset_ultra1), %o1 ++ sethi %gdop_hix22(__bzero_ultra1), %o1 ++ xor %o1, %gdop_lox10(__bzero_ultra1), %o1 + # else + set __bzero_ultra1, %o1 + # endif --- eglibc-2.13.orig/debian/patches/sparc/cvs-rlimits.diff +++ eglibc-2.13/debian/patches/sparc/cvs-rlimits.diff @@ -0,0 +1,23 @@ +2011-08-14 David S. Miller + + * sysdeps/unix/sysv/linux/sparc/bits/resource.h (RLIM_INFINITY, + RLIM64_INFINITY): Fix 64-bit values for 32-bit sparc. + +diff --git a/sysdeps/unix/sysv/linux/sparc/bits/resource.h b/sysdeps/unix/sysv/linux/sparc/bits/resource.h +index 04d33e4..5c00b8f 100644 +--- a/sysdeps/unix/sysv/linux/sparc/bits/resource.h ++++ b/sysdeps/unix/sysv/linux/sparc/bits/resource.h +@@ -130,11 +130,11 @@ enum __rlimit_resource + #ifndef __USE_FILE_OFFSET64 + # define RLIM_INFINITY ((long int)(~0UL >> 1)) + #else +-# define RLIM_INFINITY 0x7fffffffffffffffLL ++# define RLIM_INFINITY 0xffffffffffffffffLL + #endif + + #ifdef __USE_LARGEFILE64 +-# define RLIM64_INFINITY 0x7fffffffffffffffLL ++# define RLIM64_INFINITY 0xffffffffffffffffLL + #endif + + #endif --- eglibc-2.13.orig/debian/patches/sparc/local-fork.diff +++ eglibc-2.13/debian/patches/sparc/local-fork.diff @@ -0,0 +1,43 @@ +2006-05-28 Aurelien Jarno + + * sysdeps/unix/sysv/linux/sparc/fork.S: remove, so that fork.c is + used instead. + + +--- + sysdeps/unix/sysv/linux/sparc/fork.S | 30 ------------------------------ + 1 file changed, 30 deletions(-) + +--- a/sysdeps/unix/sysv/linux/sparc/fork.S ++++ /dev/null +@@ -1,30 +0,0 @@ +-/* Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Miguel de Icaza , 1997. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include +- +-PSEUDO (__libc_fork, fork, 0) +- sub %o1, 1, %o1 +- retl +- and %o0, %o1, %o0 +-PSEUDO_END (__libc_fork) +- +-weak_alias (__libc_fork, __fork) +-libc_hidden_def (__fork) +-weak_alias (__libc_fork, fork) --- eglibc-2.13.orig/debian/patches/sparc/submitted-timing.diff +++ eglibc-2.13/debian/patches/sparc/submitted-timing.diff @@ -0,0 +1,52 @@ +# All lines beginning with `# DP:' are a description of the patch. +# DP: Description: sparc/sparcv9 libraries fix +# DP: Author: Daniel Jacobowitz , Jeff Bailey +# DP: Upstream status: Not Submitted +# DP: Status Details: +# DP: Date: 2003-12-31 + +2003-12-31 Jeff Bailey + + * sysdeps/sparc/hp-timing.h: New file. + +--- + sysdeps/sparc/sparc32/hp-timing.h | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +--- /dev/null ++++ b/sysdeps/sparc/sparc32/hp-timing.h +@@ -0,0 +1,34 @@ ++/* High precision, low overhead timing functions. i386 version. ++ Copyright (C) 2003 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _SPARC_HP_TIMING_H ++#define _SPARC_HP_TIMING_H 1 ++ ++#define hp_timing_t hp_timing_t__ ++#include ++#undef hp_timing_t ++ ++/* We don't use high-precision timers, but we might load an sparcv9 libpthread ++ which does. */ ++#define HP_TIMING_PAD 1 ++ ++/* sparcv9 uses 64bit values for the times. */ ++typedef unsigned long long int hp_timing_t; ++ ++#endif /* hp-timing.h */ --- eglibc-2.13.orig/debian/patches/sparc/local-sparcv9-target.diff +++ eglibc-2.13/debian/patches/sparc/local-sparcv9-target.diff @@ -0,0 +1,39 @@ +# DP: Description: Optimizes the build for sparcv9 +# DP: Author: Ben Collins, Aurelien Jarno +# DP: Upstream status: Debian-Specific +# DP: Status Details: +# DP: Date: July 19, 2007 + +--- + configure | 5 +++++ + configure.in | 5 +++++ + 2 files changed, 10 insertions(+) + +--- a/configure ++++ b/configure +@@ -4046,6 +4046,11 @@ + machine="powerpc" + fi + ++# Force v9 ++if test "$machine" = sparc; then ++ machine="sparcv9" ++fi ++ + # Braindead PowerPC box with absolutely no FPU. + case "$machine-$host_os" in + powerpc*-*soft) +--- a/configure.in ++++ b/configure.in +@@ -373,6 +373,11 @@ + machine="powerpc" + fi + ++# Force v9 ++if test "$machine" = sparc; then ++ machine="sparcv9" ++fi ++ + # Braindead PowerPC box with absolutely no FPU. + case "$machine-$host_os" in + powerpc*-*soft) --- eglibc-2.13.orig/debian/debhelper.in/locales.bug-presubj +++ eglibc-2.13/debian/debhelper.in/locales.bug-presubj @@ -0,0 +1,18 @@ +locales dependencies on glibc +============================= + + If at some point (in unstable) you get messages like: + + The following packages have unmet dependencies: + locales: Depends: glibc-2.6-1 which is a virtual package. + + then please check for example on [1] that the glibc of the _same_ version as + the `locales` package you are trying to upgrade is in state _installed_ for + your architecture, and for how long. + + If it's not, it is very likely that the corresponding libc has not been + built _and_ uploaded to the mirrors for your architecture yet, and that the + dependencies will be fixed soon. Please wait for the package to be installed + for more than 24 hours before reporting a bug about `locales` dependencies. + + [1] http://buildd.debian.org/~jeroen/status/package.php?p=glibc --- eglibc-2.13.orig/debian/debhelper.in/libc.README.Debian +++ eglibc-2.13/debian/debhelper.in/libc.README.Debian @@ -0,0 +1,117 @@ +Q1: Why does the Debian libc6-dev package create /usr/include/linux and +/usr/include/asm directories containing header files from a specific +kernel, instead of using the "established" convention of making those +directories into symlinks pointing to the currently installed kernel? + +A1: Occasionally, changes in the kernel headers cause problems with +the compilation of libc and of programs that use libc. To ensure that +users are not affected by these problems, we configure libc to use the +headers from a kernel that is known to work with libc and the programs +that depend on stable kernel headers. + +[Note: /usr/include/linux is now in the linux-libc-dev package.] + +Q2: What if I want to compile a program that needs a feature from a +later kernel than is used by libc? + +A2: In practice, most programs will not have this problem. However, +depending on the scope of the problem you have several options available: + +If the situation is one like "kernel driver development", where all use +of the machine for development is expected to be against a different set +of kernel headers than are supplied with the "stock" libc6-dev, rebuilding +the glibc packages against that particular kernel will create a full set of +libc6 packages that are "compliant" with the new kernel. All development +done on machines with these packages installed will be done against the +new kernel. To build libc6-dev against your particular kernel, export the +environment variable LINUX_SOURCE, set to the path to that particular kernel +source directory and then build the package. + +If you want this new glibc package to stick against further upgrades, simply +use dselect and place the packages on HOLD. This will keep them from being +upgraded against your wishes. + +If there is just one particular program/package that needs different headers, +and your kernel of choice is installed in the usual place, you can use the +-I/usr/src/linux/include option on the gcc command line, when compiling that +specific program. + +Q3: My program is trying to use a kernel header that is in libc-dev, and +it is causing problems. (or) Why are the kernel headers not the same for +all architectures in Debian, for a given version of libc-dev? + +A3: For starters, you should never use kernel headers directly from user +space programs. You cannot be guaranteed a consistent interface across +different versions of the kernel, much less across architectures (even for +the same version of kernel source). + +Kernel headers are included with libc-dev _only_ to support those headers +in libc-dev. They are not there for userspace programs to include. If you +need kernel headers, then use one of the provided kernel-headers-x.x.x +packages provided for each architectures, or include the kernel headers +(or just the parts of the headers) you need directly in your source for +compilation. Only this way can you ensure a consistent state. + +Q4: Why does Debian's glibc seem to follow the stable CVS branch? + +A4: During our development cycle we follow the stable CVS branch so that +we can cause as little disruption as possible, and catch problems easier. +Differences between minor releases of glibc are known to be very large, +contain many changes, and generally affect all architectures differently. +We sync frequently with CVS so that we can take this large amount of +changes in smaller chunks, simplifying the process, and allowing us to +communicate problems to upstream much easier. + +Q5: How to setup my own language/regional (locale) setting? + +A5: Glibc provides "locale" defined in POSIX. Locale is a framework +to switch between multiple languages for users who can select to use +their language, country, characters, collation order, etc. For +example, some program display messages in your own language, if you +set the appropriate locale. Default locale is C (or POSIX) which +behaves traditional Unix with ASCII message. For more information, +look locale (5). + +If you want to use your own locale, install "locales" package. With +debconf interface, you can setup which locale is generated, and which +locale is used in default on your machine. + +Q6: I get this message when I run a program: + ld.so: Incorrectly built binary which accesses errno or h_errno directly. + ld.so: See /usr/share/doc/libc6/FAQ.gz. +A6: + +The program is broken. It probably says "extern int errno" somewhere, +instead of including . Errno in recent glibc versions is a macro, +which calls the function __errno_location; when glibc is built with +thread-local storage enabled, there is no extern int variable named errno. +In addition, "extern int errno" is not thread-safe. + +NOTE: Currently this error message is suppressed, for the benefit of some +truly buggy programs which redirect stderr into something important, like a +network socket. + +Q7: I get this error when I compile an static linked application that's +compiled with glibc 2.2 or before: + gcc -o foo.o libbar.a + libbar.a(obj.o): In function `func(char *)': + : undefined reference to `__ctype_toupper' + +A7: +During glibc 2.3.x development, some symbols (__ctype_b, __ctype_toupper, +__ctype_tolower) are changed to hidden attributes. This means old static +linked applications/libraries built with glibc 2.2.x cannot be linked on glibc +2.3.x systems any more. + +But it made a lot of user applications unusable, we applied a workaround patch +for glibc in Sarge. Therefore your applications worked OK, and you didn't +need to consider about this problem. However, most other distros already +dropped such local modification. For that reason, we decided to drop +supporting such old static linked applications/libraries from Etch, you need +to recompile them. + +If you want to keep this workaround that was applied in Sarge for the present, +please recompile Debian glibc package with adding "glibc23-ctype-compat" line +at the end of debian/patches/00list, and install it on your local machine. +Note that we don't support this patch nowadays, please use it at your own +risk. --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-bin.docs +++ eglibc-2.13/debian/debhelper.in/libc-dev-bin.docs @@ -0,0 +1,2 @@ +NOTES +NAMESPACE --- eglibc-2.13.orig/debian/debhelper.in/libc-bin.manpages +++ eglibc-2.13/debian/debhelper.in/libc-bin.manpages @@ -0,0 +1,14 @@ +debian/local/manpages/catchsegv.1 +debian/local/manpages/gai.conf.5 +debian/local/manpages/getent.1 +debian/local/manpages/getconf.1 +debian/local/manpages/iconv.1 +debian/local/manpages/iconvconfig.8 +debian/local/manpages/ldconfig.8 +debian/local/manpages/ldd.1 +debian/local/manpages/locale.1 +debian/local/manpages/localedef.1 +debian/local/manpages/rpcinfo.8 +debian/local/manpages/tzselect.1 +debian/local/manpages/zdump.1 +debian/local/manpages/zic.8 --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-bin.manpages +++ eglibc-2.13/debian/debhelper.in/libc-dev-bin.manpages @@ -0,0 +1,4 @@ +debian/local/manpages/gencat.1 +debian/local/manpages/mtrace.1 +debian/local/manpages/rpcgen.1 +debian/local/manpages/sprof.1 --- eglibc-2.13.orig/debian/debhelper.in/locales.prerm +++ eglibc-2.13/debian/debhelper.in/locales.prerm @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +case "$1" in + remove|purge) + # This test should be kept only for compatibility with old + # locales-all packages, new ones don't use locale-archive. + if ! [ -f /usr/lib/locales-all/supported.tar.lzma ] ; then + # If locales-all is not installed, clean the locales + rm -f /usr/lib/locale/locale-archive + fi + ;; + *) + ;; +esac + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/nscd.NEWS +++ eglibc-2.13/debian/debhelper.in/nscd.NEWS @@ -0,0 +1,11 @@ +glibc (2.5-5) unstable; urgency=low + + Since this release, hosts caching in nscd is off by default: for some of the + libc calls (gethostby* calls) nscd does not respect the DNS TTLs. It can + lead to system lockups (e.g. if you are using pam-ldap and change the IP of + your authentication server) hence is not considered safe. + + See debian bug #335476 and how upstream answered to that in + http://sourceware.org/bugzilla/show_bug.cgi?id=4428. + + -- Pierre Habouzit Sat, 28 Apr 2007 11:10:56 +0200 --- eglibc-2.13.orig/debian/debhelper.in/libc.NEWS +++ eglibc-2.13/debian/debhelper.in/libc.NEWS @@ -0,0 +1,98 @@ +eglibc (2.13-17) unstable; urgency=low + + Starting with the eglibc package version 2.13-5, the libraries are + shipped in the multiarch directory /lib/$arch instead of the more + traditional /lib. Similarly the includes are now shipped in + /usr/include/$arch instead of the more traditional /usr/include. + + The toolchain in Debian has been updated to cope with that, and most + build systems should be unaffected. If you are using a non-Debian + toolchain to build your software and it is not able to cope with + multiarch, you might try to pass the following option to your + compiler: + + -B/usr/lib/$arch -I/usr/include/$arch + + -- Aurelien Jarno Tue, 09 Aug 2011 19:58:28 +0200 + +eglibc (2.13-7) unstable; urgency=low + + Starting with version 2.13, eglibc provides an SSSE3 optimized version + of memcpy() on the amd64 architecture. This version might copy memory + backward in some conditions, which causes issues if the source and + destination overlap. memmove() should be used in such cases, but some + programs still wrongly use memcpy(). + + For this reason, on the amd64 architecture the Debian package provides + two wrappers which can be use to workaround and/or debug the issue: + - /usr/lib/x86_64-linux-gnu/libc/memcpy-preload.so simply replace all + calls to memcpy() by a call to memmove() + - /usr/lib/x86_64-linux-gnu/libc/memcpy-syslog-preload.so does the same, + but in addition logs (with rate limit) the issue to syslog, so that it + can be detected and fixed. + + To use these wrapper on a single binary, the easiest way is to use the + LD_PRELOAD environment variable: + - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libc/memcpy-preload.so /path/to/binary + - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libc/memcpy-syslog-preload.so /path/to/binary + + For system-wide usage, it is possible to add the path of one of the + wrapper to /etc/ld.so.preload. + + For more details about the issue, please see: + http://bugs.debian.org/625521 + http://sourceware.org/bugzilla/show_bug.cgi?id=12518 + + -- Aurelien Jarno Sat, 11 Jun 2011 18:02:52 +0200 + +glibc (2.9-8) unstable; urgency=low + + Starting with version 2.9-8, unified IPv4/IPv6 lookup have been enabled + in the glibc's resolver. This is faster, fixes numerous of bugs, but is + problematic on some broken DNS servers and/or wrongly configured + firewalls. + + If such a DNS server is detected, the resolver switches (permanently + for that process) to a mode where the second request is sent only when + the first answer has been received. This means the first request will + be timeout, but subsequent requests should be fast again. This + behaviour can be enabled permanently by adding 'options single-request' + to /etc/resolv.conf. + + -- Aurelien Jarno Thu, 23 Apr 2009 21:14:32 +0200 + +glibc (2.6.1-2) unstable; urgency=low + + Starting with version 2.6.1, glibc ships a /etc/ld.so.conf.d/libc.conf that + enforces /usr/local/lib to take precedence over /usr/lib. This is the + intended behaviour (it works like the $PATH where /usr/local/bin takes + precedence over /usr/bin). + + To revert that (though doing so is discouraged) you can add /usr/lib to the + beginning of /etc/ld.so.conf.d/libc.conf. (see bug#440394). + + -- Pierre Habouzit Sat, 01 Sep 2007 16:58:15 +0200 + +glibc (2.5-1) unstable; urgency=low + + The script tzconfig has been removed from glibc 2.5-1 and following + versions. Please use 'dpkg-reconfigure tzdata' instead to configure + the timezone. + + -- Aurelien Jarno Fri, 16 Nov 2007 15:38:54 +0100 + +glibc (2.5-1) unstable; urgency=low + + Starting with version 2.5-1, the glibc requires a 2.6.1 or later + kernel. If you use a 2.4 kernel, please upgrade it *before* + installing glibc. + + This also means that it is not possible to use LD_ASSUME_KERNEL with a + version lower than 2.6.1. If you have set such a thing in /etc/profile, + ~/.bashrc or any other initialization file (something you should have + never done!!!), please remove that *before* installing glibc. + + Note: This does not apply to the m68k architecture and to non-Linux + kernels. + + -- Aurelien Jarno Tue, 24 Apr 2007 00:26:48 +0200 --- eglibc-2.13.orig/debian/debhelper.in/libc-prof.README.Debian +++ eglibc-2.13/debian/debhelper.in/libc-prof.README.Debian @@ -0,0 +1,23 @@ +README.Debian for libc-prof +--------------------------- + +gprof is the GNU Profiler, a tool used when tracking which functions are +eating CPU in your program. Anyway, you should already be familiar with +it if you got interested by this package. + +This package provides a version of the GNU Libc compiled for profiling +in order to get profiling information from standard library functions +such as malloc, read or open. + +In order to use it, you have to use `-static-libgcc -lc_p' in addition +to the normal `-pg'. `-static-libgcc' is needed to ensure that libgcc +does not pull the dynamic version of the GNU Libc. + +For instance here is how to compile and link myprog.c with profiling: + gcc -g -pg -o myprog.o -c myprog.c + gcc -pg -o myprog myprog.o -static-libgcc -lc_p + +This also works with a command that both compiles and links: + gcc -g -pg -o myprog myprog.c -static-libgcc -lc_p + + -- Aurelien Jarno Sun, 06 Apr 2008 11:28:25 +0200 --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-alt.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/libc-dev-alt.lintian-overrides @@ -0,0 +1,4 @@ +# Those file are actually .o files not package in a ar archive, and +# thus should not be stripped +LIBC-dev-FLAVOR: unstripped-binary-or-object */libieee.a +LIBC-dev-FLAVOR: unstripped-binary-or-object */libmcheck.a --- eglibc-2.13.orig/debian/debhelper.in/libc-alt.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/libc-alt.lintian-overrides @@ -0,0 +1,15 @@ +# libpthread must be stripped specially; GDB needs the non-dynamic +# symbol table in order to load the thread debugging library. +LIBC-FLAVOR: unstripped-binary-or-object */libpthread-2.13.so + +# Those file are actually .o files not package in a ar archive, and +# thus should not be stripped +LIBC-FLAVOR: unstripped-binary-or-object */libieee.a +LIBC-FLAVOR: unstripped-binary-or-object */libmcheck.a + +# ld.so must be executable, otherwise the system will not work +LIBC-FLAVOR: shlib-with-executable-bit */ld-2.13.so 0755 + +# It is normal that the ELF dynamic linker does not need any other +# library +LIBC-FLAVOR: shared-lib-without-dependency-information */ld-2.13.so --- eglibc-2.13.orig/debian/debhelper.in/libc-alt.install +++ eglibc-2.13/debian/debhelper.in/libc-alt.install @@ -0,0 +1,7 @@ +# This file is used for biarch libraries. +TMPDIR/SLIBDIR/*.so* SLIBDIR +TMPDIR/LIBDIR/gconv/* LIBDIR/gconv/ + +TMPDIR/etc/ld.so.conf.d /etc + +BUILD-TREE/test-results-*-FLAVOR usr/share/doc/LIBC-FLAVOR --- eglibc-2.13.orig/debian/debhelper.in/libc.install +++ eglibc-2.13/debian/debhelper.in/libc.install @@ -0,0 +1,7 @@ +TMPDIR/lib/*.so* RTLDDIR +TMPDIR/SLIBDIR/*.so* SLIBDIR +TMPDIR/LIBDIR/gconv/* LIBDIR/gconv + +TMPDIR/etc/ld.so.conf.d /etc + +BUILD-TREE/test-results-*-libc usr/share/doc/LIBC --- eglibc-2.13.orig/debian/debhelper.in/libc.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/libc.lintian-overrides @@ -0,0 +1,13 @@ +# libpthread must be stripped specially; GDB needs the non-dynamic +# symbol table in order to load the thread debugging library. +LIBC: unstripped-binary-or-object */libpthread-2.13.so + +# ld.so must be executable, otherwise the system will not work +LIBC: shlib-with-executable-bit */ld-2.13.so 0755 + +# It is normal that the ELF dynamic linker does not need any other +# library +LIBC: shared-lib-without-dependency-information */ld-2.13.so + +# dependency on debconf is not needed, as glibc has a fallback to tty +LIBC: missing-debconf-dependency-for-preinst --- eglibc-2.13.orig/debian/debhelper.in/locales-all.NEWS +++ eglibc-2.13/debian/debhelper.in/locales-all.NEWS @@ -0,0 +1,8 @@ +locales-all (2.7-1) unstable; urgency=low + + * Starting with locales 2.7-1 the deprecated no_NO locale has been + removed. Users who have not yet switched to nb_NO should do it + after the installation of this package. + + -- Aurelien Jarno Mon, 26 Nov 2007 18:56:32 +0100 + --- eglibc-2.13.orig/debian/debhelper.in/libc.templates +++ eglibc-2.13/debian/debhelper.in/libc.templates @@ -0,0 +1,49 @@ +Template: glibc/upgrade +Type: boolean +Default: true +_Description: Do you want to upgrade glibc now? + Running services and programs that are using NSS need to be restarted, + otherwise they might not be able to do lookup or authentication any more. + The installation process is able to restart some services (such as ssh or + telnetd), but other programs cannot be restarted automatically. One such + program that needs manual stopping and restart after the glibc upgrade by + yourself is xdm - because automatic restart might disconnect your active + X11 sessions. + . + This script detected the following installed services which must be + stopped before the upgrade: ${services} + . + If you want to interrupt the upgrade now and continue later, please + answer No to the question below. + +Template: glibc/restart-services +Type: string +_Description: Services to restart for GNU libc library upgrade: + Running services and programs that are using NSS need to be restarted, + otherwise they might not be able to do lookup or authentication any more + (for services such as ssh, this can affect your ability to login). + Please review the following space-separated list of init.d scripts for + services to be restarted now, and correct it if needed. + . + Note: restarting sshd/telnetd should not affect any existing connections. + +Template: glibc/restart-failed +Type: error +#flag:translate!:3 +_Description: Failure restarting some services for GNU libc upgrade + The following services could not be restarted for the GNU libc library upgrade: + . + ${services} + . + You will need to start these manually by running + '/etc/init.d/ start'. + +Template: glibc/disable-screensaver +Type: error +_Description: xscreensaver and xlockmore must be restarted before upgrading + One or more running instances of xscreensaver or xlockmore have been + detected on this system. Because of incompatible library changes, the + upgrade of the GNU libc library will leave you unable to + authenticate to these programs. You should arrange for these programs + to be restarted or stopped before continuing this upgrade, to avoid + locking your users out of their current sessions. --- eglibc-2.13.orig/debian/debhelper.in/libc-dev.docs +++ eglibc-2.13/debian/debhelper.in/libc-dev.docs @@ -0,0 +1,5 @@ +CONFORMANCE +FAQ +NAMESPACE +README.libm +NOTES --- eglibc-2.13.orig/debian/debhelper.in/libc-otherbuild.postinst +++ eglibc-2.13/debian/debhelper.in/libc-otherbuild.postinst @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ] +then + # /etc/ld.so.nohwcap code: NOHWCAP +fi + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc-otherbuild.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/libc-otherbuild.lintian-overrides @@ -0,0 +1,15 @@ +# libpthread must be stripped specially; GDB needs the non-dynamic +# symbol table in order to load the thread debugging library. +LIBC-FLAVOR: unstripped-binary-or-object */libpthread-2.13.so + +# ld.so must be executable, otherwise the system will not work +LIBC-FLAVOR: shlib-with-executable-bit */ld-2.13.so 0755 + +# It is normal that the ELF dynamic linker does not need any other +# library +LIBC-FLAVOR: shared-lib-without-dependency-information */ld-2.13.so + +# The libraries are installed in an hwcap directory, which contrary +# to what lintian thinks, is controlled by ldconfig +LIBC-FLAVOR: postinst-has-useless-call-to-ldconfig +LIBC-FLAVOR: postrm-has-useless-call-to-ldconfig --- eglibc-2.13.orig/debian/debhelper.in/eglibc-source.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/eglibc-source.lintian-overrides @@ -0,0 +1,28 @@ +# all those files are part of Debian packaging which is provided as part +# of eglibc-source binary package to allow re-use of it for cross +# compiler packages. + +eglibc-source: missing-dep-for-interpreter make => make | build-essential | dpkg-dev (usr/src/glibc/debian/rules) +eglibc-source: shell-script-fails-syntax-check usr/src/glibc/debian/debhelper.in/libc-otherbuild.postinst +eglibc-source: shell-script-fails-syntax-check usr/src/glibc/debian/debhelper.in/libc-otherbuild.postrm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc-alt.preinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc-dev-alt.preinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc-dev-alt.preinst.i386 +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc-otherbuild.postinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc-otherbuild.postrm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc.postinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc.postrm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc.preinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/libc.prerm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/locales-all.postinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/locales-all.prerm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/locales.config +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/locales.postinst +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/locales.postrm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/locales.prerm +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/nscd.init +eglibc-source: script-not-executable usr/src/glibc/debian/debhelper.in/nscd.postrm +eglibc-source: script-not-executable usr/src/glibc/debian/debver2localesdep.pl +eglibc-source: script-not-executable usr/src/glibc/debian/generate-supported.mk +eglibc-source: script-not-executable usr/src/glibc/debian/local/manpages/Makefile +eglibc-source: script-not-executable usr/src/glibc/debian/shlibs-add-udebs --- eglibc-2.13.orig/debian/debhelper.in/libc.prerm +++ eglibc-2.13/debian/debhelper.in/libc.prerm @@ -0,0 +1,70 @@ +#!/bin/sh +set -e +export LC_ALL=C + +type=$1 +if [ "x$2" != "xin-favour" ]; then + preversion=$2 +fi + +restore_lib64_symlink() { +# Downgrading from a version with a /lib64 directory to a version with +# a /lib64 symlink is extremely dangerous. We need to move the +# directory aside and restore the symlink, otherwise the dynamic +# linker gets lost after unpacking the replacing version. + + ldfile=$(readlink -e RTLD_SO) + # Test if libc is of the same architecture as coreutils + # If not, they almost surely have a multiarch system and we can use + # the native ELF interpreter + if ! $ldfile /bin/true 2>/dev/null; then + interpreter= + else + interpreter=$ldfile + fi + + # Create the symlink in /lib again + cp -a RTLD_SO /lib/ + + # sync before and after the operation to reduce the danger of hosing + # the system + sync + # See if they have anything in /lib64 besides the ELF interpreter. + # If yes, move the directory aside so they can restore it later, + # otherwise we just remove it. + if ls -1A /lib64 | grep -vq "^$(basename RTLD_SO)$"; then + echo "Warning: /lib64 not empty during libc downgrade, renaming it to /lib64.eglibc-old" + mv /lib64 /lib64.eglibc-old + else + rm -rf /lib64 + fi + + $interpreter /bin/ln -s /lib /lib64 + sync +} + + +#DEBHELPER# + +if [ "$type" = upgrade ]; then + if dpkg --compare-versions "$preversion" lt 2.13-17; then + if ! test -L /lib64; then + case ${DPKG_MAINTSCRIPT_ARCH:-$(dpkg --print-architecture)} in + amd64 | ppc64 | sparc64) + restore_lib64_symlink ;; + esac + fi + fi +fi + +if [ -n "$preversion" ]; then + if dpkg --compare-versions "$preversion" lt 2.13; then + # downgrading from a multiarch libc to a pre-multiarch libc; we have + # to blow away /etc/ld.so.cache, otherwise the old unpacked libc + # is still first in the cache and segfaults when combined with + # our newly-unpacked ld.so. + rm -f /etc/ld.so.cache + fi +fi + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc.dirs +++ eglibc-2.13/debian/debhelper.in/libc.dirs @@ -0,0 +1 @@ +etc/ld.so.conf.d --- eglibc-2.13.orig/debian/debhelper.in/libc-bin.triggers +++ eglibc-2.13/debian/debhelper.in/libc-bin.triggers @@ -0,0 +1 @@ +interest ldconfig --- eglibc-2.13.orig/debian/debhelper.in/libc-prof.install +++ eglibc-2.13/debian/debhelper.in/libc-prof.install @@ -0,0 +1 @@ +TMPDIR/LIBDIR/*_p.a LIBDIR --- eglibc-2.13.orig/debian/debhelper.in/libc.docs +++ eglibc-2.13/debian/debhelper.in/libc.docs @@ -0,0 +1,4 @@ +BUGS +FAQ +NEWS +hesiod/README.hesiod --- eglibc-2.13.orig/debian/debhelper.in/libc-bin.dirs +++ eglibc-2.13/debian/debhelper.in/libc-bin.dirs @@ -0,0 +1 @@ +usr/lib/locale --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-alt.install +++ eglibc-2.13/debian/debhelper.in/libc-dev-alt.install @@ -0,0 +1,21 @@ +# This file is used for making biarch libraries development packages. +TMPDIR/LIBDIR/libanl.a LIBDIR +TMPDIR/LIBDIR/libBrokenLocale.a LIBDIR +TMPDIR/LIBDIR/libbsd-compat.a LIBDIR +TMPDIR/LIBDIR/libc.a LIBDIR +TMPDIR/LIBDIR/libc_nonshared.a LIBDIR +TMPDIR/LIBDIR/libcrypt.a LIBDIR +TMPDIR/LIBDIR/libdl.a LIBDIR +TMPDIR/LIBDIR/libg.a LIBDIR +TMPDIR/LIBDIR/libieee.a LIBDIR +TMPDIR/LIBDIR/libm.a LIBDIR +TMPDIR/LIBDIR/libmcheck.a LIBDIR +TMPDIR/LIBDIR/libnsl.a LIBDIR +TMPDIR/LIBDIR/libpthread.a LIBDIR +TMPDIR/LIBDIR/libpthread_nonshared.a LIBDIR +TMPDIR/LIBDIR/libresolv.a LIBDIR +TMPDIR/LIBDIR/librt.a LIBDIR +TMPDIR/LIBDIR/libutil.a LIBDIR + +TMPDIR/LIBDIR/*.o LIBDIR +TMPDIR/LIBDIR/*.so LIBDIR --- eglibc-2.13.orig/debian/debhelper.in/nscd.postrm +++ eglibc-2.13/debian/debhelper.in/nscd.postrm @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +case "$1" in + purge) + rm -rf /var/cache/nscd + ;; + *) + ;; +esac + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc.postinst +++ eglibc-2.13/debian/debhelper.in/libc.postinst @@ -0,0 +1,250 @@ +#!/bin/sh +set -e +export LC_ALL=C + +type=$1 +preversion=$2 + +package_name() +{ + echo LIBC +} + +# element() is a helper function for file-rc: +element() { + local element list IFS + + element="$1" + + [ "$2" = "in" ] && shift + list="$2" + [ "$list" = "-" ] && return 1 + [ "$list" = "*" ] && return 0 + + IFS="," + set -- $list + case $element in + "$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9") + return 0 + esac + return 1 +} + +# filerc (runlevel, service) returns /etc/init.d/service, if service is +# running in $runlevel: +filerc() { + local runlevel basename + runlevel=$1 + basename=$2 + while read LINE + do + case $LINE in + \#*|"") continue + esac + + set -- $LINE + SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4" + [ "$CMD" = "/etc/init.d/$basename" ] || continue + + if element "$runlevel" in "$START" || element "S" in "$START" + then + echo "/etc/init.d/$basename" + return 0 + fi + done < /etc/runlevel.conf + echo "" +} + +checkpkgver () { + local status pkg + pkg=$1 + status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g') + if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then + echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//'); + fi +} + +if [ "$type" = "configure" ] +then + # Add support for /etc/ld.so.conf.d + if [ -e /etc/ld.so.conf ]; then + [ -z "$(tail -n 1 /etc/ld.so.conf)" ] || echo >> /etc/ld.so.conf + else + touch /etc/ld.so.conf + fi + if ! grep -q '^include /etc/ld.so.conf.d/.*\.conf$' /etc/ld.so.conf ; then + echo 'include /etc/ld.so.conf.d/*.conf' >> /etc/ld.so.conf + fi + + # We don't use a registry anymore, remove the old file + rm -f /etc/ld.so.hwcappkgs + + # /etc/ld.so.nohwcap code: NOHWCAP + + # Load debconf module if available + if [ -f /usr/share/debconf/confmodule ] ; then + . /usr/share/debconf/confmodule + fi + + if [ -n "$preversion" ]; then + if [ ! -d /var/mail ] && [ ! -L /var/mail ]; then + ln -sf spool/mail /var/mail + fi + if dpkg --compare-versions "$preversion" lt 2.13-0ubuntu1; then + # LP #504198 + if which locale-gen >/dev/null; then + locale-gen --purge + fi + fi + if dpkg --compare-versions "$preversion" lt 2.13; then + check="apache2.2-common apache apache-ssl apache-perl autofs at" + check="$check boa cucipop courier-authdaemon cron cups exim" + check="$check exim4-base dovecot-common cucipop incron lprng lpr" + check="$check lpr-ppd mysql-server nis openbsd-inetd" + check="$check openldapd proftpd postfix postfix-tls rsync samba" + check="$check sasl2-bin slapd smail sendmail snmpd ssh" + check="$check spamassassin vsftpd wu-ftpd wu-ftpd-academ wwwoffle" + check="$check webmin dropbear gdm" + # NSS services check: NSS_CHECK + if [ -n "$services" ]; then + + if [ -f /usr/share/debconf/confmodule ] ; then + db_version 2.0 + db_reset glibc/restart-services + db_set glibc/restart-services "$services" + if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then + db_input medium glibc/restart-services || true + else + db_input critical glibc/restart-services || true + fi + db_go || true + db_get glibc/restart-services + if [ "x$RET" != "x" ] + then + services="$RET" + else + services="" + fi + else + echo + echo "Name Service Switch update in the C Library: post-installation question." + echo + echo "Running services and programs that are using NSS need to be restarted," + echo "otherwise they might not be able to do lookup or authentication any more" + echo "(for services such as ssh, this can affect your ability to login)." + echo "Note: restarting sshd/telnetd should not affect any existing connections." + echo + echo "The services detected are: " + echo " $services" + echo + echo "If other services have begun to fail mysteriously after this upgrade, it is" + echo "probably necessary to restart them too. We recommend that you reboot your" + echo "machine after the upgrade to avoid NSS-related troubles." + echo + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" = noninteractive ]; then + echo "Non-interactive mode, restarting services" + answer=yes + else + echo -n "Do you wish to restart services? [Y/n] " + read answer + case $answer in + N*|n*) services="" ;; + *) ;; + esac + fi + fi + echo + if [ "$services" != "" ]; then + echo "Restarting services possibly affected by the upgrade:" + failed="" + for service in $services; do + if [ -x /lib/init/readlink ] && [ "$(/lib/init/readlink /etc/init.d/$service)" = /lib/init/upstart-job ]; then + idl="restart" + idlopt="${service}" + elif [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + idl="invoke-rc.d ${service}" + idlopt="restart" + elif [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then + idl=$(filerc $rl $service) + idlopt="restart" + else + idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1) + idlopt="restart" + fi + case "$service" in + gdm) + # old gdm uses initscript, we need + # to restart it. note that we do + # not need to do anything for new + # gdm that uses upstart job, so this + # special case can be removed after lucid + if [ "$idlopt" = restart ]; then + echo -n " $service: reloading..." + idlopt="reload" + if $idl $idlopt > /dev/null 2>&1; then + echo "done." + else + echo "FAILED! ($?)" + failed="$service $failed" + fi + fi + ;; + *) + echo -n " $service: restarting..." + if $idl $idlopt > /dev/null 2>&1; then + echo "done." + else + echo "FAILED! ($?)" + failed="$service $failed" + fi + ;; + esac + done + echo + if [ -n "$failed" ]; then + if [ -f /usr/share/debconf/confmodule ] ; then + db_fset glibc/restart-failed seen false + db_subst glibc/restart-failed services "$failed" + if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then + db_input medium glibc/restart-failed || true + else + db_input critical glibc/restart-failed || true + fi + db_go || true + else + echo "The following services failed to start: $failed" + echo + echo "You will need to start these manually by running \`/etc/init.d/ start'" + echo "If the service still fails to start, you may need to file a bug on" + echo "$(package_name) or the service involved." + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" != noninteractive ]; then + echo + echo -n "Press ENTER to continue: " + read foo + fi + fi + else + echo "Services restarted successfully." + fi + fi + # Shut down the frontend, to make sure none of the + # restarted services keep a connection open to it + if [ -f /usr/share/debconf/confmodule ] ; then + db_stop + fi + else + echo "Nothing to restart." + fi + fi # end upgrading and $preversion lt 2.13 + fi # Upgrading + + # Upstart cannot be restarted without losing all of its state, so + # umountroot will run 'telinit u' on reboot if this file exists + touch /var/run/init.upgraded +fi + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-alt.preinst.i386 +++ eglibc-2.13/debian/debhelper.in/libc-dev-alt.preinst.i386 @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + (upgrade|install) + # We want /usr/include/{bits,fpu_control.h,gnu,sys} to become + # directories or files instead of symlinks. + for dir in bits fpu_control.h gnu sys ; do + if test -h /usr/include/$dir ; then + rm -rf /usr/include/$dir + fi + done + ;; + (*) + ;; +esac --- eglibc-2.13.orig/debian/debhelper.in/locales.links +++ eglibc-2.13/debian/debhelper.in/locales.links @@ -0,0 +1 @@ +etc/locale.alias usr/share/locale/locale.alias --- eglibc-2.13.orig/debian/debhelper.in/libc-dev.install +++ eglibc-2.13/debian/debhelper.in/libc-dev.install @@ -0,0 +1,21 @@ +TMPDIR/LIBDIR/libanl.a LIBDIR +TMPDIR/LIBDIR/libBrokenLocale.a LIBDIR +TMPDIR/LIBDIR/libbsd-compat.a LIBDIR +TMPDIR/LIBDIR/libc.a LIBDIR +TMPDIR/LIBDIR/libc_nonshared.a LIBDIR +TMPDIR/LIBDIR/libcrypt.a LIBDIR +TMPDIR/LIBDIR/libdl.a LIBDIR +TMPDIR/LIBDIR/libg.a LIBDIR +TMPDIR/LIBDIR/libieee.a LIBDIR +TMPDIR/LIBDIR/libm.a LIBDIR +TMPDIR/LIBDIR/libmcheck.a LIBDIR +TMPDIR/LIBDIR/libnsl.a LIBDIR +TMPDIR/LIBDIR/libpthread.a LIBDIR +TMPDIR/LIBDIR/libpthread_nonshared.a LIBDIR +TMPDIR/LIBDIR/libresolv.a LIBDIR +TMPDIR/LIBDIR/librpcsvc.a LIBDIR +TMPDIR/LIBDIR/librt.a LIBDIR +TMPDIR/LIBDIR/libutil.a LIBDIR +TMPDIR/LIBDIR/*.o LIBDIR +TMPDIR/LIBDIR/*.so LIBDIR +TMPDIR/usr/include/* usr/include --- eglibc-2.13.orig/debian/debhelper.in/nscd.dirs +++ eglibc-2.13/debian/debhelper.in/nscd.dirs @@ -0,0 +1 @@ +var/cache/nscd --- eglibc-2.13.orig/debian/debhelper.in/libc-pic.dirs +++ eglibc-2.13/debian/debhelper.in/libc-pic.dirs @@ -0,0 +1 @@ +LIBDIR/libc_pic --- eglibc-2.13.orig/debian/debhelper.in/locales.install +++ eglibc-2.13/debian/debhelper.in/locales.install @@ -0,0 +1,8 @@ +debian/tmp-libc/usr/share/locale/[a-z][a-z] usr/share/locale +debian/tmp-libc/usr/share/locale/[a-z][a-z]_[A-Z][A-Z] usr/share/locale +debian/tmp-libc/usr/share/locale/locale.alias /etc +debian/tmp-libc/usr/share/i18n/* usr/share/i18n +debian/local/usr_sbin/locale-gen usr/sbin +debian/local/usr_sbin/update-locale usr/sbin +debian/local/usr_sbin/validlocale usr/sbin +localedata/README usr/share/doc/locales --- eglibc-2.13.orig/debian/debhelper.in/locales-all.prerm +++ eglibc-2.13/debian/debhelper.in/locales-all.prerm @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +case "$1" in + remove|purge) + # Is locales installed? + if [ -x /usr/sbin/locale-gen ] ; then + # If yes, generate locales selected in the debconf question + locale-gen + fi + ;; + *) + ;; +esac + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc-otherbuild.install +++ eglibc-2.13/debian/debhelper.in/libc-otherbuild.install @@ -0,0 +1,5 @@ +# This file is used for making NPTL and other +# optimized libraries. +TMPDIR/SLIBDIR/*.so* SLIBDIR + +BUILD-TREE/test-results-*-FLAVOR usr/share/doc/LIBC-FLAVOR --- eglibc-2.13.orig/debian/debhelper.in/glibc-doc.info +++ eglibc-2.13/debian/debhelper.in/glibc-doc.info @@ -0,0 +1 @@ +DEB_SRCDIR/manual/*.info* --- eglibc-2.13.orig/debian/debhelper.in/libc-otherbuild.postrm +++ eglibc-2.13/debian/debhelper.in/libc-otherbuild.postrm @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ]; then + # /etc/ld.so.nohwcap code: NOHWCAP +fi + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-alt.preinst +++ eglibc-2.13/debian/debhelper.in/libc-dev-alt.preinst @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e + +case $1 in + (upgrade|install) + # We want /usr/include/bits and /usr/include/gnu to become + # symlinks + if ! test -h /usr/include/bits ; then + rm -rf /usr/include/bits + fi + if ! test -h /usr/include/gnu ; then + rm -rf /usr/include/gnu + fi + + # We want /usr/include/sys to be a normal directory instead + # of a symlink + if test -h /usr/include/sys ; then + rm -f /usr/include/sys + fi + ;; + (*) + ;; +esac --- eglibc-2.13.orig/debian/debhelper.in/libnss-dns-udeb.install +++ eglibc-2.13/debian/debhelper.in/libnss-dns-udeb.install @@ -0,0 +1,3 @@ +# FIXME: someday we may need to handle installing into non-lib. +TMPDIR/SLIBDIR/libnss_dns*.so* lib + --- eglibc-2.13.orig/debian/debhelper.in/locales.README.Debian +++ eglibc-2.13/debian/debhelper.in/locales.README.Debian @@ -0,0 +1,17 @@ +locales +------- + + * Starting with locales 2.7-3, users can provide their own locales in + addition to the ones provided by the package. They will be handled + as other locales in the various scripts. + + Each user defined locale has to be provided as a single file and + placed in the /usr/local/share/i18n/locales/ directory. The list of + user defined locales should be placed, one by line, in the file + /usr/local/share/i18n/SUPPORTED. You can have a look to the locales + provided by the locales package in /usr/share/i18n/ for more details. + + To enable the new locales, just run 'dpkg-reconfigure locales' and + select the new locales. + + -- Aurelien Jarno Thu 29 Nov 2007 18:54:12 +0100 --- eglibc-2.13.orig/debian/debhelper.in/locales.dirs +++ eglibc-2.13/debian/debhelper.in/locales.dirs @@ -0,0 +1 @@ +usr/lib/locale --- eglibc-2.13.orig/debian/debhelper.in/locales-all.dirs +++ eglibc-2.13/debian/debhelper.in/locales-all.dirs @@ -0,0 +1 @@ +usr/lib/locale --- eglibc-2.13.orig/debian/debhelper.in/libc-bin.postinst +++ eglibc-2.13/debian/debhelper.in/libc-bin.postinst @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +if [ "x$1" = xtriggered ] +then + LDCONFIG_NOTRIGGER=y + export LDCONFIG_NOTRIGGER + echo ldconfig deferred processing now taking place + ldconfig || ldconfig --verbose + exit 0 +fi + +#DEBHELPER# --- eglibc-2.13.orig/debian/debhelper.in/glibc-doc.manpages +++ eglibc-2.13/debian/debhelper.in/glibc-doc.manpages @@ -0,0 +1,8 @@ +linuxthreads/man/pthread_atfork.3thr +linuxthreads/man/pthread_condattr_init.3thr +linuxthreads/man/pthread_cond_init.3thr +linuxthreads/man/pthread_key_create.3thr +linuxthreads/man/pthread_mutexattr_init.3thr +linuxthreads/man/pthread_mutexattr_setkind_np.3thr +linuxthreads/man/pthread_mutex_init.3thr +linuxthreads/man/pthread_once.3thr --- eglibc-2.13.orig/debian/debhelper.in/nscd.init +++ eglibc-2.13/debian/debhelper.in/nscd.init @@ -0,0 +1,126 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: nscd +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Starts the Name Service Cache Daemon +### END INIT INFO + +# +# nscd: Starts the Name Service Cache Daemon +# +# description: This is a daemon which handles passwd and group lookups +# for running programs and caches the results for the next +# query. You should start this daemon only if you use +# slow Services like NIS or NIS+ + +PATH="/sbin:/usr/sbin:/bin:/usr/bin" +NAME="nscd" +DESC="Name Service Cache Daemon" +DAEMON="/usr/sbin/nscd" +PIDFILE="/var/run/nscd/nscd.pid" + +# Sanity checks. +umask 022 +[ -f /etc/nscd.conf ] || exit 0 +[ -x "$DAEMON" ] || exit 0 +[ -d /var/run/nscd ] || mkdir -p /var/run/nscd +. /lib/lsb/init-functions + +start_nscd() +{ + # Return + # 0 if daemon has been started or was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 0 + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" || return 2 +} + +stop_nscd() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + + # we try to stop using nscd --shutdown, that fails also if nscd is not present. + # in that case, fallback to "good old methods" + RETVAL=0 + if ! $DAEMON --shutdown; then + start-stop-daemon --stop --quiet --pidfile "$PIDFILE" --name "$NAME" --test > /dev/null + RETVAL="$?" + [ "$?" -ne 0 -a "$?" -ne 1 ] && return 2 + fi + + # Wait for children to finish too + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec "$DAEMON" > /dev/null + [ "$?" -ne 0 -a "$?" -ne 1 ] && return 2 + rm -f "$PIDFILE" + return "$RETVAL" +} + +status() +{ + # Return + # 0 if daemon is stopped + # 1 if daemon is running + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1 + return 0 +} + +case "$1" in +start) + log_daemon_msg "Starting $DESC" "$NAME" + start_nscd + case "$?" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_warning_msg " (already running)." ; exit 0 ;; + *) log_end_msg 1 ; exit 1 ;; + esac + ;; +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + stop_nscd + case "$?" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_warning_msg " (not running)." ; exit 0 ;; + *) log_end_msg 1 ; exit 1 ;; + esac + ;; +restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + for table in passwd group hosts ; do + $DAEMON --invalidate $table + done + stop_nscd + case "$?" in + 0|1) + start_nscd + case "$?" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_failure_msg " (failed -- old process is still running)." ; exit 1 ;; + *) log_failure_msg " (failed to start)." ; exit 1 ;; + esac + ;; + *) + log_failure_msg " (failed to stop)." + exit 1 + ;; + esac + ;; +status) + log_daemon_msg "Status of $DESC service: " + status + case "$?" in + 0) log_failure_msg "not running." ; exit 3 ;; + 1) log_success_msg "running." ; exit 0 ;; + esac + ;; +*) + echo "Usage: /etc/init.d/$NAME {start|stop|force-reload|restart|status}" >&2 + exit 1 + ;; +esac + --- eglibc-2.13.orig/debian/debhelper.in/libc-udeb.install +++ eglibc-2.13/debian/debhelper.in/libc-udeb.install @@ -0,0 +1,13 @@ +# FIXME: someday we may need to handle installing into non-lib. +TMPDIR/SLIBDIR/ld*.so* lib +TMPDIR/SLIBDIR/libm-*.so* lib +TMPDIR/SLIBDIR/libm.so* lib +TMPDIR/SLIBDIR/libdl*.so* lib +TMPDIR/SLIBDIR/libresolv*.so* lib +TMPDIR/SLIBDIR/libc-*.so* lib +TMPDIR/SLIBDIR/libc.so* lib +TMPDIR/SLIBDIR/libutil* lib +TMPDIR/SLIBDIR/libcrypt* lib +TMPDIR/SLIBDIR/librt*.so* lib +TMPDIR/SLIBDIR/libpthread*.so* lib + --- eglibc-2.13.orig/debian/debhelper.in/libc-udeb.install.hurd-i386 +++ eglibc-2.13/debian/debhelper.in/libc-udeb.install.hurd-i386 @@ -0,0 +1,11 @@ +# FIXME: someday we may need to handle installing into non-lib. +TMPDIR/SLIBDIR/ld*.so* lib +TMPDIR/SLIBDIR/libm-*.so* lib +TMPDIR/SLIBDIR/libm.so* lib +TMPDIR/SLIBDIR/libdl*.so* lib +TMPDIR/SLIBDIR/libresolv*.so* lib +TMPDIR/SLIBDIR/libc-*.so* lib +TMPDIR/SLIBDIR/libc.so* lib +TMPDIR/SLIBDIR/libutil* lib +TMPDIR/SLIBDIR/libcrypt* lib +TMPDIR/SLIBDIR/librt*.so* lib --- eglibc-2.13.orig/debian/debhelper.in/locales.templates +++ eglibc-2.13/debian/debhelper.in/locales.templates @@ -0,0 +1,27 @@ +Template: locales/locales_to_be_generated +Type: multiselect +#flag:translate:1 +__Choices: All locales, ${locales} +_Description: Locales to be generated: + Locales are a framework to switch between multiple languages and + allow users to use their language, country, characters, collation + order, etc. + . + Please choose which locales to generate. UTF-8 locales should be + chosen by default, particularly for new installations. Other + character sets may be useful for backwards compatibility with older + systems and software. + +Template: locales/default_environment_locale +Type: select +#flag:translate:1 +__Choices: None, ${locales} +Default: None +_Description: Default locale for the system environment: + Many packages in Debian use locales to display text in the correct + language for the user. You can choose a default locale for the system + from the generated locales. + . + This will select the default language for the entire system. If this + system is a multi-user system where not all users are able to speak + the default language, they will experience difficulties. --- eglibc-2.13.orig/debian/debhelper.in/locales.config +++ eglibc-2.13/debian/debhelper.in/locales.config @@ -0,0 +1,92 @@ +#! /bin/sh +set -e + +# Files +LG="/etc/locale.gen" +EE="/etc/default/locale" + +# Sanitize environnement +LC_ALL=C +LANG=C + +# Load debconf +. /usr/share/debconf/confmodule +db_version 2.0 +db_capb backup multiselect + +# Conversion of locales that have been removed +convert_locale() +{ + echo "$1" | sed -e "s/no_NO/nb_NO/g" -e 's/ks_IN/ks_IN@devanagari/g' +} + +# List of locales provided by the current version +PROVIDED_LOCALES="__PROVIDED_LOCALES__" + +# List of locales provided by the user +if [ -f /usr/local/share/i18n/SUPPORTED ] ; then + USER_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' /usr/local/share/i18n/SUPPORTED)" +fi + +# List of locales in /etc/locale.gen +if [ -e $LG ]; then + GEN_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' $LG)" + GEN_LOCALES="$(convert_locale "$GEN_LOCALES")" +fi + +# List of supported locales (PROVIDED_LOCALES + USER_LOCALES + GEN_LOCALES) +SUPPORTED_LOCALES="$(printf '%s\n' "$PROVIDED_LOCALES" "$USER_LOCALES" "$GEN_LOCALES" | grep -v "^$" | sort -u | tr '\n' ',' | sed -e 's/, */, /g' -e 's/, *$//g')" +db_subst locales/locales_to_be_generated locales "$SUPPORTED_LOCALES" + +# Get the list of selected locales from /etc/locale.gen +if [ -e /etc/locale.gen ]; then + if [ -L $LG ] && [ "$(readlink $LG)" = "/usr/share/i18n/SUPPORTED" ]; then + SELECTED_LOCALES="All locales" + else + SELECTED_LOCALES="$(echo "$GEN_LOCALES" | sort -u | tr '\n' ',' | sed -e 's/, */, /g' -e 's/, *$//g')" + fi + db_set locales/locales_to_be_generated "$SELECTED_LOCALES" +fi + +DEFAULT_ENVIRONMENT="$(cat /etc/environment /etc/default/locale 2>/dev/null | awk '/^LANG=/ {gsub("\"", ""); sub("LANG=", ""); lang=$0;} END {print lang}')" +DEFAULT_ENVIRONMENT="$(convert_locale "$DEFAULT_ENVIRONMENT")" +if ! echo "$SUPPORTED_LOCALES" | grep -q -e "\b$DEFAULT_ENVIRONMENT\b" ; then + db_set locales/default_environment_locale "$DEFAULT_ENVIRONMENT" +fi + +STATE=1 +while [ "$STATE" -ge 0 ]; do + case "$STATE" in + 0) + exit 1 + ;; + 1) + db_input medium locales/locales_to_be_generated || true + ;; + 2) + db_get locales/locales_to_be_generated || RET= + if expr ", $RET," : ".*, None,.*" >/dev/null 2>&1; then + # "None" was a choice in older packages + db_set locales/locales_to_be_generated "" + RET= + elif expr ", $RET," : ".*, All locales,.*" >/dev/null 2>&1; then + # When "All locales" is selected, other choices have to be dropped + db_set locales/locales_to_be_generated "All locales" + RET=$SUPPORTED_LOCALES + fi + DEFAULT_LOCALES="$(echo $RET | sed -e 's/ [^ ]*,/,/g' -e 's/ [^ ]*$//')" + if [ -n "$DEFAULT_LOCALES" ]; then + db_subst locales/default_environment_locale locales $DEFAULT_LOCALES + db_input medium locales/default_environment_locale || true + fi + ;; + *) + break + ;; + esac + if db_go; then + STATE=$(($STATE + 1)) + else + STATE=$(($STATE - 1)) + fi +done --- eglibc-2.13.orig/debian/debhelper.in/libc-bin.install +++ eglibc-2.13/debian/debhelper.in/libc-bin.install @@ -0,0 +1,21 @@ +debian/local/etc/* /etc +nis/nss /etc/default +posix/gai.conf /etc +debian/tmp-libc/sbin/ldconfig sbin +debian/tmp-libc/usr/bin/catchsegv usr/bin +debian/tmp-libc/usr/bin/getconf usr/bin +debian/tmp-libc/usr/bin/getent usr/bin +debian/tmp-libc/usr/bin/iconv usr/bin +debian/tmp-libc/usr/bin/ldd usr/bin +debian/tmp-libc/usr/bin/localedef usr/bin +debian/tmp-libc/usr/bin/locale usr/bin +debian/tmp-libc/usr/bin/tzselect usr/bin +debian/tmp-libc/usr/lib/pt_chown usr/lib +debian/tmp-libc/usr/sbin/iconvconfig usr/sbin +debian/tmp-libc/usr/sbin/rpcinfo usr/bin +debian/tmp-libc/usr/sbin/zdump usr/bin +debian/tmp-libc/usr/sbin/zic usr/sbin +BUILD-TREE/C.UTF-8 usr/lib/locale + +debian/local/usr_sbin/update-locale usr/sbin +debian/local/usr_sbin/validlocale usr/sbin --- eglibc-2.13.orig/debian/debhelper.in/libc.postrm +++ eglibc-2.13/debian/debhelper.in/libc.postrm @@ -0,0 +1,24 @@ +#! /bin/sh +set -e + +if [ "$1" = remove ]; then + if command -v suidunregister >/dev/null 2>&1 && [ -e /etc/suid.conf ]; then + if [ -x /usr/lib/pt_chown ]; then + suidunregister -s LIBC /usr/lib/pt_chown + elif [ -x /usr/libexec/pt_chown ]; then + suidunregister -s LIBC /usr/libexec/pt_chown + fi + fi +fi + +if [ "$1" = deconfigure ]; then + :; # blah, do something useful with ldso +fi + +#if [ "$1" = purge ]; then +# update-rc.d mountkernfs remove > /dev/null +#fi + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/libc-dev.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/libc-dev.lintian-overrides @@ -0,0 +1,4 @@ +# Those file are actually .o files not package in a ar archive, and +# thus should not be stripped +LIBC-dev: unstripped-binary-or-object */libieee.a +LIBC-dev: unstripped-binary-or-object */libmcheck.a --- eglibc-2.13.orig/debian/debhelper.in/locales.postrm +++ eglibc-2.13/debian/debhelper.in/locales.postrm @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +case "$1" in + purge) + rm -f /etc/locale.gen + rm -f /etc/default/locale + ;; + *) + ;; +esac + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/locales.manpages +++ eglibc-2.13/debian/debhelper.in/locales.manpages @@ -0,0 +1,4 @@ +debian/local/manpages/locale-gen.8 +debian/local/manpages/locale.gen.5 +debian/local/manpages/update-locale.8 +debian/local/manpages/validlocale.8 --- eglibc-2.13.orig/debian/debhelper.in/glibc-doc.links +++ eglibc-2.13/debian/debhelper.in/glibc-doc.links @@ -0,0 +1,18 @@ +usr/share/man/man3/pthread_condattr_init.3.gz usr/share/man/man3/pthread_condattr_destroy.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_signal.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_broadcast.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_wait.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_timedwait.3.gz +usr/share/man/man3/pthread_cond_init.3.gz usr/share/man/man3/pthread_cond_destroy.3.gz +usr/share/man/man3/pthread_key_create.3.gz usr/share/man/man3/pthread_getspecific.3.gz +usr/share/man/man3/pthread_key_create.3.gz usr/share/man/man3/pthread_key_delete.3.gz +usr/share/man/man3/pthread_key_create.3.gz usr/share/man/man3/pthread_setspecific.3.gz +usr/share/man/man3/pthread_mutexattr_init.3.gz usr/share/man/man3/pthread_mutexattr_destroy.3.gz +usr/share/man/man3/pthread_mutexattr_init.3.gz usr/share/man/man3/pthread_mutexattr_settype.3.gz +usr/share/man/man3/pthread_mutexattr_init.3.gz usr/share/man/man3/pthread_mutexattr_gettype.3.gz +usr/share/man/man3/pthread_mutexattr_setkind_np.3.gz usr/share/man/man3/pthread_mutexattr_getkind_np.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_lock.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_trylock.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_unlock.3.gz +usr/share/man/man3/pthread_mutex_init.3.gz usr/share/man/man3/pthread_mutex_destroy.3.gz +usr/share/doc/glibc-doc/html/libc.html usr/share/doc/glibc-doc/html/index.html --- eglibc-2.13.orig/debian/debhelper.in/locales-all.install +++ eglibc-2.13/debian/debhelper.in/locales-all.install @@ -0,0 +1 @@ +BUILD-TREE/locales-all/usr/lib/locale/* /usr/lib/locale --- eglibc-2.13.orig/debian/debhelper.in/nscd.install +++ eglibc-2.13/debian/debhelper.in/nscd.install @@ -0,0 +1,3 @@ +debian/tmp-libc/usr/sbin/nscd usr/sbin +nscd/nscd.conf /etc + --- eglibc-2.13.orig/debian/debhelper.in/glibc-doc.doc-base +++ eglibc-2.13/debian/debhelper.in/glibc-doc.doc-base @@ -0,0 +1,24 @@ +Document: glibc-manual +Title: The GNU C Library Reference Manual +Author: Sandra Loosemore with Richard M. Stallman, Roland McGrath, + Andrew Oram, and Ulrich Drepper +Abstract: The GNU C Library Reference Manual + The GNU C library, described in this document, defines all of the + library functions that are specified by the ISO C standard, as well as + additional features specific to POSIX and other derivatives of the Unix + operating system, and extensions specific to the GNU system. + . + The purpose of this manual is to tell you how to use the facilities + of the GNU library. We have mentioned which features belong to which + standards to help you identify things that are potentially non-portable + to other systems. But the emphasis in this manual is not on strict + portability. +Section: Apps/Programming + +Format: info +Index: /usr/share/info/libc.info.gz +Files: /usr/share/info/libc.* + +Format: HTML +Index: /usr/share/doc/glibc-doc/html/index.html +Files: /usr/share/doc/glibc-doc/html/* --- eglibc-2.13.orig/debian/debhelper.in/libnss-files-udeb.install +++ eglibc-2.13/debian/debhelper.in/libnss-files-udeb.install @@ -0,0 +1,3 @@ +# FIXME: someday we may need to handle installing into non-lib. +TMPDIR/SLIBDIR/libnss_files*.so* lib + --- eglibc-2.13.orig/debian/debhelper.in/libc-bin.lintian-overrides +++ eglibc-2.13/debian/debhelper.in/libc-bin.lintian-overrides @@ -0,0 +1,10 @@ +# ldconfig must be executable even when the libc is not configured, and +# thus must be linked statically +libc-bin: statically-linked-binary ./sbin/ldconfig + +# pt_chown must be setuid root, otherwise non-root users won't be able +# to login +libc-bin: setuid-binary usr/lib/pt_chown 4755 root/root + +# libc-bin depending on libc6 make apt crazy... +libc-bin: missing-depends-line --- eglibc-2.13.orig/debian/debhelper.in/libc-dev.install.hurd-i386 +++ eglibc-2.13/debian/debhelper.in/libc-dev.install.hurd-i386 @@ -0,0 +1,21 @@ +TMPDIR/LIBDIR/libBrokenLocale.a LIBDIR +TMPDIR/LIBDIR/libbsd-compat.a LIBDIR +TMPDIR/LIBDIR/libc.a LIBDIR +TMPDIR/LIBDIR/libcrt.a LIBDIR +TMPDIR/LIBDIR/libcrt_nonshared.a LIBDIR +TMPDIR/LIBDIR/libcrypt.a LIBDIR +TMPDIR/LIBDIR/libdl.a LIBDIR +TMPDIR/LIBDIR/libg.a LIBDIR +TMPDIR/LIBDIR/libhurduser.a LIBDIR +TMPDIR/LIBDIR/libieee.a LIBDIR +TMPDIR/LIBDIR/libm.a LIBDIR +TMPDIR/LIBDIR/libmachuser.a LIBDIR +TMPDIR/LIBDIR/libmcheck.a LIBDIR +TMPDIR/LIBDIR/libnsl.a LIBDIR +TMPDIR/LIBDIR/libresolv.a LIBDIR +TMPDIR/LIBDIR/librpcsvc.a LIBDIR +TMPDIR/LIBDIR/librt.a LIBDIR +TMPDIR/LIBDIR/libutil.a LIBDIR +TMPDIR/LIBDIR/*.o LIBDIR +TMPDIR/LIBDIR/*.so LIBDIR +TMPDIR/usr/include/* usr/include --- eglibc-2.13.orig/debian/debhelper.in/locales-all.postinst +++ eglibc-2.13/debian/debhelper.in/locales-all.postinst @@ -0,0 +1,14 @@ +#!/bin/sh +set -e +export LC_ALL=C + +if [ "$1" = "configure" ]; then + # Remove existing locale-archive, otherwise they are prefered + # to the ones in this package + rm -f /usr/lib/locale/locale-archive 2>/dev/null || true +fi + +#DEBHELPER# + +exit 0 + --- eglibc-2.13.orig/debian/debhelper.in/libc.preinst +++ eglibc-2.13/debian/debhelper.in/libc.preinst @@ -0,0 +1,441 @@ +#!/bin/sh +set -e +export LC_ALL=C + +type=$1 +preversion=$2 + +rm_conffile() { + local PKGNAME="$1" + local CONFFILE="$2" + + [ -e "$CONFFILE" ] || return 0 + + local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')" + local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \ + sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")" + if [ "$md5sum" != "$old_md5sum" ]; then + echo "Obsolete conffile $CONFFILE has been modified by you." + echo "Saving as $CONFFILE.dpkg-bak ..." + mv -f "$CONFFILE" "$CONFFILE".dpkg-bak + else + echo "Removing obsolete conffile $CONFFILE ..." + rm -f "$CONFFILE" + fi +} + +linux_compare_versions () { + verA=$(($(echo "$1" | sed 's/^\([0-9]*\.[0-9]*\)\([^.0-9]\|$\)/\1.0\2/; s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'))) + verB=$(($(echo "$3" | sed 's/^\([0-9]*\.[0-9]*\)\([^.0-9]\|$\)/\1.0\2/; s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'))) + + test $verA -$2 $verB +} + +kfreebsd_compare_versions () { + verA=$(($(echo "$1" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\1 \* 100 + \2/'))) + verB=$(($(echo "$3" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\1 \* 100 + \2/'))) + + test $verA -$2 $verB +} + +kernel26_help() { + echo "" + echo "The installation of a 2.6 kernel _could_ ask you to install a new libc" + echo "first, this is NOT a bug, and should *NOT* be reported. In that case," + echo "please add lenny sources to your /etc/apt/sources.list and run:" + echo " apt-get install -t lenny linux-image-2.6" + echo "Then reboot into this new kernel, and proceed with your upgrade" +} + +# Sanity check. +# If there are versions of glibc outside of the normal installation +# location (/lib, /lib64, etc.) then things may break very badly +# as soon as ld.so is replaced by a new version. This check is not +# foolproof, but it's pretty accurate. This script ignores libraries +# with different sonames, and libraries incompatible with the +# to-be-installed ld.so. +check_dir () { + msg=$1 + dir=$2 + + # Follow symlinks + dir=$(readlink -e $dir || true) + + # Ignore inexistent directories + if ! test -d "$dir" ; then + return + fi + + # Detect possible candidates + files=$(ls $dir | egrep '^(ld|lib(d|c|m|pthread|rt|dl))-2.*.so' 2>/dev/null || true) + if test -z "$files" ; then + return + fi + + for file in $files ; do + lib=$dir/$file + + # Skip if it is a symlink (as installed by lsb-core) + if test -L "$lib" ; then + continue + fi + + # Skip if it is the currently dynamic loader + if test "$lib" = "$ldfile" ; then + continue + fi + + # See if the found libraries are compatible with the system ld.so; + # if they aren't, they'll be ignored. Check e_ident, e_type (which + # will just be ET_DYN), and e_machine. If a match is found, there + # is a risk of breakage. + libbytes=`head -c 20 $lib | od -c` + if test "$ldbytes" != "$libbytes" ; then + continue + fi + + # Binaries owned packages are considered to do the right thing + # First try a quick lookup which should catch all cases on a + # normal system + if echo $libcfiles | grep -q "[ ^]$lib[ $]" ; then + continue + fi + + # Slower lookup to confirm + if dpkg-query -S "$lib" >/dev/null 2>&1 ; then + continue + fi + + # Output an error message and exit + echo + echo "A copy of the C library was found $msg:" + echo " '$lib'" + echo "It is not safe to upgrade the C library in this situation;" + echo "please remove that copy of the C library or get it out of" + echo "'$dir' and try again." + echo + exit 1 + done +} + +# On upgrade, if /lib64 is a symlink, remove it and replace it with a real +# directory so we can ensure biarch and multiarch packages play nicely +# together +remove_lib64_symlink() { + ldfile=$(readlink -e RTLD_SO) + # Test if libc is of the same architecture as /bin/mv + # If not, they almost surely have a multiarch system and we can use + # the native ELF interpreter + if ! $ldfile /bin/mv --version >/dev/null 2>&1; then + interpreter= + else + interpreter=$ldfile + fi + + mkdir /lib64.eglibc-new + ln -s $ldfile /lib64.eglibc-new/$(basename RTLD_SO) + # sync before and after the operation to reduce the danger of hosing + # the system + sync + rm -f /lib64 + $interpreter /bin/mv /lib64.eglibc-new /lib64 + sync + rm -f /lib/$(basename RTLD_SO) +} + +if [ "$type" = upgrade ] +then + # Remove old /etc/init.d/glibc.sh init script + if dpkg --compare-versions "$preversion" le "2.9-22"; then + rm_conffile LIBC "/etc/init.d/glibc.sh" + update-rc.d glibc.sh remove >/dev/null + fi + + # Load debconf module if available + if [ -f /usr/share/debconf/confmodule ] ; then + . /usr/share/debconf/confmodule + fi + + if [ -n "$preversion" ]; then + # NSS authentication trouble guard + if dpkg --compare-versions "$preversion" lt 2.13; then + if pidof xscreensaver xlockmore >/dev/null; then + if [ -f /usr/share/debconf/confmodule ] ; then + db_version 2.0 + db_reset glibc/disable-screensaver + db_input critical glibc/disable-screensaver || true + db_go || true + else + echo "xscreensaver and xlockmore must be restarted before upgrading" + echo + echo "One or more running instances of xscreensaver or xlockmore have been" + echo "detected on this system. Because of incompatible library changes, the" + echo "upgrade of the GNU C library will leave you unable to authenticate to" + echo "these programs. You should arrange for these programs to be restarted" + echo "or stopped before continuing this upgrade, to avoid locking your users" + echo "out of their current sessions." + echo + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" = noninteractive ]; then + echo "Non-interactive mode, upgrade glibc forcibly" + else + echo -n "Press a key to continue" + read answer + fi + echo + fi + fi + + check="kdm postgresql xdm" + # NSS services check: NSS_CHECK + if [ -n "$services" ]; then + if [ -f /usr/share/debconf/confmodule ] ; then + db_version 2.0 + db_reset glibc/upgrade + db_subst glibc/upgrade services $services + if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then + db_input medium glibc/upgrade || true + else + db_input critical glibc/upgrade || true + fi + db_go || true + db_get glibc/upgrade + answer=$RET + else + echo "Do you want to upgrade glibc now?" + echo + echo "Running services and programs that are using NSS need to be restarted," + echo "otherwise they might not be able to do lookup or authentication any more." + echo "The installation process is able to restart some services (such as ssh or" + echo "telnetd), but other programs cannot be restarted automatically. One such" + echo "program that needs manual stopping and restart after the glibc upgrade by" + echo "yourself is xdm - because automatic restart might disconnect your active" + echo "X11 sessions." + echo + echo "This script detected the following installed services which must be" + echo "stopped before the upgrade: $services" + echo + echo "If you want to interrupt the upgrade now and continue later, please" + echo "answer No to the question below." + echo + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" = noninteractive ]; then + echo "Non-interactive mode, upgrade glibc forcibly" + answer=true + else + echo -n "Do you want to upgrade glibc now? [Y/n] " + read answer + case $answer in + Y*|y*) answer=true ;; + N*|n*) answer=false ;; + *) answer=true ;; + esac + fi + echo + fi + + if [ "x$answer" != "xtrue" ]; then + echo "Stopped glibc upgrade. Please retry the upgrade after you have" + echo "checked or stopped services by hand." + exit 1 + fi + fi + fi # end upgrading and $preversion lt 2.13 + fi # Upgrading + + # This will keep us from using hwcap libs (optimized) during an + # upgrade. + touch /etc/ld.so.nohwcap + + # Try to detect copies of the libc library in the various places + # the dynamic linker uses. + ldfile=$(readlink -e RTLD_SO) + ldbytes=$(head -c 20 RTLD_SO | od -c) + libcfiles=$(dpkg-query -L LIBC 2>/dev/null) + + dirs="SLIBDIR /lib /lib/tls /lib32 /lib64 /usr/local/lib /usr/local/lib32 /usr/local/lib64" + for dir in $dirs ; do + check_dir "in an unexpected directory" $dir + done + + if test -n "$LD_LIBRARY_PATH"; then + dirs=$(echo $LD_LIBRARY_PATH | sed 's/:/ /g') + for dir in $dirs ; do + check_dir "via LD_LIBRARY_PATH" $dir + done + fi + + if test -e /etc/ld.so.conf; then + dirs=$(echo $(cat /etc/ld.so.conf)) + if test -n "$dirs" ; then + for dir in $dirs ; do + check_dir "via /etc/ld.so.conf" $dir + done + fi + fi + + if [ -e /lib/tls/i686/cmov/libc.so.6 ] || [ -e /lib/i686/cmov/libc.so.6 ] ; then + status_i686=$(dpkg -s libc6-i686 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g') + status_xen=$(dpkg -s libc6-xen 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g') + if ([ -z "$status_i686" ] || [ "$status_i686" = "not-installed" ] || [ "$status_i686" = "config-files" ]) && \ + ([ -z "$status_xen" ] || [ "$status_xen" = "not-installed" ] || [ "$status_xen" = "config-files" ]); then + echo + echo "A non-dpkg owned copy of the libc6-i686 package was found." + echo "It is not safe to upgrade the C library in this situation;" + echo "please remove that copy of the C library and try again." + echo + exit 1 + fi + fi +fi + +if [ "$type" != abort-upgrade ] +then + # See if LD_LIBRARY_PATH contains the traditional /lib, but not the + # multiarch path + dirs=$(echo $LD_LIBRARY_PATH | sed 's/:/ /g') + for dir in $dirs ; do + dir=$(readlink -e $dir || true) + case "$dir" in + /lib) + seen_traditional=1 + ;; + SLIBDIR) + seen_multiarch=1 + ;; + esac + done + if test -n "$seen_traditional" && test -z "$seen_multiarch" ; then + echo + echo "LD_LIBRARY_PATH contains the traditional /lib directory," + echo "but not the multiarch directory SLIBDIR." + echo "It is not safe to upgrade the C library in this situation;" + echo "please remove the /lib/directory from LD_LIBRARY_PATH and" + echo "try again." + echo + exit 1 + fi + + if [ -n "$LD_ASSUME_KERNEL" ] ; then + if dpkg --compare-versions "$LD_ASSUME_KERNEL" le "2.6.1"; then + echo + echo "POSIX threads library NPTL requires kernel version 2.6.1" + echo "or later. It appears that LD_ASSUME_KERNEL is set to $LD_ASSUME_KERNEL." + echo "It is not safe to upgrade the C library in this situation;" + echo "Please unset this environment variable and try again." + echo + exit 1 + fi + fi + + # glibc kernel version check + system=`uname -s` + if [ "$system" = "Linux" ] + then + # Test to make sure z < 255, in x.y.z-n form of kernel version + # Also make sure we don't trip on x.y.zFOO-n form + kernel_rev=$(uname -r | sed 's/\([0-9]*\.\)\{1,2\}\([0-9]*\)\(.*\)/\2/') + if [ "$kernel_rev" -ge 255 ] + then + echo "WARNING: Your kernel version indicates a revision number" + echo "of 255 or greater. Glibc has a number of built in" + echo "assumptions that this revision number is less than 255." + echo "If you\'ve built your own kernel, please make sure that any" + echo "custom version numbers are appended to the upstream" + echo "kernel number with a dash or some other delimiter." + echo + exit 1 + fi + + # sanity checking for the appropriate kernel on each architecture. + realarch=`uname -m` + kernel_ver=`uname -r` + + # convert "armv4l" and similar to just "arm", and "mips64" and similar + # to just "mips" + case $realarch in + arm*) realarch="arm";; + mips*) realarch="mips";; + esac + + # The GNU libc requires a >= 2.6.18 kernel, except on m68k where a + # 2.6.32 kernel is needed. + if [ "$realarch" != m68k ] + then + # Ubuntu buildd limitation: allow just 2.6.15, although 2.6.18 is required + # for some patches + #if linux_compare_versions "$kernel_ver" lt 2.6.18 + vmin=2.6.15 + else + vmin=2.6.32 + fi + if linux_compare_versions "$kernel_ver" lt ${vmin} + then + echo WARNING: this version of the GNU libc requires kernel version + echo ${vmin} or later. Please upgrade your kernel before installing + echo glibc. + kernel26_help + + exit 1 + fi + + # From glibc 2.6-3 SPARC V8 support is dropped. + if [ "$realarch" = sparc ] + then + # The process could be run using linux32, check for /proc. + if [ -f /proc/cpuinfo ] + then + case "$(sed '/^type/!d;s/^type.*: //g' /proc/cpuinfo)" in + sun4u) + # UltraSPARC CPU + ;; + sun4v) + # Niagara CPU + ;; + *) + echo "WARNING: This machine has a SPARC V8 or earlier class processor." + echo "Debian lenny and later does not support such old hardware" + echo "any longer." + exit 1 + ;; + esac + fi + fi + elif [ $system = "GNU/kFreeBSD" ] ; then + kernel_ver=`uname -r` + if kfreebsd_compare_versions "$kernel_ver" lt 8.0 + then + echo WARNING: this version of the GNU libc requires kernel version + echo 8.0 or later. Please upgrade your kernel before installing + echo glibc. + exit 1 + fi + fi +fi + +#DEBHELPER# + +case $type in + upgrade|abort-upgrade) + if test -L /lib64 && dpkg --compare-versions "$2" lt 2.13-17; then + case ${DPKG_MAINTSCRIPT_ARCH:-$(dpkg --print-architecture)} in + amd64 | ppc64 | sparc64) + remove_lib64_symlink + ;; + esac + fi + ;; +esac + +if [ -n "$preversion" ]; then + if dpkg --compare-versions "$preversion" lt 2.13; then + # upgrading from a pre-multiarch libc to a multiarch libc; we have + # to blow away /etc/ld.so.cache, otherwise the old unpacked libc + # is still first in the cache and segfaults when combined with + # our newly-unpacked ld.so. Do this last to avoid slowing down the + # rest of the upgrade. + rm -f /etc/ld.so.cache + fi +fi + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/locales.postinst +++ eglibc-2.13/debian/debhelper.in/locales.postinst @@ -0,0 +1,80 @@ +#! /bin/sh +set -e + +# Files +LG="/etc/locale.gen" +EE="/etc/default/locale" + +# Sanitize environnement +LC_ALL=C +LANG=C + +if [ "$1" = configure ]; then + # Load debconf + . /usr/share/debconf/confmodule + db_version 2.0 + + db_get locales/default_environment_locale && DEFAULT_ENVIRONMENT="$RET" + db_get locales/locales_to_be_generated && SELECTED_LOCALES=$RET + SELECTED_LOCALES="$(echo $SELECTED_LOCALES | sed -e 's/, /\n/g')" + + if [ "$SELECTED_LOCALES" = "All locales" ]; then + [ -e $LG ] && rm -f $LG + ln -s /usr/share/i18n/SUPPORTED $LG + else + [ -L $LG ] && [ "$(readlink $LG)" = "/usr/share/i18n/SUPPORTED" ] && rm -f $LG + if [ ! -e $LG ] ; then + cat > $LG << EOF +# This file lists locales that you wish to have built. You can find a list +# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add +# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change +# this file, you need to rerun locale-gen. +# + +EOF + fi + + # Comment previous defined locales + sed -i -e 's/^ *[a-zA-Z]/# &/' $LG + + # Get list of supported locales + if [ -f "/usr/local/share/i18n/SUPPORTED" ] ; then + SUPPORTED_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' /usr/share/i18n/SUPPORTED /usr/local/share/i18n/SUPPORTED | sort -u)" + else + SUPPORTED_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' /usr/share/i18n/SUPPORTED | sort -u)" + fi + + # Make sure all locales exist in locales.gen + echo "$SUPPORTED_LOCALES" | while read locale ; do + if ! grep -q "^[# ]*$locale *\$" $LG; then + echo "# $locale" >> $LG + fi + done + + # Uncomment selected locales + echo "$SELECTED_LOCALES" | while read locale ; do + sed -i -e "0,/^[# ]*$locale *$/ s/^[# ]*$locale *$/$locale/" $LG + done + fi + + # Update requested locales if locales-all is not installed + if dpkg-query -S locales-all >/dev/null 2>&1 ; then + echo "locales-all installed, skipping locales generation" + else + locale-gen + fi + + if ! [ -e $EE ] || [ -n "$DEBCONF_RECONFIGURE" ] ; then + # Remove previous definitions + update-locale --no-checks LANG + + # Set default LANG environment variable + if [ -n "$DEFAULT_ENVIRONMENT" ] && [ "$DEFAULT_ENVIRONMENT" != "None" ]; then + update-locale "LANG=$DEFAULT_ENVIRONMENT" + fi + fi +fi + +#DEBHELPER# + +exit 0 --- eglibc-2.13.orig/debian/debhelper.in/nscd.manpages +++ eglibc-2.13/debian/debhelper.in/nscd.manpages @@ -0,0 +1,2 @@ +debian/local/manpages/nscd.conf.5 +debian/local/manpages/nscd.8 --- eglibc-2.13.orig/debian/debhelper.in/locales.NEWS +++ eglibc-2.13/debian/debhelper.in/locales.NEWS @@ -0,0 +1,28 @@ +locales (2.7-3) unstable; urgency=low + + * Starting with locales 2.7-3, users can provide their own locales in + /usr/local/share/i18n. See /usr/share/doc/locales/README.Debian for + more information. + + -- Aurelien Jarno Thu, 29 Nov 2007 18:54:12 +0100 + +locales (2.7-1) unstable; urgency=low + + * Starting with locales 2.7-1 the deprecated no_NO locale has been + removed. The switch to the nb_NO locale should be done automatically + by this package, however some applications may have to be restarted + in order to recognize the new locale settings. + + -- Aurelien Jarno Mon, 26 Nov 2007 18:56:32 +0100 + +locales (2.3.6-7) unstable; urgency=low + + * Locale variables are now stored in /etc/default/locale and no more + /etc/environment. The reason is that Debian Policy forbids modifying + configuration files of other packages, and /etc/environment is a + configuration file for PAM. + Make sure to remove old definitions from /etc/environment, this file + is no more modified for the reason explained above. + + -- Denis Barbier Tue, 11 Apr 2006 21:24:13 +0200 + --- eglibc-2.13.orig/debian/debhelper.in/eglibc-source.install +++ eglibc-2.13/debian/debhelper.in/eglibc-source.install @@ -0,0 +1 @@ +BUILD-TREE/eglibc-*.tar.xz /usr/src/glibc --- eglibc-2.13.orig/debian/debhelper.in/glibc-doc.install +++ eglibc-2.13/debian/debhelper.in/glibc-doc.install @@ -0,0 +1,5 @@ +ChangeLog* /usr/share/doc/glibc-doc +nptl/ChangeLog* /usr/share/doc/glibc-doc/nptl +nptl_db/ChangeLog* /usr/share/doc/glibc-doc/nptl_db +ports/ChangeLog* /usr/share/doc/glibc-doc/ports +DEB_SRCDIR/manual/*.html usr/share/doc/glibc-doc/html --- eglibc-2.13.orig/debian/debhelper.in/libc-dev-bin.install +++ eglibc-2.13/debian/debhelper.in/libc-dev-bin.install @@ -0,0 +1,4 @@ +debian/tmp-libc/usr/bin/gencat usr/bin +debian/tmp-libc/usr/bin/mtrace usr/bin +debian/tmp-libc/usr/bin/rpcgen usr/bin +debian/tmp-libc/usr/bin/sprof usr/bin --- eglibc-2.13.orig/debian/control.in/powerpc +++ eglibc-2.13/debian/control.in/powerpc @@ -0,0 +1,24 @@ +Package: libc6-powerpc +Architecture: ppc64 +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 32bit powerpc shared libraries for ppc64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for ppc64 systems. + +Package: libc6-dev-powerpc +Architecture: ppc64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-powerpc (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32bit powerpc development libraries for ppc64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for ppc64 systems. + --- eglibc-2.13.orig/debian/control.in/amd64 +++ eglibc-2.13/debian/control.in/amd64 @@ -0,0 +1,25 @@ +Package: libc6-amd64 +Architecture: i386 +Section: libs +Priority: standard +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Conflicts: amd64-libs (<= 1.2) +Description: Embedded GNU C Library: 64bit Shared libraries for AMD64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for AMD64 systems. + +Package: libc6-dev-amd64 +Architecture: i386 +Section: libdevel +Priority: optional +Depends: libc6-amd64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Conflicts: libc6-dev (<< 2.13-14) +Replaces: amd64-libs-dev (<= 1.2), libc6-dev (<< 2.13-11) +Provides: lib64c-dev +Description: Embedded GNU C Library: 64bit Development Libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for AMD64 systems. + --- eglibc-2.13.orig/debian/control.in/libnss-files-udeb +++ eglibc-2.13/debian/control.in/libnss-files-udeb @@ -0,0 +1,13 @@ +Package: libnss-files-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: Embedded GNU C Library: NSS helper for files - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the files NSS helper needed for the Debian installer. + Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/libc +++ eglibc-2.13/debian/control.in/libc @@ -0,0 +1,89 @@ +Package: @libc@ +Architecture: @archs@ +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: @libc@-dev +Architecture: @archs@ +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: @libc@ (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: @libc@-dbg +Architecture: @archs@ +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: @libc@ (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: @libc@-prof +Architecture: @archs@ +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: @libc@ (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: @libc@-pic +Architecture: @archs@ +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: @libc@ (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: @libc@-udeb +XC-Package-Type: udeb +Architecture: @archs@ +Section: debian-installer +Priority: extra +Provides: @libc@, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/libc0.1 +++ eglibc-2.13/debian/control.in/libc0.1 @@ -0,0 +1,89 @@ +Package: libc0.1 +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.1-dev +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc0.1 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.1-dbg +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc0.1-prof +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.1-pic +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.1-udeb +XC-Package-Type: udeb +Architecture: kfreebsd-i386 kfreebsd-amd64 +Section: debian-installer +Priority: extra +Provides: libc0.1, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/i386 +++ eglibc-2.13/debian/control.in/i386 @@ -0,0 +1,25 @@ +Package: libc6-i386 +Architecture: amd64 +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Replaces: libc6-dev-i386 +Conflicts: ia32-libs (<= 1.5) +Description: Embedded GNU C Library: 32-bit shared libraries for AMD64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for AMD64 systems. + +Package: libc6-dev-i386 +Architecture: amd64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc6-i386 (<= 2.9-18), libc6-dev (<< 2.13-14), ia32-libs-dev (<< 1.18) +Depends: libc6-i386 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32-bit development libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for AMD64 systems. + --- eglibc-2.13.orig/debian/control.in/libc6 +++ eglibc-2.13/debian/control.in/libc6 @@ -0,0 +1,89 @@ +Package: libc6 +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6-dev +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc6 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6-dbg +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc6-prof +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6-pic +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6-udeb +XC-Package-Type: udeb +Architecture: amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb +Section: debian-installer +Priority: extra +Provides: libc6, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/kfreebsd-i386 +++ eglibc-2.13/debian/control.in/kfreebsd-i386 @@ -0,0 +1,24 @@ +Package: libc0.1-i386 +Architecture: kfreebsd-amd64 +Section: libs +Priority: optional +Depends: libc0.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 32bit shared libraries for AMD64 + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the 32bit version of the library, meant for AMD64 systems. + +Package: libc0.1-dev-i386 +Architecture: kfreebsd-amd64 +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc0.1-dev (<< 2.13-14) +Replaces: libc0.1-dev (<< 2.13-11) +Depends: libc0.1-i386 (= ${binary:Version}), libc0.1-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32bit development libraries for AMD64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library, meant for AMD64 systems. + --- eglibc-2.13.orig/debian/control.in/s390x +++ eglibc-2.13/debian/control.in/s390x @@ -0,0 +1,24 @@ +Package: libc6-s390x +Architecture: s390 +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 64bit Shared libraries for IBM zSeries + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for zSeries systems. + +Package: libc6-dev-s390x +Architecture: s390 +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-s390x (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for IBM zSeries + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for zSeries systems. + --- eglibc-2.13.orig/debian/control.in/s390 +++ eglibc-2.13/debian/control.in/s390 @@ -0,0 +1,24 @@ +Package: libc6-s390 +Architecture: s390x +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 32bit Shared libraries for IBM zSeries + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 32bit version + of the library. + +Package: libc6-dev-s390 +Architecture: s390x +Section: libdevel +Priority: optional +Provides: lib32c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-s390 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 32bit Development Libraries for IBM zSeries + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 32bit version of the + library. + --- eglibc-2.13.orig/debian/control.in/ppc64 +++ eglibc-2.13/debian/control.in/ppc64 @@ -0,0 +1,24 @@ +Package: libc6-ppc64 +Architecture: powerpc +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 64bit Shared libraries for PowerPC64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for PowerPC64 systems. + +Package: libc6-dev-ppc64 +Architecture: powerpc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-ppc64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for PowerPC64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for PowerPC64 systems. + --- eglibc-2.13.orig/debian/control.in/main +++ eglibc-2.13/debian/control.in/main @@ -0,0 +1,137 @@ +Source: eglibc +Section: libs +Priority: required +Build-Depends: gettext, make (>= 3.80), dpkg-dev (>= 1.16.0), bzip2, xz-utils, file, quilt, + texinfo, texi2html, + autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 7.4.3), tar (>= 1.22), fdupes, + linux-libc-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], + mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], gnumach-dev [hurd-i386], libpthread-stubs0-dev [hurd-i386], + kfreebsd-kernel-headers [kfreebsd-i386 kfreebsd-amd64], + binutils (>= 2.20-3), binutils (>= 2.21) [sparc sparc64], + g++-4.6, g++-4.6-multilib [amd64 armel armhf i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc] +Build-Depends-Indep: perl, po-debconf (>= 1.0) +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: GNU Libc Maintainers +Uploaders: Clint Adams , Aurelien Jarno +Standards-Version: 3.9.2 +XS-Debian-Vcs-Browser: http://svn.debian.org/wsvn/pkg-glibc/glibc-package/ +XS-Debian-Vcs-Svn: svn://svn.debian.org/pkg-glibc/glibc-package/ +Homepage: http://www.eglibc.org + +Package: libc-bin +Architecture: any +Section: libs +Priority: required +Essential: yes +Multi-Arch: foreign +Depends: ${misc:Depends} +Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10) +Replaces: libc0.1, libc0.3, libc6, libc6.1 +Description: Embedded GNU C Library: Binaries + This package contains utility programs related to the GNU C Library. + . + * catchsegv: catch segmentation faults in programs + * getconf: query system configuration variables + * getent: get entries from administrative databases + * iconv, iconvconfig: convert between character encodings + * ldd, ldconfig: print/configure shared library dependencies + * locale, localedef: show/generate locale definitions + * rpcinfo: report RPC information + * tzselect, zdump, zic: select/dump/compile time zones + +Package: libc-dev-bin +Architecture: any +Section: libdevel +Priority: optional +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends} +Recommends: manpages-dev +Replaces: libc0.1-dev, libc0.3-dev, libc6-dev, libc6.1-dev +Description: Embedded GNU C Library: Development binaries + This package contains utility programs related to the GNU C Library + development package. + +Package: glibc-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Provides: glibc-doc-reference +Conflicts: glibc-doc-reference +Replaces: glibc-doc-reference +Description: Embedded GNU C Library: Documentation + Contains The GNU C Library Reference manual in info and html format + as well as the man pages for libpthread functions and the complete + GNU C Library ChangeLog. + +Package: eglibc-source +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends} +Recommends: xz-utils +Description: Embedded GNU C Library: sources + This package contains the sources and patches which are needed to + build eglibc. + +Package: locales +Architecture: all +Section: localization +Priority: standard +Depends: ${locale:Depends}, ${misc:Depends}, debconf | debconf-2.0 +Conflicts: base-config, belocs-locales-bin, belocs-locales-data +Replaces: base-config, lliurex-belocs-locales-data +Description: Embedded GNU C Library: National Language (locale) data [support] + Machine-readable data files, shared objects and programs used by the + C library for localization (l10n) and internationalization (i18n) support. + . + This package contains the libc.mo i18n files, plus tools to generate + locale definitions from source files (included in this package). It + allows you to customize which definitions actually get + generated. This is a space-saver over how this package used to be, + with all locales generated by default. This created a package that + unpacked to an excess of 30 megs. + +Package: locales-all +Architecture: any +Section: localization +Priority: extra +Multi-Arch: foreign +Pre-Depends: dpkg (>= 1.15.6) +Depends: ${locale:Depends}, ${misc:Depends}, lzma +Provides: locales +Description: Embedded GNU C Library: Precompiled locale data + This package contains the precompiled locale data for all supported locales. + A better alternative is to install the locales package and only select + desired locales, but it can be useful on a low-memory machine because some + locale files take a lot of memory to be compiled. + +Package: nscd +Architecture: any +Section: admin +Multi-Arch: foreign +Priority: optional +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Embedded GNU C Library: Name Service Cache Daemon + A daemon which handles passwd, group and host lookups + for running programs and caches the results for the next + query. You should install this package only if you use + slow services like LDAP, NIS or NIS+. + +Package: multiarch-support +Architecture: any +Multi-Arch: foreign +Depends: ${misc:Depends}, + libc6 (>= 2.3.6-2) [!any-i386 !alpha !armhf !ia64 !hurd-any !kfreebsd-any], + libc6.1 (>= 2.3.6-2) [alpha ia64], + libc0.3 (>= 2.3.6-2) [!linux-any !kfreebsd-any !hurd-i386], + libc0.1 (>= 2.3.6-2) [!linux-any !hurd-any !kfreebsd-i386], + libc6 (>= 2.13-0ubuntu6) [armhf i386], + libc0.3 (>= 2.13-0ubuntu6) [hurd-i386], + libc0.1 (>= 2.13-0ubuntu6) [kfreebsd-i386], +Priority: standard +Description: Transitional package to ensure multiarch compatibility + This is a transitional package used to ensure multiarch support is present + in ld.so before unpacking libraries to the multiarch directories. It can + be removed once nothing on the system depends on it. + --- eglibc-2.13.orig/debian/control.in/libc6.1 +++ eglibc-2.13/debian/control.in/libc6.1 @@ -0,0 +1,89 @@ +Package: libc6.1 +Architecture: alpha ia64 +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc6.1-dev +Architecture: alpha ia64 +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc6.1 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc6.1-dbg +Architecture: alpha ia64 +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc6.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc6.1-prof +Architecture: alpha ia64 +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc6.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc6.1-pic +Architecture: alpha ia64 +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc6.1 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc6.1-udeb +XC-Package-Type: udeb +Architecture: alpha ia64 +Section: debian-installer +Priority: extra +Provides: libc6.1, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/sparc64 +++ eglibc-2.13/debian/control.in/sparc64 @@ -0,0 +1,25 @@ +Package: libc6-sparc64 +Architecture: sparc +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + +Package: libc6-dev-sparc64 +Architecture: sparc +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-sparc64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for UltraSPARC + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for UltraSPARC systems. + --- eglibc-2.13.orig/debian/control.in/mips64 +++ eglibc-2.13/debian/control.in/mips64 @@ -0,0 +1,24 @@ +Package: libc6-mips64 +Architecture: mips mipsel +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: 64bit Shared libraries for MIPS64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for MIPS64 systems. + +Package: libc6-dev-mips64 +Architecture: mips mipsel +Section: libdevel +Priority: optional +Provides: lib64c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-mips64 (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: 64bit Development Libraries for MIPS64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the 64bit version of the + library, meant for MIPS64 systems. + --- eglibc-2.13.orig/debian/control.in/mipsn32 +++ eglibc-2.13/debian/control.in/mipsn32 @@ -0,0 +1,24 @@ +Package: libc6-mipsn32 +Architecture: mips mipsel +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: n32 Shared libraries for MIPS64 + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the n32 version + of the library, meant for MIPS64 systems. + +Package: libc6-dev-mipsn32 +Architecture: mips mipsel +Section: libdevel +Priority: optional +Provides: libn32c-dev +Conflicts: libc6-dev (<< 2.13-14) +Replaces: libc6-dev (<< 2.13-11) +Depends: libc6-mipsn32 (= ${binary:Version}), libc6-dev-mips64 (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: n32 Development Libraries for MIPS64 + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the n32 version of the + library, meant for MIPS64 systems. + --- eglibc-2.13.orig/debian/control.in/libc0.3 +++ eglibc-2.13/debian/control.in/libc0.3 @@ -0,0 +1,89 @@ +Package: libc0.3 +Architecture: hurd-i386 +Section: libs +Priority: required +Multi-Arch: same +Depends: libc-bin (= ${binary:Version}), hurd (>= 20070606-1+SVN) [hurd-i386], libgcc1 [!hppa !m68k], libgcc2 [m68k], libgcc4 [hppa], tzdata +Recommends: libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386] +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: ${locale-compat:Depends}, libc6-i686 [i386], libc6-sparcv9b [sparc sparc64] +Conflicts: tzdata-etch, tzdata (<< 2007k-1), prelink (<< 0.0.20090925), belocs-locales-bin, libc6-i686 [i386], libc6-amd64 [amd64], libc6-ppc64 [ppc64], libc6-s390x [s390x], libc6-sparc64 [sparc64] +Replaces: belocs-locales-bin, + libc6-amd64 [amd64], + libc6-i386 [i386], + libc0.1-i386 [kfreebsd-i386], + libc6-powerpc [powerpc], + libc6-ppc64 [ppc64], + libc6-s390x [s390x], + libc6-sparc64 [sparc64] +Breaks: nscd (<< 2.13) +Description: Embedded GNU C Library: Shared libraries + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + +Package: libc0.3-dev +Architecture: hurd-i386 +Section: libdevel +Priority: optional +Multi-Arch: same +Depends: libc0.3 (= ${binary:Version}), libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386], libpthread-stubs0-dev [hurd-i386] +Recommends: gcc | c-compiler +Suggests: glibc-doc, manpages-dev +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gnat-4.4-base (<< 4.4.6-1ubuntu3), gcc-4.4-base (<< 4.4.6-3ubuntu1), gcj-4.4-base (<< 4.4.6-2ubuntu2), gcc-4.4 (<< 4.4.6-3ubuntu1), gcc-4.5-base (<< 4.5.3-1ubuntu2), gcj-4.5-base (<< 4.5.3-1ubuntu2), gcc-4.5 (<< 4.5.3-1ubuntu2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3) +Description: Embedded GNU C Library: Development Libraries and Header Files + Contains the symlinks, headers, and object files needed to compile + and link programs which use the standard C library. + +Package: libc0.3-dbg +Architecture: hurd-i386 +Section: debug +Priority: extra +Multi-Arch: same +Provides: libc-dbg +Pre-Depends: dpkg (>= 1.15.6) +Depends: libc0.3 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: detached debugging symbols + This package contains the detached debugging symbols for the GNU C + library. + +Package: libc0.3-prof +Architecture: hurd-i386 +Section: libdevel +Priority: extra +Multi-Arch: same +Depends: libc0.3 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: Profiling Libraries + Static libraries compiled with profiling info (-pg) suitable for use + with gprof. + +Package: libc0.3-pic +Architecture: hurd-i386 +Section: libdevel +Priority: optional +Multi-Arch: same +Conflicts: libc-pic +Provides: libc-pic, glibc-pic +Depends: libc0.3 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: PIC archive library + Contains an archive library (ar file) composed of individual shared objects. + This is used for creating a library which is a smaller subset of the + standard libc shared library. The reduced library is used on the Debian + boot floppies. If you are not making your own set of Debian boot floppies + using the `boot-floppies' package, you probably don't need this package. + +Package: libc0.3-udeb +XC-Package-Type: udeb +Architecture: hurd-i386 +Section: debian-installer +Priority: extra +Provides: libc0.3, libc-udeb, ${locale-compat:Depends} +Description: Embedded GNU C Library: Shared libraries - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains a minimal set of libraries needed for the Debian + installer. Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/opt +++ eglibc-2.13/debian/control.in/opt @@ -0,0 +1,176 @@ +Package: libc6-sparcv9v +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${binary:Version}) +Description: Embedded GNU C Library: Shared libraries [v9v optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparcv9v2 +Architecture: sparc +Section: libs +Priority: extra +Pre-Depends: libc6 (= ${binary:Version}) +Description: Embedded GNU C Library: Shared libraries [v9v2 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for SUN4V Niagara 2 and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara 2 and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparc64b +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${binary:Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC [v9b optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for UltraSPARC-III and derivative + processors. It only needs to be installed on machines using + UltraSPARC-III and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparc64v +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${binary:Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC [v9v optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for SUN4V Niagara and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-sparc64v2 +Architecture: sparc +Section: base +Priority: extra +Depends: libc6 (= ${binary:Version}), lib64gcc1 +Conflicts: gcc-3.0 (<< 1:3.0.4ds3-11), libgcc1 (<< 1:3.0.4ds3-11), fakeroot (<< 0.4.5-2.7) +Description: Embedded GNU C Library: 64bit Shared libraries for UltraSPARC [v9v2 optimized] + This package includes shared versions of the standard C library and the + standard math library, as well as many others. This is the 64bit version + of the library, meant for UltraSPARC systems. + . + This set of libraries is optimized for SUN4V Niagara 2 and derivative + processors. It only needs to be installed on machines using + SUN4V Niagara 2 and derivatives. If you install this on a machine without + such chips, it won't even be used. + +Package: libc6-xen +Architecture: i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc6 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [Xen version] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Xen hypervisor, and will be + selected instead when running under Xen. + +Package: libc0.1-i686 +Architecture: kfreebsd-i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc0.1 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used on an i686 class CPU (check the output of `uname -m'). This includes + Pentium Pro, Pentium II/III/IV, Celeron CPU's and similar class CPU's + (including clones such as AMD Athlon/Opteron, VIA C3 Nehemiah, but not VIA + C3 Ezla). + +Package: libc0.3-i686 +Architecture: hurd-i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc0.3 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [i686 optimized] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for i686 machines, and will only be + used on an i686 class CPU (check the output of `uname -m'). This includes + Pentium Pro, Pentium II/III/IV, Celeron CPU's and similar class CPU's + (including clones such as AMD Athlon/Opteron, VIA C3 Nehemiah, but not VIA + C3 Ezla). + +Package: libc0.3-xen +Architecture: hurd-i386 +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc0.3 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries [Xen version] + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Xen hypervisor, and will be + selected instead when running under Xen. + +Package: libc6.1-alphaev67 +Architecture: alpha +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc6.1 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries (EV67 optimized) + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Alpha EV67. It only + needs to be installed on Alpha EV67/68 and EV7 machines. If you install + this on an older machine, it won't even be used. + +Package: libc6-loongson2f +Architecture: mipsel +Section: libs +Priority: extra +Multi-Arch: same +Pre-Depends: libc6 (= ${binary:Version}) +Depends: ${misc:Depends} +Description: Embedded GNU C Library: Shared libraries (Loongson 2F optimized) + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C + library and the standard math library, as well as many others. + . + This set of libraries is optimized for the Loongson 2F. It only + needs to be installed on Lemote Loongson 2F machines. If you install + this on a non-Loongson, it won't even be used. + --- eglibc-2.13.orig/debian/control.in/libnss-dns-udeb +++ eglibc-2.13/debian/control.in/libnss-dns-udeb @@ -0,0 +1,13 @@ +Package: libnss-dns-udeb +XC-Package-Type: udeb +Architecture: any +Section: debian-installer +Priority: extra +Description: Embedded GNU C Library: NSS helper for DNS - udeb + Contains the standard libraries that are used by nearly all programs on + the system. This package includes shared versions of the standard C library + and the standard math library, as well as many others. + . + This package contains the DNS NSS helper needed for the Debian installer. + Do not install it on a normal system. + --- eglibc-2.13.orig/debian/control.in/armel +++ eglibc-2.13/debian/control.in/armel @@ -0,0 +1,21 @@ +Package: libc6-armel +Architecture: armhf +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: ARM softfp shared libraries for armhf + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the ARM softfp version of the library, meant for armhf systems. + +Package: libc6-dev-armel +Architecture: armhf +Section: libdevel +Priority: optional +Depends: libc6-armel (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: ARM softfp development libraries for armhf + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the ARM softfp version of the + library, meant for armhf systems. + --- eglibc-2.13.orig/debian/control.in/armhf +++ eglibc-2.13/debian/control.in/armhf @@ -0,0 +1,21 @@ +Package: libc6-armhf +Architecture: armel +Section: libs +Priority: optional +Depends: libc6 (= ${binary:Version}), ${misc:Depends} +Description: Embedded GNU C Library: ARM hard float shared libraries for armel + This package includes shared versions of the standard C + library and the standard math library, as well as many others. + This is the ARM hard float version of the library, meant for armel systems. + +Package: libc6-dev-armhf +Architecture: armel +Section: libdevel +Priority: optional +Depends: libc6-armhf (= ${binary:Version}), libc6-dev (= ${binary:Version}), ${misc:Depends} +Recommends: gcc-multilib +Description: Embedded GNU C Library: ARM hard float development libraries for armel + Contains the symlinks and object files needed to compile and link programs + which use the standard C library. This is the ARM hard float version of the + library, meant for armel systems. + --- eglibc-2.13.orig/debian/po/hu.po +++ eglibc-2.13/debian/po/hu.po @@ -0,0 +1,184 @@ +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2007-04-20 10:55+0100\n" +"Last-Translator: SZERVÃC Attila \n" +"Language-Team: Hungarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Hungarian\n" +"X-Poedit-Country: HUNGARY\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Minden helyi beállítás" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Létrehozandó helyi beállítások:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"A helyi beállítások (locales) egy nyelveket váltó keretrendszer, mely " +"lehetÅ‘vé teszi, hogy a felhasználó saját nyelvét, országát, karaktereit " +"használhassa." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Válaszd ki, milyen helyi beállításokat hozzunk létre. UTF-8 helyi " +"beállításokat érdemes alapértelmezetten választani. Más karakter-készletek " +"elavult rendszerekhez és szoftverekhez való kapcsolódáskor lehetnek jók." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Semmi" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "A rendszer alap helyi beállítása:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"A Debian számos csomagja helyi beállításokat használ a szövegek a " +"felhasználó számára megfelelÅ‘ nyelvű megjelenítésére . Választhatsz egy " +"alapértelmezett." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Ez kiválasztja az egész rendszer alapértelmezett nyelvét. Több nyelvű " +"rendszeren, ahol nem minden felhasználó beszéli az alapértelmezett nyelvet " +"további beállítások kellenek." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/vi.po +++ eglibc-2.13/debian/po/vi.po @@ -0,0 +1,206 @@ +# Vietnamese Translation for eGlibC. +# Copyright © 2010 Free Software Foundation, Inc. +# Clytie Siddall , 2005-2010. +# +msgid "" +msgstr "" +"Project-Id-Version: eglibc 2.11.2-6\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-10-27 14:55+1030\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.8\n" + +#: ../debhelper.in/locales.templates:1001 +#. Type: multiselect +#. Choices +msgid "All locales" +msgstr "Má»i miá»n địa phÆ°Æ¡ng" + +#: ../debhelper.in/locales.templates:1002 +#. Type: multiselect +#. Description +msgid "Locales to be generated:" +msgstr "Miá»n địa phÆ°Æ¡ng cần tạo ra:" + +#: ../debhelper.in/locales.templates:1002 +#. Type: multiselect +#. Description +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Miá»n địa phÆ°Æ¡ng (locale) là má»™t khuôn khổ để chuyển đổi giữa các ngôn ngữ khác nhau, cÅ©ng cho phép ngÆ°á»i dùng chá»n sá»­ dụng ngôn ngữ, quốc gia, ký tá»±, thứ tá»± sắp xếp v.v. của quê." + +#: ../debhelper.in/locales.templates:1002 +#. Type: multiselect +#. Description +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Hãy chá»n những miá»n địa phÆ°Æ¡ng cần tạo ra. Có nên chá»n miá»n địa phÆ°Æ¡ng kiểu UTF-8 theo mặc định, đặc biệt cho việc cài đặt má»›i. (Ghi chú : tiếng Việt " +"cần thiết UTF-8.) Bá»™ ký tá»± khác có thể hữu ích để tÆ°Æ¡ng thích ngược vá»›i hệ " +"thống/phần má»m cÅ©." + +#: ../debhelper.in/locales.templates:2001 +#. Type: select +#. Choices +msgid "None" +msgstr "Không có" + +#: ../debhelper.in/locales.templates:2002 +#. Type: select +#. Description +msgid "Default locale for the system environment:" +msgstr "Miá»n địa phÆ°Æ¡ng mặc định cho môi trÆ°á»ng hệ thống:" + +#: ../debhelper.in/locales.templates:2002 +#. Type: select +#. Description +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Nhiá»u gói của Debian có dùng miá»n địa phÆ°Æ¡ng để hiển thị văn bản bằng ngôn " +"ngữ thích hợp vá»›i ngÆ°á»i dùng. Bạn có dịp chá»n miá»n địa phÆ°Æ¡ng mặc định cho " +"hệ thống, trong những miá»n địa phÆ°Æ¡ng được tạo ra." + +#: ../debhelper.in/locales.templates:2002 +#. Type: select +#. Description +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Ghi chú : việc này sẽ chá»n ngôn ngữ mặc định cho toàn hệ thống. Nếu hệ thống " +"này có nhiá»u ngÆ°á»i dùng và không phải tất cả có khả năng nói ngôn ngữ mặc " +"định, há» sẽ gặp khó khăn." + +#: ../debhelper.in/libc.templates:1001 +#. Type: boolean +#. Description +msgid "Do you want to upgrade glibc now?" +msgstr "Bạn có muốn nâng cấp glibc ngay bây giá» không?" + +#: ../debhelper.in/libc.templates:1001 +#. Type: boolean +#. Description +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Các dịch vụ và chÆ°Æ¡ng trình Ä‘á»u Ä‘ang chạy dá»±a vào NSS thì cần phải được khởi " +"chạy lại: không thì chúng không còn có khả năng tra tìm hay xác thá»±c lại. " +"Tiến trình cài đặt có khả năng khởi chạy lại má»™t số dịch vụ riêng (v.d. ssh " +"hoặc têlnetd) nhÆ°ng không thể tá»± Ä‘á»™ng khởi chạy lại các chÆ°Æ¡ng trình khác. " +"Má»™t chÆ°Æ¡ng trình nhÆ° vậy mà cần phải bị dừng chạy rồi được khởi chạy lại " +"bằng sau khi nâng cấp glibc là xdm, vì việc tá»± Ä‘á»™ng cài đặt có thể ngắt kết " +"nối đến phiên chạy X11 Ä‘ang hoạt Ä‘á»™ng." + +#: ../debhelper.in/libc.templates:1001 +#. Type: boolean +#. Description +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Văn lệnh này đã phát hiện những dịch vụ đã cài đặt sau mà phải bị dừng chạy " +"trÆ°á»›c khi nâng cấp: ${services}" + +#: ../debhelper.in/libc.templates:1001 +#. Type: boolean +#. Description +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Nếu bạn muốn làm gián Ä‘oạn tiến trình nâng cấp ngay bây giá» và tiếp tục sau, " +"hãy trả lá»i « Không » bên dÆ°á»›i." + +#: ../debhelper.in/libc.templates:2001 +#. Type: string +#. Description +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Các dịch vụ cần khởi chạy lại để nâng cấp thÆ° viện libc GNU:" + +#: ../debhelper.in/libc.templates:2001 +#. Type: string +#. Description +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Các dịch vụ và chÆ°Æ¡ng trình Ä‘á»u Ä‘ang chạy khi sá»­ dụng NSS thì cần phải được " +"khởi chạy lại: không thì không còn có khả năng tra tìm hay xác thá»±c lại (đối " +"vá»›i dịch vụ nhÆ° SSH, trÆ°á»ng hợp này có thể ngăn cản bạn đăng nhập). Hãy xem " +"lại danh sách định giá»›i bằng dấu cách các văn lệnh init.d cho dịch vụ cần " +"khởi chạy lại ngay bây giá», và sá»­a nếu thích hợp." + +#: ../debhelper.in/libc.templates:2001 +#. Type: string +#. Description +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Ghi chú : khởi chạy lại sshd/telnetd không nên có tác Ä‘á»™ng kết nối Ä‘ang chạy." + +#: ../debhelper.in/libc.templates:3001 +#. Type: error +#. Description +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Lá»—i khởi chạy lại má»™t số dịch vụ để nâng cấp libc GNU." + +#: ../debhelper.in/libc.templates:3001 +#. Type: error +#. Description +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Những dịch vụ theo đây không thể được khởi chạy lại để nâng cấp thÆ° viện " +"libc GNU:" + +#: ../debhelper.in/libc.templates:3001 +#. Type: error +#. Description +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Bạn sẽ cần phải tá»± khởi chạy lại các dịch vụ này, bằng cách chạy lệnh « /etc/" +"init.d/ start »." + +#: ../debhelper.in/libc.templates:4001 +#. Type: error +#. Description +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "TrÆ°á»›c khi nâng cấp thì cần phải khởi chạy lại xscreensaver và xlockmore" + +#: ../debhelper.in/libc.templates:4001 +#. Type: error +#. Description +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "Má»™t hay nhiá»u tiến trình Ä‘ang chạy của xscreensaver hay xlockmore đã được phát hiện trên hệ thống này. Do thay đổi không tÆ°Æ¡ng thích nhau trong các thÆ° viện, việc nâng cấp thÆ° viện libc của GNU có thể dẫn đến hai chÆ°Æ¡ng trình này không cho phép xác thá»±c. Äể tránh trÆ°á»ng hợp này, dừng chạy hay khởi chạy lại tiến trình nào Ä‘ang chạy của hai chÆ°Æ¡ng trình này trÆ°á»›c khi tiếp tục nâng cấp." --- eglibc-2.13.orig/debian/po/pt_BR.po +++ eglibc-2.13/debian/po/pt_BR.po @@ -0,0 +1,212 @@ +# Brazilian Portuguese translation (glibc) +# Copyright (C) 2007 THE glibc'S COPYRIGHT HOLDER +# This file is distributed under the same license as the glibc package. +# Felipe Augusto van de Wiel (faw) , 2007-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: libc6\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-06-09 01:17-0300\n" +"Last-Translator: Felipe Augusto van de Wiel (faw) \n" +"Language-Team: Brazilian Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"pt_BR utf-8\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Todos os \"locales\"" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "\"Locales\" a serem gerados:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Locales são uma infra-estrutura para alternar entre múltiplos idiomas e " +"permite aos usuários utilizar o seu idioma, país, caracteres, ordem de " +"colação, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Por favor, escolha quais locales serão gerados. Locales UTF-8 deveriam ser " +"escolhidos por padrão, particularmente para novas instalações. Outros " +"conjuntos de caracteres podem ser úteis para compatibilidade com sistemas e " +"softwares antigos." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Nenhum" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Locale padrão para o ambiente do sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Muitos pacotes no Debian usam locales para exibir texto aos usuários no " +"idioma correto. Você pode escolher um locale padrão para o sistema a partir " +"dos locales gerados." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Isto selecionará o idioma padrão para o sistema inteiro. Se este sistema é " +"um sistema multiusuário no qual nem todos os usuários são capazes de falar o " +"idioma padrão, eles vão enfrentar dificuldades." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Você quer atualizar a glibc agora?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Serviços em execução e programas que usam NSS precisam ser reiniciados, caso " +"contrário eles podem não ser capazes de realizar consultas ou autenticação. " +"O processo de instalação é capaz de reiniciar alguns desses serviços (como " +"ssh, isto pode afetar sua habilidade de fazer login). Por favor, reveja a " +"seguinte lista separada por espaços de scripts init.d que serão reiniciados " +"agora, e corrija-a se necessário." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Este script detectou os seguintes serviços instalados que devem ser parados " +"antes da atualização: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Se você quer interromper a atualização agora e continuar posteriormente, por " +"favor, responda Não para a questão abaixo." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" +"Serviços para reiniciar por causa da atualização da biblioteca GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Serviços em execução e programas que usam NSS precisam ser reiniciados, caso " +"contrário eles podem não ser capazes de realizar consultas ou autenticação " +"(para serviços como ssh, isto pode afetar sua habilidade de fazer login). " +"Por favor, reveja a seguinte lista separada por espaços de scripts init.d " +"que serão reiniciados agora, e corrija se necessário." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Nota: reiniciar sshd/telnetd não deveria afetar quaisquer conexões " +"existentes." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" +"Falha ao reiniciar alguns serviços por causa da atualização da GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Os seguintes serviços não puderam ser reiniciados por causa da atualização " +"da biblioteca GNU libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Você terá que iniciar esses serviços manualmente executando '/etc/init.d/" +" start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/pt.po +++ eglibc-2.13/debian/po/pt.po @@ -0,0 +1,214 @@ +# Portuguese translation of glibc's debconf messages. +# Copyright (C) 2007 +# This file is distributed under the same license as the glibc package. +# Ricardo Silva , 2007. +# Pedro Ribeiro , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-09-17 22:15+0000\n" +"Last-Translator: Pedro Ribeiro \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Todos os locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Locales a serem gerados:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Locales é uma framework para alternar entre várias línguas e permitir aos " +"utilizadores usar a sua língua, país, caracteres, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Por favor escolha quais os locales a gerar. Os locales UTF-8 devem ser " +"seleccionados, especialmente em instalações de raiz. Outros conjuntos de " +"caracteres podem ser úteis para compatibilidade com sistemas e software " +"antigo." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Nenhum" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Locale padrão para o ambiente do sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Muitos pacotes na Debian usam locales para mostrar texto na língua correcta " +"do utilizador. Pode escolher, de entre os locales gerados, o locale padrão " +"do sistema." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Isto irá escolher a língua padrão para todo o sistema. Se este é um sistema " +"multi-utilizador em que nem todos os utilizadores são capazes de a falar, " +"estes irão ter dificuldades." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Quer actualizar a glibc agora?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Serviços e programas que estejam a correr que usem NSS têm de ser " +"reiniciados, de outra forma podem deixar de ser capazes de resolver nomes ou " +"de autenticar utilizadores. O processo de instalação é capaz de reiniciar " +"alguns serviços (tais como ssh ou telnetd), mas há outros programas que não " +"podem ser reiniciados automaticamente. Um dos programas que necessita de ser " +"parado e reiniciado manualmente é o xdm - um reinício automático poderia " +"desligar as suas sessões de X11 activas." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Este script detectou os seguintes serviços instalados que têm de ser parados " +"antes da actualização: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Se quer interromper a actualização agora e continuar mais tarde, por favor " +"responda Não à questão abaixo." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Serviços a reiniciar para a actualização da biblioteca libc da GNU:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Serviços e programas que estejam a correr que usem o NSS têm de ser " +"reiniciados, de outra forma podem deixar de ser capazes de resolver nomes ou " +"de autenticar utilizadores (para serviços como o ssh, isto pode afectar a " +"sua capacidade de se ligar ao sistema). Por favor reveja a seguinte lista " +"separada por espaços de scripts init.d para serviços a serem reiniciados " +"agora, e corrija-a se for necessário." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Nota: reiniciar o sshd/telnetd não deve afectar nenhuma ligação existente." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Falha ao reiniciar alguns serviços para a actualização da libc da GNU" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Os seguintes serviços não puderam ser reiniciados para a actualização da " +"biblioteca libc da GNU:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Terá de os inicializar manualmente correndo '/etc/init.d/ start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "xscreensaver e xlockmore têm de ser reiniciados antes da actualização" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Uma ou mais instâncias de xscreensaver ou xlockmore foram detectadas neste " +"sistema. Devido a alterações incompatíveis da biblioteca, a actualização da " +"biblioteca GNU libc deixá-lo-á incapaz de se autenticar para estes " +"programas. Deve providenciar para que estes programas sejam reiniciados ou " +"parados antes de continuar com esta actualização, para evitar que os seus " +"utilizadores fiquem bloqueados e impedidos de aceder às suas sessões actuais." --- eglibc-2.13.orig/debian/po/tr.po +++ eglibc-2.13/debian/po/tr.po @@ -0,0 +1,187 @@ +# Turkish translation of locales. +# This file is distributed under the same license as the locales package. +# Erçin EKER , 2004,2007. +# +msgid "" +msgstr "" +"Project-Id-Version: locales\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2007-04-09 11:02+0300\n" +"Last-Translator: Erçin EKER \n" +"Language-Team: Türkçe \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Tüm yereller" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "OluÅŸturulacak yereller: " + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Yerel (locale), kullanıcıların kullanmak istediÄŸi dil, ülke, karakter, " +"sıralama ÅŸekli gibi dile özgü ayarlar arasında kolayca geçiÅŸ yapmasını " +"saÄŸlayan bir yapıdır." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Lütfen hangi yerellerin oluÅŸturulacağını seçin. Yeni kurulum için UTF-8 " +"yereller öntanımlı olarak seçilecektir. DiÄŸer karakter setleri daha eski " +"sistemler ve yazılımlar ile uyumluluk için yararlı olabilir." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Hiçbiri" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Sistem için öntanımlı yerel:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"ÇoÄŸu Debian paketi mesajları göstermekte kullanacağı dili belirlemek için " +"yerelleri kullanır. OluÅŸturulmak üzere seçtikleriniz arasından sistem için " +"öntanımlı bir yerel seçebilirsiniz." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Bu ayar, sisteminizin bütününde kullanılacak dili belirleyecektir. EÄŸer " +"farklı dilleri konuÅŸan kullanıcıların da bulunduÄŸu çok kullanıcılı bir " +"sistem çalıştırıyorsanız, bu kullanıcılar bazı zorluklarla karşılaÅŸabilir. " + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/ru.po +++ eglibc-2.13/debian/po/ru.po @@ -0,0 +1,220 @@ +# translation of ru.po to Russian +# Translation of glibc debconf .po to Russian +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# +# Yuri Kozlov , 2006. +# Sergey Alyoshin , 2007, 2008. +# Yuri Kozlov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: eglibc 2.9-18\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2009-06-27 12:46+0400\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Ð’Ñе локали" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Локали, которые будут Ñозданы:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Локаль -- Ñто инфраÑтруктура Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ в ÑиÑтеме неÑкольких Ñзыков; она " +"позволÑет пользователю наÑтроить Ñзык Ñообщений, Ñтрану, алфавит, порÑдок " +"Ñортировки и Ñ‚.п." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Выберите Ñоздаваемые локали. Кодировка локали UTF-8 должна быть выбрана по " +"умолчанию, оÑобенно при новой инÑталлÑции. Другие кодировки локали могут " +"быть полезны Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑовмеÑтимоÑти Ñо Ñтарыми ÑиÑтемами и программами." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ðет" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Локаль по умолчанию в ÑиÑтемном окружении:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Многие пакеты в Debian иÑпользуют локали Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñообщений на Ñзыке " +"пользователÑ. Ð’Ñ‹ можете выбрать из Ñозданных локалей ÑиÑтемную локаль по " +"умолчанию." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Эта наÑтройка уÑтанавливает Ñзык по умолчанию Ð´Ð»Ñ Ð²Ñей ÑиÑтемы. ЕÑли Ñто " +"многопользовательÑÐºÐ°Ñ ÑиÑтема, где не вÑе пользователи говорÑÑ‚ на выбранном " +"Ñзыке по умолчанию, то у них возникнут трудноÑти." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Хотите выполнить обновление glibc ÑейчаÑ?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Запущенные ÑервиÑÑ‹ и программы, которые иÑпользуют NSS, должны быть " +"перезапущены, иначе они не будут ÑпоÑобны выполнÑÑ‚ÑŒ поиÑк или " +"аутентификацию. Ð’ процеÑÑе уÑтановки возможно перезапуÑтить некоторые " +"ÑервиÑÑ‹ (такие, как ssh или telnetd), но другие программы не могут быть " +"автоматичеÑки перезапущены. Одна из таких программ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ ручной " +"оÑтановки и перезапуÑка поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ glibc, Ñто xdm, так как её " +"автоматичеÑкий перезапуÑк может отключить ваши активные ÑеÑÑии X11." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Этот Ñценарий определил Ñледующие уÑтановленные ÑервиÑÑ‹, которые должны быть " +"оÑтановлены перед обновлением: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"ЕÑли вы желаете прервать процеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¸ продолжить позже, " +"ответьте Ðет на Ñледующий вопроÑ." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Ð”Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ GNU libc должны быть перезапущены Ñледующие ÑервиÑÑ‹:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Запущенные ÑервиÑÑ‹ и программы, которые иÑпользуют NSS, должны быть " +"перезапущены, иначе они не будут ÑпоÑобны выполнÑÑ‚ÑŒ поиÑк или аутентификацию " +"(Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… ÑервиÑов, как ssh, Ñто может повлиÑÑ‚ÑŒ на возможноÑÑ‚ÑŒ входа в " +"ÑиÑтему). ПроÑмотрите Ñледующий разделённый пробелами ÑпиÑок из Ñкриптов " +"init.d Ð´Ð»Ñ ÑервиÑов, которые будут ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑ‰ÐµÐ½Ñ‹ и отредактируйте его " +"при необходимоÑти." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Примечание: перезапуÑк sshd/telnetd не должен повлиÑÑ‚ÑŒ на какие-либо из " +"ÑущеÑтвующих Ñоединений." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Произошёл Ñбой при перезапуÑке некоторых ÑервиÑов Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Следующие ÑервиÑÑ‹ не могут быть перезапущены Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ GNU " +"libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Вам будет нужно запуÑтить их вручную, Ð´Ð»Ñ Ñ‡ÐµÐ³Ð¾ Ñледует выполнить '/etc/init." +"d/<ÑервиÑ> start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "Перед обновлением требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтить xscreensaver и xlockmore" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Ð’ ÑиÑтеме обнаружен один или неÑколько ÑкземплÑров xscreensaver или xlockmore. " +"Так данное обновление уÑтанавливает неÑовмеÑтимую Ñ Ð¿Ñ€Ð¾ÑˆÐ»Ð¾Ð¹ верÑией библиотеку " +"GNU libc, Ñти программы не Ñмогут проводить аутентификацию. " +"Перед тем как продолжить данное обновление вам нужно перезапуÑтить или " +"оÑтановить Ñти программы, чтобы избежать блокировки имеющихÑÑ ÑеанÑов " +"пользователей." + --- eglibc-2.13.orig/debian/po/el.po +++ eglibc-2.13/debian/po/el.po @@ -0,0 +1,203 @@ +# translation of el.po to Greek +# translation of templates.po to Greek +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# Konstantinos Margaritis , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: el\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2004-01-21 22:44EEST\n" +"Last-Translator: Konstantinos Margaritis \n" +"Language-Team: Greek \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.2\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +#, fuzzy +msgid "Locales to be generated:" +msgstr "Επιλέξτε τα γλωσσικά πεÏιβάλλοντα που θέλετε να δημιουÏγηθοÏν." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +#, fuzzy +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Το γλωσσικό πεÏιβάλλον (locale) είναι ένα πλαίσιο υποστήÏιξης εναλλαγής " +"πολλαπλών γλωσσών, ώστε οι χÏήστες να μποÏοÏν να χÏησιμοποιοÏν τη γλώσσα " +"τους, με όλα τα συνεπακόλουθα, χαÏακτήÏες, νόμισμα, τοπικές Ïυθμίσεις, κλπ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Κανένα" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "Default locale for the system environment:" +msgstr "Ποιο γλωσσικό πεÏιβάλλον επιθυμείτε ως Ï€ÏοκαθοÏισμένο για το σÏστημα;" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Πολλά πακέτα στο Debiaν χÏησιμοποιοÏν τη δυνατότητα των γλωσσικών " +"πεÏιβάλλοντων για να εμφανίζουν κείμενο στην επιλεγμένη γλώσσα του κάθε " +"χÏήστη. ΜποÏείτε να αλλάξετε το Ï€ÏοκαθοÏισμένο γλωσσικό πεÏιβάλλον αν η " +"Αγγλική δεν είναι η μητÏική σας γλώσσα. Αυτές οι επιλογές βασίζονται στα " +"γλωσσικά πεÏιβάλλοντα που επιλέξατε να δημιουÏγηθοÏν." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Σημείωση: Αυτή η επιλογή θα επιλέξει τη γλώσσα για ολόκληÏο το σÏστημά σας. " +"Αν έχετε ένα πολυχÏηστικό σÏστημα, στο οποίο οι χÏήστες δε μιλοÏν όλοι την " +"γλώσσα που εσείς επιλέξατε, τότε πιθανόν να συναντήσουν δυσκολίες και για το " +"λόγο αυτό ίσως να μη Ï€Ïέπει να οÏίσετε ένα Ï€ÏοκαθοÏισμένο γλωσσικό " +"πεÏιβάλλον." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/nb.po +++ eglibc-2.13/debian/po/nb.po @@ -0,0 +1,188 @@ +# translation of glibc_nb.po to Norwegian BokmÃ¥l +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Bjørn Steensrud , 2007. +msgid "" +msgstr "" +"Project-Id-Version: glibc_nb\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2007-02-26 20:05+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian BokmÃ¥l \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Alle lokaler" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Lokaler (stedstilpasninger) som skal opprettes:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +#, fuzzy +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"«Lokale» er et rammeverk som kan veksle mellom flere sprÃ¥k, slik at brukere " +"kan velge sitt sprÃ¥k, land, tegnsett, sorteringsrekkefølge osv." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ingen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Standardlokale for systemmiljøet:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Mange pakker i Debian bruker lokaler for Ã¥ vise tekst i det riktige sprÃ¥ket " +"for brukerne. Du kan endre standardlokalet om det ikke er ditt førstesprÃ¥k. " +"Disse valgene er basert pÃ¥ hvilke lokaler som er valgt ut til Ã¥ bli " +"opprettet." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Merk: Dette velger sprÃ¥k for hele systemet. Hvis dette er et " +"flerbrukersystem der ikke alle brukerne forstÃ¥r det valgte sprÃ¥ket, sÃ¥ kan " +"de komme opp i vansker, sÃ¥ kanskje det ikke bør velges et standardlokale." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/pl.po +++ eglibc-2.13/debian/po/pl.po @@ -0,0 +1,206 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: debconf-glibc-locales-pl\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-02-28 21:45+0100\n" +"Last-Translator: Emilian Nowak \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Gettext Translator 0.9\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Wszystkie dostÄ™pne" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Wybierz ustawienia lokalne, które chcesz wygenerować:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Wybierane tutaj ustawienia lokalne stanowiÄ… podstawowÄ… strukturÄ™ dajÄ…cÄ… " +"możliwość pracy systemu w specyficznym dla danego kraju Å›rodowisku (jÄ™zyk, " +"zestaw znaków, kolejność sortowania itp.)" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Wybierz jakie ustawienia lokalne chcesz wygenerować. Najkorzystniej jest " +"wybrać UTF-8, zwÅ‚aszcza na nowo instalowanych systemach. PozostaÅ‚e kodowania " +"mogÄ… być przydatne, aby utrzymać wstecznÄ… kompatybilność ze starymi " +"systemami lub programami." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Brak" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Wybierz domyÅ›lne ustawienia lokalne, dla swojego systemu:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Wiele programów dostarczanych w pakietach Debiana wykorzystuje ustawienia " +"lokalne, aby wyÅ›wietlać komunikaty we wÅ‚aÅ›ciwym dla użytkownika jÄ™zyku. " +"Możesz zmienić domyÅ›lne ustawienia lokalne dla caÅ‚ego systemu. Można wybrać " +"tylko te ustawienia lokalne, które wczeÅ›niej zostaÅ‚y wygenerowane." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Zwróć uwagÄ™ na to, że wybrany tutaj jÄ™zyk ma wpÅ‚yw na na caÅ‚y system i " +"wiÄ™kszość dziaÅ‚ajÄ…cych w nim programów. Jeżeli z tego systemu korzysta wielu " +"użytkowników posÅ‚ujÄ…cych siÄ™ różnymi jÄ™zykami, to mogÄ… oni mieć problemy ze " +"zrozumieniem komunikatów systemu." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Czy teraz chcesz zaktualizować glibc ?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Serwisy i programy wykorzystujÄ…ce NSS wymagajÄ… ponownego uruchomienia aby " +"operacje zwiÄ…zane z autoryzacjÄ… dziaÅ‚aÅ‚y prawidÅ‚owo. Proces instalacji może " +"zrestartować część serwisów (jak np. ssh lub telnetd), jednak niektóre " +"usÅ‚ugi bÄ™dÄ… wymagaÅ‚y ingerencji użytkownika. PrzykÅ‚adem takiego programu " +"jest xdm, którego restart mógÅ‚by spowodować wyÅ‚Ä…czenie aktywnej sesji X11." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Skrypt wykryÅ‚ nastÄ™pujÄ…ce serwisy, które należy rÄ™cznie zrestartować " +"${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Jeżeli chcesz przerwać aktualizacjÄ™ i dokoÅ„czyć jÄ… później wybierz nie." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Serwisy wymagajÄ…ce restartu po aktualizacji GNU libc." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Uruchomione serwisy i programy wykorzystujÄ…ce NSS wymagajÄ… restartu. W " +"przeciwnym wypadku nie bÄ™dÄ… operacje zwiÄ…zane z autoryzacjÄ… nie bÄ™dÄ… " +"dziaÅ‚aÅ‚y prawidÅ‚owo. Przy usÅ‚ugach takich jak ssh bÄ™dzie to oznaczaÅ‚o brak " +"możliwoÅ›ci zalogowania. \n" +"Zalecamy przejrzenie listy skryptów startowych i ewentualne jej poprawnie." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Uwaga: restart sshd/telnetd nie powinien mieć wpÅ‚ywy na nawiÄ…zane już " +"poÅ‚Ä…czenia." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" +"NastÄ…piÅ‚ bÅ‚Ä…d podczas restartowania niektórych usÅ‚ug po aktualizacji GNU " +"libc." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "NastÄ™pujÄ…ce usÅ‚ugi nie zostaÅ‚y zrestartowane po aktualizacji GNU libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Aby zrestartować rÄ™cznie te usÅ‚ugi należy wywoÅ‚ać '/etc/init.d/ " +"start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/sk.po +++ eglibc-2.13/debian/po/sk.po @@ -0,0 +1,203 @@ +# Ivan Masár , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.6.1-1\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-02-26 23:21+0100\n" +"Last-Translator: Ivan Masár \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "VÅ¡etky locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Locales, ktoré sa majú vytvoriÅ¥:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Locales sú infraÅ¡truktúra na prepínanie medzi viacerými jazykmi a umožňujú " +"používateľom používaÅ¥ ich jazyk, krajinu, poradie znakov atÄ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Prosím zvoľte, ktoré locales sa majú vytvoriÅ¥. Å tandardne by mali byÅ¥ " +"zvolené UTF-8 locales, zvlášť na nových inÅ¡taláciách. Iné znakové sady môžu " +"byÅ¥ užitoÄné pre spätnú kompatibilitu so staršími systémami a softvérom." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "žiadne" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Å tandarné locale systémového prostredia:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Mnohé balíky v Debiane používajú locales pre zobrazovanie textu v správnom " +"jazyku používateľa. Z vytvorených locales môžete zvoliÅ¥ Å¡tandardné locale " +"systému." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Týmto vyberiete Å¡tandardný jazyk pre celý systém. Ak je toto " +"viacpoužívateľský systém, kde nie vÅ¡etci používatelia hovoria Å¡tandarným " +"jazykom, môžu maÅ¥ Å¥ažkosti." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Želáte si teraz aktualizovaÅ¥ glibc?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Bežiace programy a služby, ktoré používajú NSS sa musia reÅ¡tartovaÅ¥, inak by " +"viac neboli schopné vykonávaÅ¥ vyhľadávanie a autentifikáciu. InÅ¡talátor je " +"schopný sám reÅ¡tartovaÅ¥ niektoré služby (ako ssh a telnet), ale iné programy " +"nie je možné reÅ¡tartovaÅ¥ automaticky. Jeden z takýchto programov, ktoré " +"vyžadujú, aby ste ho manuálne zastavili a reÅ¡tartovali po aktualizácii " +"glibc, je xdm - pretože automatický reÅ¡tart by mohol odpojiÅ¥ vaÅ¡e aktívne " +"relácie X11." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Tento skript zistil, že nasledovné služby je pred aktualizáciou potrebné " +"zastaviÅ¥:${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Ak si teraz želáte preruÅ¡iÅ¥ aktualizáciu a pokraÄovaÅ¥ neskôr, prosím, " +"odpovedzte na túto otázku „Nie“." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Služby, ktoré sa majú po aktualizácii knižnice GNU libc reÅ¡tartovaÅ¥:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Bežiace programy a služby, ktoré používajú NSS a majú sa reÅ¡tartovaÅ¥, inak " +"by viac neboli schopné vykonávaÅ¥ vyhľadávanie a autentifikáciu (pri službách " +"ako ssh toto môže maÅ¥ vplyv na schopnosÅ¥ prihlásiÅ¥ sa). Prosím, skontrolujte " +"nasledovný zoznam (položky sú oddelené medzerami) init.d skriptov služieb, " +"ktoré je treba reÅ¡tartovaÅ¥ a ak je to potrebné, opravte ho." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Pozn.: reÅ¡tartovanie sshd/telnetd by nemalo maÅ¥ vplyv na už nadviazané " +"spojenia." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Nepodarilo sa reÅ¡tartovaÅ¥ niektoré služby pri aktualizácii GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Nasledovné služby sa pri aktualizácii knižnice GNU libc nepodarilo sa " +"reÅ¡tartovaÅ¥:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Budete musieÅ¥ tieto služby spustiÅ¥ ruÄne pomocou „/etc/init.d/ " +"start“." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/ja.po +++ eglibc-2.13/debian/po/ja.po @@ -0,0 +1,148 @@ +# Kenshi Muto , 2007 +# GOTO Masanori , -2007 +# Nobuhiro Iwamatsu , 2010 +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.11.2-7\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-11-21 17:14+0900\n" +"Last-Translator: Nobuhiro Iwamatsu \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "ã™ã¹ã¦ã®ãƒ­ã‚±ãƒ¼ãƒ«" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "生æˆã™ã‚‹ãƒ­ã‚±ãƒ¼ãƒ«ã®é¸æŠž:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales are a framework to switch between multiple languages and allow users to use their language, country, characters, collation order, etc." +msgstr "ロケールã¨ã¯ã€è¤‡æ•°ã®è¨€èªžã‚’切り替ãˆã€ãƒ¦ãƒ¼ã‚¶ãŒè‡ªèº«ã®è¨€èªžãƒ»å›½ãƒ»æ–‡å­—・並ã¹æ›¿ãˆé †åºãªã©ã‚’使ãˆã‚‹ã‚ˆã†ã«è¨±å¯ã™ã‚‹ãŸã‚ã®ä»•çµ„ã¿ã§ã™ã€‚" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Please choose which locales to generate. UTF-8 locales should be chosen by default, particularly for new installations. Other character sets may be useful for backwards compatibility with older systems and software." +msgstr "生æˆã—ãŸã„ロケールをé¸æŠžã—ã¦ãã ã•ã„。UTF-8 ロケールã¯ã€ç‰¹ã«æ–°è¦ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚‚ã®ã§ã‚ã‚Œã°ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§é¸æŠžã•ã‚Œã¦ã„ã‚‹ã¯ãšã§ã™ã€‚ãã®ä»–ã®æ–‡å­—セットã¯ã€ã‚ˆã‚Šå¤ã„システムãŠã‚ˆã³ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¨ã®å¾Œæ–¹äº’æ›æ€§ã®ãŸã‚ã«å½¹ç«‹ã¤ã§ã—ょã†ã€‚" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "ãªã—" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "システム標準ã®ç’°å¢ƒå¤‰æ•°ã¨ã—ã¦è¨­å®šã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ­ã‚±ãƒ¼ãƒ«:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Many packages in Debian use locales to display text in the correct language for the user. You can choose a default locale for the system from the generated locales." +msgstr "ユーザã«æ­£ã—ã„言語ã§ãƒ†ã‚­ã‚¹ãƒˆã‚’表示ã™ã‚‹ãŸã‚ã€Debian ã§ã¯å¤šãã®ãƒ‘ッケージãŒãƒ­ã‚±ãƒ¼ãƒ«ã‚’使用ã—ã¾ã™ã€‚生æˆã—ãŸãƒ­ã‚±ãƒ¼ãƒ«ã®ä¸­ã‹ã‚‰ã‚·ã‚¹ãƒ†ãƒ ã§ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ­ã‚±ãƒ¼ãƒ«ã‚’é¸æŠžã§ãã¾ã™ã€‚" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "This will select the default language for the entire system. If this system is a multi-user system where not all users are able to speak the default language, they will experience difficulties." +msgstr "ã“ã‚Œã¯ã‚·ã‚¹ãƒ†ãƒ å…¨ä½“ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ­ã‚±ãƒ¼ãƒ«ã‚’é¸ã¶ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ã“ã®ã‚·ã‚¹ãƒ†ãƒ ãŒãƒžãƒ«ãƒãƒ¦ãƒ¼ã‚¶ã‚·ã‚¹ãƒ†ãƒ ã§ã€ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è¨€èªžã‚’話ã™ã“ã¨ãŒã§ãã‚‹ã¨ã„ã†ã‚ã‘ã§ã¯ãªã„å ´åˆã¯ã€ãã†ã„ã£ãŸäººã€…ã¯å›°é›£ã‚’æ„Ÿã˜ã‚‹ã“ã¨ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "glibc を今更新ã—ã¾ã™ã‹?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Running services and programs that are using NSS need to be restarted, otherwise they might not be able to do lookup or authentication any more. The installation process is able to restart some services (such as ssh or telnetd), but other programs cannot be restarted automatically. One such program that needs manual stopping and restart after the glibc upgrade by yourself is xdm - because automatic restart might disconnect your active X11 sessions." +msgstr "NSS を利用ã—ã¦ã„る実行中ã®ã‚µãƒ¼ãƒ“スãŠã‚ˆã³ãƒ—ログラムã¯ã€å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã•ã‚‚ãªã„ã¨ã€ãƒ«ãƒƒã‚¯ã‚¢ãƒƒãƒ—ãŠã‚ˆã³èªè¨¼ãŒã‚‚ã†åˆ©ç”¨ã§ããªã„ã“ã¨ã«ãªã‚Šã¾ã™ã€‚インストール手続ãã§ã¯ã„ãã¤ã‹ã®ã‚µãƒ¼ãƒ“ス (ssh ã‚„ telnetd ãªã©) ã‚’å†èµ·å‹•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ãã®ä»–ã®ãƒ—ログラムã¯è‡ªå‹•ã§ã¯å†èµ·å‹•ã•ã‚Œã¾ã›ã‚“。手動ã§ã®åœæ­¢ãŠã‚ˆã³ glibc ã®æ›´æ–°ã®ã‚ã¨ã«ã‚ãªãŸè‡ªèº«ã§å†èµ·å‹•ã™ã‚‹å¿…è¦ã®ã‚ã‚‹ãã®ã‚ˆã†ãªãƒ—ログラム㮠1 ã¤ã¨ã—ã¦ã¯ã€xdm ãŒã‚ã‚Šã¾ã™ã€‚ã¨ã„ã†ã®ã‚‚ã€è‡ªå‹•å†èµ·å‹•ã¯ã‚ãªãŸã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–㪠X11 ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‰ã˜ã¦ã—ã¾ã†ã“ã¨ã«ãªã‚‹ã‹ã‚‰ã§ã™ã€‚" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "This script detected the following installed services which must be stopped before the upgrade: ${services}" +msgstr "スクリプトã¯ã€æ›´æ–°å‰ã«åœæ­¢ã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„以下ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸã‚µãƒ¼ãƒ“スを検出ã—ã¾ã—ãŸ: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "If you want to interrupt the upgrade now and continue later, please answer No to the question below." +msgstr "更新を今中止ã—ã¦å¾Œæ—¥ç¶šè¡Œã—ãŸã„ã®ã§ã‚ã‚Œã°ã€ä»¥ä¸‹ã®è³ªå•ã§ã€Œã„ã„ãˆã€ã¨ç­”ãˆã¦ãã ã•ã„。" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "GNU libc ライブラリã®æ›´æ–°ã§å†èµ·å‹•ã™ã‚‹ã‚µãƒ¼ãƒ“ス:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Running services and programs that are using NSS need to be restarted, otherwise they might not be able to do lookup or authentication any more (for services such as ssh, this can affect your ability to login). Please review the following space-separated list of init.d scripts for services to be restarted now, and correct it if needed." +msgstr "NSS を利用ã—ã¦ã„る実行中ã®ã‚µãƒ¼ãƒ“スãŠã‚ˆã³ãƒ—ログラムã¯ã€å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã•ã‚‚ãªã„ã¨ã€ãƒ«ãƒƒã‚¯ã‚¢ãƒƒãƒ—ãŠã‚ˆã³èªè¨¼ãŒã‚‚ã†åˆ©ç”¨ã§ããªã„ã“ã¨ã«ãªã‚Šã¾ã™ (ssh ã®ã‚ˆã†ãªã‚µãƒ¼ãƒ“スã§ã¯ã€ã“ã‚Œã¯ãƒ­ã‚°ã‚¤ãƒ³ã§ãã‚‹ã‹ã©ã†ã‹ã«å½±éŸ¿ã—ã¾ã™)。以下ã®ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸã€ä»Šå†èµ·å‹•ã™ã‚‹ã‚µãƒ¼ãƒ“ス㮠init.d スクリプトã®ãƒªã‚¹ãƒˆã‚’見ã¦ã€å¿…è¦ãªã‚‰ä¿®æ­£ã—ã¦ãã ã•ã„。" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "補足: sshd/telnetd ã®å†èµ·å‹•ã¯æ—¢å­˜ã®æŽ¥ç¶šã«ã¯å½±éŸ¿ã—ãªã„ã¯ãšã§ã™ã€‚" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "GNU libc æ›´æ–°ã®ãŸã‚ã®ã„ãã¤ã‹ã®ã‚µãƒ¼ãƒ“スã®å†èµ·å‹•ã§å¤±æ•—" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "The following services could not be restarted for the GNU libc library upgrade:" +msgstr "GNU libc ライブラリ更新ã®ãŸã‚ã®ã€ä»¥ä¸‹ã®ã‚µãƒ¼ãƒ“スã®å†èµ·å‹•ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "You will need to start these manually by running '/etc/init.d/ start'." +msgstr "'/etc/init.d/<サービス> start' を実行ã™ã‚‹ã“ã¨ã§ã€ã“れらを手動ã§èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "xscreensaver 㨠xlockmore ã¯ã‚¢ãƒƒãƒ—グレードã™ã‚‹å‰ã«å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "One or more running instances of xscreensaver or xlockmore have been detected on this system. Because of incompatible library changes, the upgrade of the GNU libc library will leave you unable to authenticate to these programs. You should arrange for these programs to be restarted or stopped before continuing this upgrade, to avoid locking your users out of their current sessions." +msgstr "ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã§ 1 ã¤ä»¥ä¸Šã® xscreensaver ã‚ã‚‹ã„㯠xlockmore ã®å‹•ä½œãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸã€‚éžäº’æ›ã®ãƒ©ã‚¤ãƒ–ラリ変更ã®ãŸã‚ã€GNU libc パッケージã®æ›´æ–°ã¯ã“れらã®ãƒ—ログラムã§ã®èªè¨¼ãŒã§ããªããªã‚‹ã¨ã„ã†çŠ¶æ…‹ã«ã™ã‚‹ã§ã—ょã†ã€‚ユーザãŒç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®å¤–ã«ç· ã‚出ã•ã‚Œã‚‹ã®ã‚’é¿ã‘ã‚‹ãŸã‚ã€ã“ã®ãƒ‘ッケージã®æ›´æ–°ã‚’続ã‘ã‚‹å‰ã«ã€ã“れらã®ãƒ—ログラムをå†èµ·å‹•ã™ã‚‹ã‹åœæ­¢ã™ã‚‹ã‚ˆã†ã«æ‰‹é…ã™ã¹ãã§ã™ã€‚" + --- eglibc-2.13.orig/debian/po/templates.pot +++ eglibc-2.13/debian/po/templates.pot @@ -0,0 +1,175 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/fr.po +++ eglibc-2.13/debian/po/fr.po @@ -0,0 +1,220 @@ +# Translation of glibc debconf templates to French +# Copyright (C) 2005-2009 Debian French l10n team +# This file is distributed under the same license as the glibc package. +# +# Translators: +# Christian Perrier , 2007, 2008, 2009. +# Denis Barbier 2001-2006. +msgid "" +msgstr "" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2009-03-14 08:09+0100\n" +"Last-Translator: Christian Perrier \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Tous les choix possibles" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Jeux de paramètres régionaux à créer :" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Les jeux de paramètres régionaux (aussi appelés « locales ») permettent de " +"gérer des langues multiples et offrent aux utilisateurs la possibilité de " +"choisir la langue, le pays, le jeu de caractères, l'ordre de tri, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Veuillez choisir les paramètres régionaux à créer. Des paramètres régionaux " +"utilisant l'encodage UTF-8 devraient être le choix par défaut, notamment " +"pour de nouvelles installations. Les autres jeux de caractères peuvent être " +"utiles pour conserver la compatibilité avec d'anciens systèmes ou logiciels." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Aucun" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Jeu de paramètres régionaux actif par défaut :" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"De nombreux paquets utilisent le mécanisme de localisation pour afficher les " +"messages destinés aux utilisateurs dans la langue adéquate. Vous pouvez " +"changer la valeur par défaut de l'ensemble du système pour utiliser un des " +"jeux de paramètres régionaux qui seront créés." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Veuillez noter que cette valeur modifiera la langue utilisée par le système. " +"Si l'environnement est multi-utilisateurs et que certains utilisateurs ne " +"parlent pas votre langue, ils risquent d'avoir des difficultés." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Faut-il mettre à jour le paquet glibc maintenant ?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Les services et programmes qui utilisent NSS (« Name Service Switch ») " +"doivent être redémarrés car leur système d'authentification risque de ne " +"plus fonctionner. Il est possible de redémarrer certains services (comme SSH " +"ou telnetd) pendant l'installation, mais d'autres ne peuvent l'être " +"automatiquement. Il est notamment indispensable d'arrêter et redémarrer " +"manuellement xdm car un redémarrage automatique pourrait interrompre une " +"session X11 active." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Les services identifiés comme devant être redémarrés et qui doivent être " +"arrêtés avant la mise à jour sont les suivants : ${services}." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Si vous préférez interrompre la mise à jour maintenant et la reprendre plus " +"tard, ne choisissez pas cette option." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Services à redémarrer lors de la mise à jour de la bibliothèque C :" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Les services et programmes qui utilisent NSS (« Name Service Switch ») " +"doivent être redémarrés car leur système d'authentification risque de ne " +"plus fonctionner (pour des services comme SSH, cela peut empêcher les " +"connexions). Veuillez contrôler et éventuellement corriger la liste des " +"services qui seront redémarrés maintenant (identifiés par le nom de leur " +"script de démarrage)." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Veuillez noter que le redémarrage de telnetd ou sshd n'affectera pas les " +"connexions existantes." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Échec du redémarrage de certains services" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Les services suivants n'ont pas pu être redémarrés lors de la mise à jour de " +"la bibliothèque C :" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Il est nécessaire de les redémarrer vous-même avec la commande « /etc/init.d/" +" start »." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "Redémarrage nécessaire de xscreensaver et xlockmore avant mise à jour" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Une ou plusieurs instances de xscreensaver et/ou de xlockmore ont été " +"détectées sur le système. À cause de la modification de certaines " +"bibliothèques, la mise à niveau de la bibliothèque C entrainera " +"l'impossibilité de s'authentifier. Avant de poursuivre la mise à niveau, ces " +"programmes doivent être redémarrés ou arrêtés pour éviter que des " +"utilisateurs ne puissent plus accéder à leurs sessions." + --- eglibc-2.13.orig/debian/po/ko.po +++ eglibc-2.13/debian/po/ko.po @@ -0,0 +1,205 @@ +# Korean translations for glibc package +# glibc íŒ¨í‚¤ì§€ì— ëŒ€í•œ 한국어 번역문. +# Copyright (C) 2007 THE glibc'S COPYRIGHT HOLDER +# This file is distributed under the same license as the glibc package. +# Sunjae Park , 2007 - 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-03-02 20:33-0500\n" +"Last-Translator: Sunjae Park \n" +"Language-Team: Korean \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "모든 로케ì¼" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "ìƒì„±í•  ë¡œì¼€ì¼ ëª©ë¡:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"로케ì¼ì´ëž€ 여러 언어 중ì—ì„œ ì„ íƒí•˜ì—¬ 사용ìžë“¤ì´ ìžì‹ ì˜ 언어, êµ­ê°€, 문ìž, ì •ë ¬" +"순서 ë“±ì„ ì‚¬ìš©í•  수 있ë„ë¡ í•´ì£¼ëŠ” 구성틀입니다." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"ìƒì„±í•˜ê³ ìž 하는 로케ì¼ì„ ì„ íƒí•˜ì—¬ 주십시오. 기본ì ìœ¼ë¡œëŠ” UTF-8 로케ì¼ì„ ì„ íƒ" +"하시고, 특히 새로 설치하는 시스템ì—서는 ë”ë”ìš± ì´ë¥¼ ì„ íƒí•˜ì‹­ì‹œì˜¤. 기존 시스템" +"ì´ë‚˜ ì†Œí”„íŠ¸ì›¨ì–´ì™€ì˜ ì—­í˜¸í™˜ì„±ì„ ìœ„í•´ì„œëŠ” 다른 ë¬¸ì œì…‹ì„ ì„ íƒí•˜ì…”ë„ ë©ë‹ˆë‹¤." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "ì—†ìŒ" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "시스템 í™˜ê²½ì˜ ê¸°ë³¸ 로케ì¼:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"ë°ë¹„ì•ˆì— ìžˆëŠ” ë§Žì€ ê¾¸ëŸ¬ë¯¸ë“¤ì€ ì‚¬ìš©ìžì—게 맞는 언어로 출력하기 위해 로케ì¼ì„ " +"사용합니다. ìƒì„±ëœ ë¡œì¼€ì¼ ì¤‘ì—ì„œ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 로케ì¼ë¡œ 사용할 로케ì¼ì„ ì„ íƒ" +"하실 수 있습니다." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"ì´ ì„ íƒì€ 시스템 ì „ì²´ì˜ ê¸°ë³¸ 언어를 결정합니다. 기본 언어를 사용할 수 없는 사" +"ìš©ìžë„ 있는 복수 ì‚¬ìš©ìž ì‹œìŠ¤í…œì¼ ê²½ìš°ì—는 ê·¸ 사용ìžë“¤ì´ 시스템 ì‚¬ìš©ì— ì–´ë ¤ì›€" +"ì„ ê²ªìœ¼ì‹¤ 수 있습니다." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "지금 glibc를 업그레ì´ë“œ 하시겠습니까?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"NSS를 ì‚¬ìš©ì¤‘ì¸ ì„œë¹„ìŠ¤ì™€ í”„ë¡œê·¸ëž¨ë“¤ì„ ë‹¤ì‹œ 시작시키지 않으면 ìƒ‰ì¸ ìž‘ì—…ì´ë‚˜ ì¸" +"ì¦ ìž‘ì—…ì„ ë” ì´ìƒ 사용할 수 없게 ë©ë‹ˆë‹¤. sshì´ë‚˜ telnetd ë“±ì˜ ì„œë¹„ìŠ¤ë“¤ ì¼ë¶€" +"는 설치 ê³¼ì •ì´ ë‹¤ì‹œ ì‹œìž‘ì„ ì‹œí‚µë‹ˆë‹¤ë§Œ, ìžë™ìœ¼ë¡œ 다시 시작시키지 못하는 프로그" +"ëž¨ë„ ìžˆìŠµë‹ˆë‹¤. glibc 업그레ì´ë“œ 후 사용ìžê°€ ì§ì ‘ 다시 정지시킨 후 다시 시작시" +"켜야 하는 대표ì ì¸ 프로그램으로 xdmì´ ìžˆìŠµë‹ˆë‹¤. ìžë™ìœ¼ë¡œ 다시 ì‹œìž‘ì„ ì‹œí‚¤ë©´ " +"ì‚¬ìš©ì¤‘ì¸ X11 ì„¸ì…˜ì„ ì¤‘ì§€ì‹œí‚¬ 수 있기 때문입니다." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"업그레ì´ë“œ 하기 ì „ì— ë©ˆì¶°ì•¼ 하는 ë‹¤ìŒ ì„œë¹„ìŠ¤ë“¤ì„ ìŠ¤í¬ë¦½íŠ¸ê°€ ê°ì§€í–ˆìŠµë‹ˆë‹¤: " +"${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"업그레ì´ë“œë¥¼ ì¼ë‹¨ 중지시키고 ë‚˜ì¤‘ì— ê³„ì†í•˜ì‹œë ¤ë©´ ë‹¤ìŒ ì§ˆë¬¸ì— Noë¼ê³  답해주시" +"기 ë°”ëžë‹ˆë‹¤." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "GNU libc ë¼ì´ë¸ŒëŸ¬ë¦¬ 업그레ì´ë“œë¡œ ì¸í•´ 다시 시작시킬 서비스 목ë¡:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"NSS를 ì‚¬ìš©ì¤‘ì¸ ì„œë¹„ìŠ¤ì™€ í”„ë¡œê·¸ëž¨ë“¤ì„ ë‹¤ì‹œ 시작시키지 않으면 ìƒ‰ì¸ ìž‘ì—…ì´ë‚˜ ì¸" +"ì¦ ìž‘ì—…ì„ ë” ì´ìƒ 사용할 수 없게 ë©ë‹ˆë‹¤(ssh와 ê°™ì€ ì„œë¹„ìŠ¤ì˜ ê²½ìš° 로그ì¸ì— ì˜" +"í–¥ì„ ì¤„ 수 있습니다). 다시 시작시킬 init.d 스í¬ë¦½íŠ¸ 서비스를 빈칸으로 ì—°ê²°ì‹œ" +"킨 ì´ ëª©ë¡ì„ 검토하여 필요한 경우 수정해주십시오." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"참고: sshd/telnetd를 다시 시작시키ë”ë¼ë„ 기존 ì—°ê²°ì—는 ì˜í–¥ì´ ì—†ì„ ê²ƒìž…ë‹ˆë‹¤." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "GNU libc 업그레ì´ë“œë¡œ ì¸í•œ 서비스 다시 ì‹œìž‘ì— ì‹¤íŒ¨" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"ë‹¤ìŒ ì„œë¹„ìŠ¤ë“¤ì€ GNU libc ë¼ì´ë¸ŒëŸ¬ë¦¬ 업그레ì´ë“œë¡œ ì¸í•œ 다시 ì‹œìž‘ì— ì‹¤íŒ¨í•˜ì˜€ìŠµ" +"니다:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"ì´ ì„œë¹„ìŠ¤ë“¤ì€ '/etc/init.d/ start'ë¡œ ì§ì ‘ 다시 시작시키셔야 합니다." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/ta.po +++ eglibc-2.13/debian/po/ta.po @@ -0,0 +1,185 @@ +# translation of glibc.po to TAMIL +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Dr.T.Vasudevan , 2007. +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2007-04-24 19:42+0530\n" +"Last-Translator: Dr.T.Vasudevan \n" +"Language-Team: TAMIL \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "எலà¯à®²à®¾ உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடஙà¯à®•à®³à¯à®®à¯" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "உரà¯à®µà®¾à®•à¯à®• வேணà¯à®Ÿà®¿à®¯ உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடஙà¯à®•à®³à¯" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடஙà¯à®•à®³à¯ எனà¯à®ªà®¤à¯ பல மொழிகளà¯à®•à¯à®•à®¿à®Ÿà¯ˆà®¯à¯‡ மாறவà¯à®®à¯ பயனரà¯à®•à®³à¯ˆ அவரவர௠மொழி, நாடà¯, " +"கà¯à®±à®¿à®•à®³à¯, à®®à¯à®±à¯ˆà®®à¯ˆà®•à®³à¯ ஆகியவறà¯à®±à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ பயனாகà¯à®®à¯ சடà¯à®Ÿ அமைபà¯à®ªà¯" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"எநà¯à®¤ உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடதà¯à®¤à¯ˆ உரà¯à®µà®¾à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯ என தேரà¯à®µà¯ செயà¯à®•. à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà®¾à®• UTF-8 உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ " +"இடஙà¯à®•à®³à¯ தேரà¯à®µà¯ செயà¯à®¯à®ªà®Ÿ வேணà¯à®Ÿà¯à®®à¯. கà¯à®±à®¿à®ªà¯à®ªà®¾à®• பà¯à®¤à®¿à®¯ நிறà¯à®µà®²à¯à®•à®³à¯à®•à¯à®•à¯. மறà¯à®± கà¯à®±à®¿à®¯à®¾à®•à¯à®• " +"தொகà¯à®ªà¯à®ªà¯à®•à®³à¯ பழைய கணினிகள௠மறà¯à®±à¯à®®à¯ மெனà¯à®ªà¯Šà®°à¯à®Ÿà¯à®•à®³à¯à®Ÿà®©à¯ பின௠நோகà¯à®•à¯ இசைவà¯à®•à¯à®•à¯ பயனà¯à®ªà®Ÿà¯à®®à¯." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "ஒனà¯à®±à¯à®®à®¿à®²à¯à®²à¯ˆ" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "கணினி சூழலà¯à®•à¯à®•à¯ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடமà¯" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"பயனரà¯à®•à¯à®•à¯ சரியான மொழியில௠உரையை காடà¯à®Ÿ டெபியனின௠பல பொதிகள௠உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடதà¯à®¤à¯ˆ " +"பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•à®¿à®©à¯à®±à®©. உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®µà®±à¯à®±à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ கணினிகà¯à®•à¯ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ உளà¯à®³à®¾à®°à¯à®¨à¯à®¤ இடதà¯à®¤à¯ˆ " +"தேரà¯à®µà¯ செயà¯à®¯à®µà¯à®®à¯." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"இத௠மà¯à®´à¯ கணினிகà¯à®•à¯ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ மொழியை தேரà¯à®µà¯ செயà¯à®¯à¯à®®à¯. இத௠பலர௠பயன௠படà¯à®¤à¯à®¤à¯à®®à¯ " +"கணினியானால௠எலà¯à®²à®¾ பயனரà¯à®•à®³à¯à®®à¯ à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ மொழியை அறிநà¯à®¤à®¿à®°à®¾à®µà®¿à®Ÿà®¿à®²à¯ அவரà¯à®•à®³à¯ தà¯à®©à¯à®ªà¯à®±à¯à®µà®°à¯." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/nl.po +++ eglibc-2.13/debian/po/nl.po @@ -0,0 +1,220 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-02-27 08:28+0100\n" +"Last-Translator: Bart Cornelis \n" +"Language-Team: debian-l10n-dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Dutch\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Alle lokalisaties" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Te genereren lokalisaties:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Lokalisatie is het raamwerk om om te schakelen tussen verschillende talen en " +"laat gebruikers toe om hun eigen taal, land, karakterset, enzovoort te " +"gebruiken." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Welke lokalisaties wilt u laten genereren? Standaard kiest u, zeker voor " +"nieuwe installaties, best UTF-8 lokalisaties. Andere karaktersets kunnen " +"nuttig zijn voor compatibiliteit met oudere systemen of software." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Geen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Standaardlokalisatie voor dit systeem:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Veel Debian-pakketten gebruiken lokalisaties om de tekst in de voor de " +"gebruiker juiste taal weer te geven. U kunt u de standaardlokalisatie voor " +"het systeem kiezen uit de gegeneerde lokalisaties." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Dit bepaalt de standaardtaal voor het volledige systeem. Op systemen met " +"meerdere gebruikers kunt u problemen krijgen als niet alle gebruikers de " +"gekozen taal spreken; in dat geval kunt u misschien beter de " +"standaardlokalisatie niet veranderen." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Wilt u glibc nu opwaarderen?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Draaiende diensten en programma's die NSS gebruiken dienen herstart te " +"worden. Zo niet kunnen ze mogelijk geen opzoekingen en authenticatie meer " +"doen. Het Installatieproces kan sommige diensten (zoals ssh en telnetd) " +"herstarten, maar andere diensten kunnen niet automatisch herstart worden. " +"Een zo'n dienst die handmatig dient gestopt en gestart te worden na de " +"opwaardering van glibc is xdm, dit omdat een automatische herstart uw " +"actieve X11-sessies verbreekt." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Dit script heeft de volgende diensten ontdekt die gestopt moeten worden voor " +"de opwaardering: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Als u de opwaardering nu wilt afbreken en hiermee later wilt verder gaan " +"dient u zo meteen te weigeren." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Tijdens 'GNU libc'-opwaardering te herstarten diensten:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Draaiende diensten en programma's die NSS gebruiken dienen herstart te " +"worden, zo niet kunnen ze mogelijk geen opzoekingen en authenticatie meer " +"doen (voor diensten zoals ssh kan dit gevolgen hebben voor de mogelijkheid " +"om in te loggen). Gelieve de volgende, met spaties gescheiden lijst van init." +"d-scripts voor diensten die herstart dienen te worden te controleren en " +"indien nodig bij te werken." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Opmerking: herstarten van sshd/telnetd heeft normaal geen effect op " +"bestaande verbindingen." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" +"Herstarten van sommige diensten bij de opwaardering van GNU libc is mislukt." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"De volgende diensten konden niet herstart worden na de opwaardering van GNU " +"libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"U dient deze diensten handmatig te herstarten via het commando '/etc/init.d/" +" start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/es.po +++ eglibc-2.13/debian/po/es.po @@ -0,0 +1,253 @@ +# eglibc debconf translation to spanish +# Copyright (C) 2003, 2006, 2007, 2008, 2010 Software in the Public Interest +# This file is distributed under the same license as the eglibc-source package. +# +# Changes: +# - Initial translation +# Carlos Valdivia Yagüe , 2003 +# - Revisions: +# Carlos Valdivia Yagüe , 2006, 2007, 2008 +# Omar Campagne 2010 +# +# Traductores, si no conocen el formato PO, merece la pena leer la +# documentación de gettext, especialmente las secciones dedicadas a este +# formato, por ejemplo ejecutando: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Equipo de traducción al español, por favor lean antes de traducir +# los siguientes documentos: +# +# - El proyecto de traducción de Debian al español +# http://www.debian.org/intl/spanish/ +# especialmente las notas y normas de traducción en +# http://www.debian.org/intl/spanish/notas +# +# - La guía de traducción de po's de debconf: +# /usr/share/doc/po-debconf/README-trans +# o http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.10.2-6\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-04-19 11:21+0200\n" +"Last-Translator: Omar Campagne \n" +"Language-Team: Debian L10n Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Todas las configuraciones regionales («locales»)" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Seleccione las configuraciones regionales que desea generar:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Las configuraciones regionales componen un sistema para cambiar entre varios " +"idiomas, y permite a los usuarios utilizar su idioma, país, juego de " +"caracteres, ordenación alfanumérica, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Por favor, elija las configuraciones regionales que desea generar. Se " +"recomiendan las configuraciones regionales UTF-8, especialmente para " +"instalaciones nuevas. Otros juegos de caracteres pueden resultar útiles por " +"compatibilidad con sistemas y software antiguo." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ninguno" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Configuración regional predeterminada para el entorno del sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Muchos paquetes en Debian utilizan las configuraciones regionales para " +"mostrar el texto en el idioma de los usuarios. Puede elegir la opción " +"predeterminada de entre las configuraciones regionales que ha generado." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Esto seleccionará el idioma predeterminado de todo el sistema. Si se trata " +"de un sistema con varios usuarios en el que no todos hablan el idioma " +"elegido, pueden tener problemas." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "¿Desea actualizar glibc ahora?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Los servicios y programas en ejecución que utilicen NSS necesitan " +"reiniciarse, o por el contrario puede que ya no sean capaces de realizar " +"búsquedas o autenticación. El proceso de instalación puede reiniciar algunos " +"servicios (tales como «ssh» o «telnetd»), pero otros programas no pueden " +"reiniciarse automáticamente. Uno de dichos programas que se necesitan " +"parar y reiniciar manualmente tras la actualización de glibc es xdm, " +"puesto que un reinicio automático podría desconectar sus sesiones X11 " +"activas." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Este programa detectó los siguientes servicios instalados que se deben " +"detener antes de la actualización: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Si desea interrumpir la actualización y continuar más tarde, conteste «No» a " +"continuación." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Servicios a reiniciar para la actualización de la biblioteca libc de GNU:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Los servicios y programas en ejecución que utilicen NSS se necesitan " +"reiniciar, o por el contrario puede que ya no sean capaces de realizar " +"búsquedas o autenticación (para servicios como «ssh», esto puede evitar " +"afectar a su capacidad para ingresar en el sistema). Por favor, revise la " +"siguiente lista de scripts de «init.d», separada por espacios, de los " +"servicios a reiniciar ahora, y corríjala si es necesario." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Aviso: reiniciar «sshd»/«telnetd» no debería afectar a las conexiones activas." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Fallo al reiniciar algunos servicios para la actualización de la " +"biblioteca libc de GNU" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Los siguientes servicios no se pudieron reiniciar para la actualización de " +"la biblioteca libc de GNU:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Tendrá que iniciarlos manualmente ejecutando «/etc/init.d/ start»." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "Se deben reiniciar xscreensaver y xlockmore antes de actualizar" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Se han detectado una o más instancias de los programas xscreensaver o " +"xlockmore. La actualización de la biblioteca libc de GNU podría impedir que " +"pueda autenticarse en estos programas debido a cambios incompatibles en las " +"bibliotecas. Debería procurar que estos programas se reinicien o se paren " +"antes de continuar con la actualización. Así evitará que los usuarios queden " +"bloqueados y sin poder reanudar sus sesiones actuales." + --- eglibc-2.13.orig/debian/po/gl.po +++ eglibc-2.13/debian/po/gl.po @@ -0,0 +1,213 @@ +# translation of eglibc_2.11.2-2_gl.po to Galician +# Galician translation of glibc's templates +# This file is distributed under the same license as the glibc package. +# +# Jacobo Tarrio , 2006, 2007, 2008. +# Jorge Barreiro , 2010. +msgid "" +msgstr "" +"Project-Id-Version: eglibc_2.11.2-2_gl\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-08-13 01:43+0200\n" +"Last-Translator: Jorge Barreiro \n" +"Language-Team: Galician \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Todas as configuracións locais" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Configuracións locais a xerar:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"O sistema de configuracións locais permite ter varios idiomas, e que os " +"usuarios poidan empregar o seu idioma, país, alfabeto, orde alfabética, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Escolla as configuracións locais a xerar. Debería escoller configuracións " +"locais UTF-8 por defecto, especialmente en instalacións novas. Os outros " +"xogos de caracteres poden ser útiles para a compatibilidade con sistemas e " +"software antigos." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ningunha" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Configuración local por defecto para o ambiente:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Moitos paquetes de Debian empregan configuracións locais para amosar texto " +"aos usuarios no idioma correcto. Pode escoller unha configuración local por " +"defecto para o sistema entre as configuracións locais xeradas." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Con isto hase escoller o idioma de todo o sistema. Se este sistema ten " +"varios usuarios e non todos coñecen o idioma por defecto, han ter " +"dificultades." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "¿Quere actualizar glibc agora?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"É necesario reiniciar os servizos e programas que están a empregar NSS; se " +"non se fai, é posible que deixen de poder realizar buscas ou autenticacións. " +"O proceso de instalación ode reiniciar algúns servizos (tales coma ssh ou " +"telnetd), pero outros programas non se poden reiniciar automaticamente. Un " +"deses programas que precisa de detención e reinicio manuais trala " +"actualización de glibc é xdm - xa que o reinicio automático podería " +"desconectar as súas sesións de X11 activas." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Este script detectou os seguintes servizos instalados que se deben deter " +"antes da actualización: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Se quere interromper agora a actualización e continuala despois, resposte " +"negativamente á seguinte pregunta." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Servizos a reiniciar para a actualización da biblioteca GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"É necesario reiniciar os servizos e programas que están a empregar NSS; se " +"non se fai, é posible que deixen de poder realizar buscas ou autenticacións " +"(para algúns servizos, coma ssh, isto pode afectar á súa capacidade de se " +"conectar á máquina). Revise a seguinte lista de scripts de init.d de " +"servizos que se van reiniciar agora, e corríxaa se é preciso." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "Nota: o reinicio de sshd/telnetd non debería afectar ás conexións existentes." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Problemas ao reiniciar algúns servizos para a actualización de GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Non se puido reiniciar os seguintes servizos para a actualización da " +"biblioteca GNU libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Ha ter que reinicialos manualmente executando \"/etc/init.d/ start" +"\"." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "xscreensaver e xlockmore deben ser reiniciados antes de actualizar" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Detectáronse unha ou máis instancias de xscreensaver ou xlockmore no sistema. " +"Debido a cambios incompatibles, a actualización da biblioteca GNU libc non lle " +"deixará autenticarse en eses programas. Debe encargarse de que " +"eses programas sexan reiniciados ou parados antes de continuar con esta " +"actualización para evitar que non poida volver a entrar nas sesións actuais." + --- eglibc-2.13.orig/debian/po/it.po +++ eglibc-2.13/debian/po/it.po @@ -0,0 +1,214 @@ +# Italian (it) translation of debconf templates for eglibc +# Copyright (C) 2006 Free Software Foundation, Inc. +# This file is distributed under the same license as the eglibc package. +# Luca Monducci , 2005-2009. +# +msgid "" +msgstr "" +"Project-Id-Version: eglibc 2.9 debconf templates\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2009-05-31 10:25+0200\n" +"Last-Translator: Luca Monducci \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Tutti i «locale»" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "«Locale» da generare:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"I «locale» sono l'infrastruttura che permette di cambiare la lingua e " +"consente agli utenti di utilizzare la propria lingua, paese, caratteri, " +"criteri di ordinamento, ecc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Scegliere quali «locale» generare. I «locale» UTF-8 dovrebbero essere già " +"prescelti, in particolare sulle nuove installazioni. Gli altri set di " +"caratteri potrebbero essere utili per risolvere problemi di compatibilità " +"all'indietro con sistemi o programmi più vecchi." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Nessuno" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "«Locale» predefinito sul sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Molti pacchetti Debian usano i «locale» per mostrare messaggi nella lingua " +"dell'utente. È possibile scegliere, fra quelli generati, un «locale» come " +"predefinito per il sistema." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Questo imposta la lingua predefinita per l'intero sistema. Se questo è un " +"sistema multi-utente e non tutti gli utenti parlano la lingua predefinita " +"alcuni di essi potrebbero avere delle difficoltà." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Aggiornare glibc adesso?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"I servizi e i programmi in esecuzione che usano NSS devono essere riavviati " +"altrimenti potrebbero non essere più in grado di effettuare ricerche o " +"autenticazioni. Il processo d'installazione è in grado di riavviare alcuni " +"servizi (come ssh o telnetd), ma altri programmi non possono essere " +"riavviati automaticamente. Uno dei programmi che devono essere fermati e " +"riavviati manualmente dopo aver aggiornato glibc è xdm perché il riavvio " +"automatico potrebbe disconnettere le sessioni X11 attive." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Questo script ha rilevato che i seguenti servizi devono essere fermati prima " +"dell'aggiornamento: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Per interrompere adesso l'aggiornamento e riprenderlo in seguito, rispondere " +"«No» alla questa domanda." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Servizi da riavviare per l'aggiornamento della libreria GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"I servizi e i programmi in esecuzione che usano NSS devono essere riavviati " +"altrimenti potrebbero non essere più in grado di effettuare ricerche o " +"autenticazioni (i servizi tipo ssh potrebbero avere problemi d'accesso). " +"Controllare il seguente elenco di nomi di script per init.d separati da uno " +"spazio relativi ai servizi che devono essere riavviati e, se necessario, " +"correggerlo." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Nota: il riavvio di sshd/telnetd non ha alcun effetto sulle connessioni " +"esistenti." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Errore nel riavvio di alcuni servizi per l'aggiornamento di GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Non è stato possibile riavviare i seguenti servizi per l'aggiornamento della " +"libreria GNU libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "È necessario avviarli manualmente con «/etc/init.d/ start»." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "Riavvio di xscreensaver e xlockmore prima dell'aggiornamento" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Su questo sistema sono state rilevate una o più istanze di xscreensaver o " +"xlockmore in esecuzione. A causa di modifiche incompatibili nella libreria, " +"l'aggiornamento della libreria GNU libc impedirà di autenticarsi con questi " +"programmi. È necessario riavviare o fermare questi servizi prima di " +"proseguire con questo aggiornamento per evitare di buttare fuori gli utenti " +"dalle sessioni attualmente aperte." --- eglibc-2.13.orig/debian/po/da.po +++ eglibc-2.13/debian/po/da.po @@ -0,0 +1,213 @@ +# Danish translation eglibc. +# Copyright (C) 2010 astk & nedenstÃ¥ende oversættere. +# This file is distributed under the same license as the astk package. +# Morten Brix Pedersen . 2006. +# Joe Hansen , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc-2.3.2.ds1\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-06-11 17:30+01:00\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Alle lokalitetsfiler" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Lokalitetsfiler der skal genereres:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Lokalitetsfilerne er en ramme, sÃ¥ du kan skifte imellem forskellige sprog og give " +"brugerne mulighed for at anvende deres eget sprog, land, tegn, sorteringsrækkefølge " +"med mere." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Vælg venligst hvilken lokalitet der skal oprettes. UTF-8-lokaliteter bør " +"vælges som standard, specielt for nyinstallationer. Andre tegnsæt kan være " +"brugbare for kompatibilitet bagud med ældre systemer og programmer." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ingen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Standardlokalitet til systemmiljøet:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Mange pakker i Debian bruger lokaliteter til at vise tekst i det korrekte " +"sprog til brugerne. Du kan vælge en standardlokalitet til systemet fra de " +"oprettede lokaliteter." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Dette vil sætte sproget for hele systemet. Hvis dette system er et " +"flerbrugersystem, hvor ikke alle brugerne er i stand til at tale standardsproget, " +"vil de løbe ind i problemer." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Ønsker du at opgradere glibc nu?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Kørende tjenester og programmer som bruger NSS skal genstartes, ellers vil " +"de mÃ¥ske ikke mere kunne foretage opslag eller opnÃ¥ godkendelse. " +"Installationsprocessen er i stand til at genstarte nogle tjenester (sÃ¥som " +"ssh eller telnetd), men andre programmer kan ikke genstartes automatisk. " +"Et sÃ¥dant program som kræver manuel stop og genstart efter glibc-opgraderingen " +"er xdm - da automatisk genstart kan afbryde dine aktive X11-sessioner." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Dette skript registrerede de følgende installerede tjenester, som skal stoppes " +"før opgradering: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Hvis du ønsker at afbryde opgraderingen nu og fortsætte senere, sÃ¥ svar " +"venligst nej til spørgsmÃ¥let nedenfor." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Tjenester til genstart for GNU libc-biblioteksopgradering:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Kørende tjenester og programmer som bruger NSS skal genstartes, ellers vil " +"de mÃ¥ske ikke mere kunne foretage opslag eller opnÃ¥ godkendelse (for " +"tjenester sÃ¥som ssh, kan dette pÃ¥virke din mulighed for at logge ind). " +"Gennemse venligst den følgende kommaadskilte liste af init.d-skripter til " +"tjenester som genstartes nu, og ret den hvis behovet er der." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Bemærk: Genstart af sshd/telnetd bør ikke pÃ¥virke eksisterende forbindelser." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Kunne ikke genstarte udvalgte tjenester for GNU libc-opgraderingen" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"De følgende tjenester kunne ikke genstartes for GNU " +"libc-biblioteksopgraderingen:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Du skal genstarte disse manuelt ved at køre '/etc/init.d/ start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "xscreensaver og xlockmore skal genstartes før opgradering" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"En eller flere kørende instanser af xscreensaver eller xlockmore er blevet " +"registreret pÃ¥ dette system. PÃ¥ grund af biblioteksændringer der ikke er " +"kompatible, vil opgraderingen af GNU libc-biblioteket gøre, at du ikke kan " +"godkende disse programmer. Du skal sørge for, at disse programmer bliver " +"genstartet eller stoppet, før du fortsætter denne opgradering, sÃ¥ du undgÃ¥r " +"at lukke dine brugere ud af deres igangværende sessioner." + --- eglibc-2.13.orig/debian/po/fi.po +++ eglibc-2.13/debian/po/fi.po @@ -0,0 +1,220 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-04-01 21:12+0200\n" +"Last-Translator: Esko Arajärvi \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Kaikki maa-asetukset" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Muodostettavat maa-asetukset." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Maa-asetusten avulla on mahdollista vaihtaa käytettävää kieltä ja antaa " +"käyttäjien asettaa haluamansa kieli, maa, merkistö, aakkostustapa, jne." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Valitse mitkä maa-asetukset luodaan. Oletuksena tulisi valita UTF-8-tyypin " +"asetuksia, erityisesti uusissa asennuksissa. Muut merkkijoukot voi olla " +"tarpeen vanhempien järjestelmien ja ohjelmien kanssa yhteensopivuussyistä." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ei mikään" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Järjestelmäympäristön oletusmaa-asetus:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Monet Debianin paketit käyttävät maa-asetuksia näyttääkseen tekstit " +"käyttäjälle oikealla kielellä. Järjestelmän oletusmaa-asetus voidaan valita " +"luoduista maa-asetuksista." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Tämä asettaa koko järjestelmän oletuskielen. Jos tällä järjestelmällä on " +"useita käyttäjiä, eivätkä kaikki käyttäjät ymmärrä oletuskieltä, heillä " +"tulee olemaan ongelmia." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Tulisiko glibc päivittää nyt?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Käynnissä olevat palvelut ja ohjelmat, jotka käyttävät NSS:ää, täytyy " +"käynnistää uudelleen. Muuten ne eivät välttämättä enää pysty tekemään " +"etsintöjä tai tunnistautumisia. Asennusprosessi pystyy käynnistämään jotkin " +"palvelut uudelleen (esimerkiksi ssh:n ja telnetdin), mutta muita ohjelmia ei " +"voida käynnistää automaattisesti uudelleen. Yksi tällainen ohjelma, joka " +"täytyy käsin pysäyttää ja käynnistää uudelleen glibcin päivityksen jälkeen, " +"on xdm. Tämä johtuu siitä, että automaattinen uudelleenkäynnistys saattaisi " +"keskeyttää aktiiviset X11-istunnot." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Tämä komentosarja löysi seuraavat asennetut palvelut, jotka tulee pysäyttää " +"ennen päivitystä: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Jos päivitys halutaan keskeyttää nyt ja jatkaa myöhemmin, älä valitse tätä " +"vaihtoehtoa." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" +"Palvelut, jotka tulee käynnistää uudelleen GNU libc -kirjastoa " +"päivitettäessä:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Käynnissä olevat palvelut ja ohjelmat, jotka käyttävät NSS:ää, täytyy " +"käynnistää uudelleen. Muuten ne eivät välttämättä enää pysty tekemään " +"etsintöjä tai tunnistautumisia (esimerkiksi ssh:n kanssa kirjautuminen ei " +"välttämättä onnistu). Tarkista alla oleva välilyönnein eroteltu lista niiden " +"palveluiden init.d-komentosarjoista, jotka käynnistetään nyt uudelleen, ja " +"korjaa sitä tarvittaessa." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Huomautus: sshd:n tai telnetd:n uudelleenkäynnistyksen ei pitäisi vaikuttaa " +"olemassa oleviin yhteyksiin." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" +"Joidenkin palveluiden käynnistys epäonnistui päivitettäessä GNU libc:tä" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Seuraavia palveluita ei voitu käynnistää uudelleen päivitettäessä GNU libc -" +"kirjastoa:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Nämä palvelut tulee käynnistää käsin ajamalla â€/etc/init.d/ startâ€." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/de.po +++ eglibc-2.13/debian/po/de.po @@ -0,0 +1,218 @@ +# Translation of glibc debconf templates to German +# Copyright (C) Helge Kreutzmann , 2006-2009. +# This file is distributed under the same license as the glibc package. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.9-5\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2009-03-16 19:04+0100\n" +"Last-Translator: Helge Kreutzmann \n" +"Language-Team: de \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Alle Standorteinstellungen" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Zu generierende Standorteinstellungen (»locales«):" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Standorteinstellungen ist ein System, um zwischen verschiedenen Sprachen " +"umzuschalten. Benutzer können damit ihre Sprache, ihr Land, ihren " +"Zeichensatz, ihre Sortierreihenfolge und anderes mehr festlegen." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Bitte wählen Sie aus, welche Standorteinstellungen erzeugt werden sollen. " +"UTF-8-Standorteinstellungen sollten standardmäßig ausgewählt werden, " +"insbesondere für neue Installationen. Andere Zeichensätze könnten für " +"Rückkompatibilität mit älteren Systemen und Software nützlich sein." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Keine" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Standard-Standorteinstellung für die Systemumgebung?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Viele Debian-Pakete benutzen Standorteinstellungen, um Text in der für die " +"Benutzer korrekten Sprache anzuzeigen. Sie können aus den generierten " +"Standorteinstellungen einen Standard für Ihr System auswählen." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Bemerkung: Dies wählt die Standardsprache für das gesamte System. Falls dies " +"ein Mehrbenutzer-System ist und nicht alle Benutzer die Standardsprache " +"sprechen, dann werden diese Schwierigkeiten haben." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Möchten Sie das Upgrade von Glibc jetzt durchführen?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Laufende Dienste und Programme, die NSS verwenden, müssen neu gestartet " +"werden, da sie andernfalls keine Überprüfungen oder Authentisierung mehr " +"durchführen können. Der Installationsprozess kann einige Dienste neu starten " +"(wie Ssh oder Telnetd), aber andere Programme können nicht automatisch neu " +"gestartet werden. Eines dieser Programme, die nach dem Upgrade von Glibc ein " +"manuelles Stoppen und Neustarten benötigen ist Xdm, da ein automatischer " +"Neustart Sie von Ihren aktiven X11-Sitzung trennen könnte." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Dieses Skript erkannte die folgenden installierten Dienste, die vor dem " +"Upgrade gestoppt werden müssen: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Falls Sie das Upgrade jetzt unterbrechen und später Fortfahren möchten, " +"antworten Sie bitte auf die unten folgende Frage mit Nein." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" +"Dienste, die beim GNU Libc-Bibliotheks-Upgrade neu gestartet werden sollen:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Laufende Dienste und Programme, die NSS verwenden, müssen neu gestartet " +"werden, da sie andernfalls keine Überprüfungen oder Authentisierung mehr " +"durchführen können (für Dienste wie ssh kann dies die Möglichkeit der " +"Anmeldung betreffen). Bitte prüfen Sie, welche der Dienste in der folgenden, " +"durch Leerzeichen getrennte Liste von init.d-Skripten neu gestartet werden " +"sollen, und korrigieren Sie diese falls notwendig." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Hinweis: das Neustarten von sshd/telnetd sollte existierende Verbindungen " +"nicht beeinträchtigen." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Fehler beim Neustarten einiger Dienste für das GNU Libc-Upgrade" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Die folgenden Dienste konnten für das GNU Libc-Upgrade nicht neu gestartet " +"werden:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Sie müssen diese manuell starten, indem Sie »/etc/init.d/ start« " +"ausführen." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "Xscreensaver und Xlockmore müssen vor dem Upgrade neu gestartet werden" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Eine oder mehrere laufende Instanzen von Xscreensaver oder Xlockmore sind " +"auf diesem System entdeckt worden. Aufgrund inkompatibler Änderungen in " +"Bibliotheken wird das GNU Libc-Upgrade Sie außerstande setzen, sich gegenüber" +"diesen Programmen zu authentifizieren. Sie sollten dafür sorgen, dass diese" +"Programme neu gestartet oder beendet werden, bevor Sie dieses Upgrade " +"fortsetzen, damit Ihre Benutzer nicht aus ihren laufenden Sitzungen " +"ausgesperrt werden." + --- eglibc-2.13.orig/debian/po/ml.po +++ eglibc-2.13/debian/po/ml.po @@ -0,0 +1,190 @@ +# Translation of glibc debconf template. +# Copyright (C) 2007 Free Software Foundation, Inc +# This file is distributed under the same license as the glibc package. +# അനൂപàµ|Anoop പി|P , ലാലàµ|Lalu കെആരàµâ€|KR , സജീവàµ|Sajeev പിആരàµâ€|PR, 2007 +# +msgid "" +msgstr "" +"Project-Id-Version: Glibc 2007_05_26\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2007-05-26 15:09+0530\n" +"Last-Translator: അനൂപàµ|Anoop പി|P , ലാലàµ|Lalu കെആരàµâ€|KR " +",സജീവൠ|Sajeev പിആരàµâ€|PR \n" +"Language-Team: Swathanthra|à´¸àµà´µà´¤à´¨àµà´¤àµà´° Malayalam|മലയാളം Computing|à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´¿à´™àµà´™àµ \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Language: Malayalam\n" +"X-Poedit-Country: INDIA\n" +"X-Poedit-SearchPath-0: /home/mobin\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "à´Žà´²àµà´²à´¾ ലൊകàµà´•àµ‡à´²àµà´•à´³àµà´‚" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "സൃഷàµà´Ÿà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµ‡à´£àµà´Ÿ ലൊകàµà´•àµ‡à´²àµà´•à´³àµâ€:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"വിവിധ ഭാഷകളിലàµâ€ നിനàµà´¨àµ à´¸àµà´µà´¨àµà´¤à´‚ ഭാഷ, രാജàµà´¯à´‚, à´…à´•àµà´·à´°à´™àµà´™à´³àµâ€, à´…à´•àµà´·à´°à´•àµà´°à´®à´‚ à´®àµà´¤à´²à´¾à´¯à´µ ഉപയോഗികàµà´•à´¾à´¨à´¾à´¯à´¿ " +"ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† സഹായികàµà´•àµà´¨àµà´¨ à´šà´Ÿàµà´Ÿà´•àµà´•àµ‚à´Ÿàµà´•à´³à´¾à´£àµ ലൊകàµà´•àµ‡à´²àµà´•à´³àµâ€." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"ദയവായി സൃഷàµà´Ÿà´¿à´•àµà´•àµ‡à´£àµà´Ÿ ലൊകàµà´•àµ‡à´²àµà´•à´³àµâ€ തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•. à´ªàµà´¤à´¿à´¯ ഇനàµâ€à´¸àµà´±àµà´±à´¾à´²àµ‡à´·à´¨àµà´•à´³àµâ€à´•àµà´•àµ à´¸àµà´µà´¤àµ‡ തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´¨àµà´¨à´¤àµ " +"UTF-8 ലൊകàµà´•àµ‡à´²àµà´•à´³àµâ€ ആയിരികàµà´•àµà´‚. മറàµà´±àµ à´…à´•àµà´·à´°à´•àµà´•àµ‚à´Ÿàµà´Ÿà´™àµà´™à´³àµâ€ പഴയ സിസàµà´±àµà´±à´™àµà´™à´³àµà´‚ സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯à´±àµà´•à´³àµà´®à´¾à´¯à´¿ " +"പിനàµà´¨àµ‹à´Ÿàµà´Ÿàµà´³àµà´³ പൊരàµà´¤àµà´¤à´¤àµà´¤à´¿à´¨à´¾à´¯à´¿ ഉപയോഗപàµà´°à´¦à´®à´¾à´¯àµ‡à´¯àµà´•àµà´•à´¾à´‚. " + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "സിസàµà´±àµà´±à´‚ പരിസരതàµà´¤à´¿à´¨àµ വേണàµà´Ÿà´¿à´¯àµà´³à´³ സഹജമായ ലൊകàµà´•àµ‡à´²àµâ€:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´µàµ‡à´£àµà´Ÿà´¿ ശരിയായ ഭാഷയിലàµâ€ ടെകàµà´¸àµà´±àµà´±àµ à´ªàµà´°à´¦à´°àµâ€à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´’à´°àµà´ªà´¾à´Ÿàµ ഡെബിയനàµâ€ " +"പാകàµà´•àµ‡à´œàµà´•à´³àµâ€ ലൊകàµà´•àµ‡à´²àµâ€ ഉപയോഗികàµà´•àµà´¨àµà´¨àµ. സൃഷàµà´Ÿà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ ലൊകàµà´•àµ‡à´²àµà´•à´³à´¿à´²àµâ€ നിനàµà´¨àµ സഹജമായ ലൊകàµà´•àµ‡à´²àµâ€ " +"സിസàµà´±àµà´±à´¤àµà´¤à´¿à´¨àµà´µàµ‡à´£àµà´Ÿà´¿ നിങàµà´™à´³àµâ€à´•àµà´•àµ തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"സിസàµà´±àµà´±à´¤àµà´¤à´¿à´²àµâ€ à´Žà´²àµà´²à´¾à´¯à´¿à´Ÿà´¤àµà´¤àµ‡à´¯àµà´‚ സഹജമായ ഭാഷ ഇതൠതിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´‚. സഹജമായ ഭാഷ സംസാരികàµà´•à´¾à´¨àµâ€ " +"കഴിയാതàµà´¤ à´’à´¨àµà´¨à´¿à´²à´§à´¿à´•à´‚ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´³àµà´³ സിസàµà´±àµà´±à´®à´¾à´£à´¿à´¤àµ†à´™àµà´•à´¿à´²àµâ€ അവരàµâ€à´•àµà´•àµ à´ªàµà´°à´¯à´¾à´¸à´™àµà´™à´³àµâ€ à´…à´¨àµà´­à´µà´ªàµà´ªàµ†à´Ÿàµà´‚." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/lt.po +++ eglibc-2.13/debian/po/lt.po @@ -0,0 +1,206 @@ +# translation of lt.po to Lithuanian +# Copyright (C) 2006 The Free Software Foundation +# This file is distributed under the same license as the glibc package. +# +# Gintautas Miliauskas , 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: lt\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-02-26 23:36+0200\n" +"Last-Translator: Gintautas Miliauskas \n" +"Language-Team: Lithuanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" +"100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Visos lokalÄ—s" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "LokalÄ—s, kurios bus sugeneruotos:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"LokalÄ—s yra karkasas, kuriuo naudotojai gali nustatyti savo kalbÄ…, " +"informacijÄ… apie savo Å¡alį, simbolius, valiutÄ…, rikiavimo tvarkÄ… ir t.t." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Pasirinkite, kurias lokales norite generuoti. TurÄ—tų bÅ«ti pasirinktos UTF-8 " +"lokalÄ—s, ypaÄ jei diegiate naujÄ… sistemÄ…. Kiti simbolių rinkiniai gali bÅ«ti " +"naudingi atgaliniam suderinamumui su senesnÄ—mis sistemomis ir programomis." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Jokia" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Sistemos lokalÄ— pagal nutylÄ—jimÄ…" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Daug Debian paketų naudoja lokales tekstui reikiama kalba rodyti. Galite iÅ¡ " +"sugeneruotų lokalių iÅ¡sirinkti standartinÄ™ sistemos lokalÄ™." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Bus nustatyta kalba visai sistemai. Jei sistemÄ… naudoja keletas naudotojų ir " +"ne visi kalba pasirinkta kalba, gali kilti nepatogumų." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Ar norite dabar atnaujinti glibc?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"VeikianÄios tarnybos ir programos, naudojanÄios NSS, turi bÅ«ti paleistos iÅ¡ " +"naujo, kitaip jose gali sutrikti paieÅ¡ka ir autentikavimas. Diegimo procesas " +"gali paleisti iÅ¡ naujo kai kurias tarnybas (pavyzdžiui, ssh ir telnetd), " +"taÄiau kitos programos negali bÅ«ti paleistos iÅ¡ naujo automatiÅ¡kai. Viena iÅ¡ " +"tokių programų, kuriÄ… reikia paleisti iÅ¡ naujo rankiniu bÅ«du po glibc " +"atnaujinimo, yra xdm – automatinis restartavimas gali atjungti aktyvias X11 " +"sesijas." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Rastos Å¡ios tarnybas, kurias bÅ«tina sustabdyti prieÅ¡ atnaujinimÄ…: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Jei norite dabar nutraukti atnaujinimÄ… ir jį pratÄ™sti vÄ—liau, atsakykite " +"neigiamai." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" +"Tarnybos, kurias reikia paleisti iÅ¡ naujo po GNU libc bibliotekos " +"atnaujinimo:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"VeikianÄios tarnybos ir programos, naudojanÄios NSS, turi bÅ«ti paleistos iÅ¡ " +"naujo, kitaip jose gali sutrikti autentikavimas (tokioms tarnyboms kaip ssh " +"tai gali reikÅ¡ti, kad negalÄ—site prisijungti). PeržiÅ«rÄ—kite toliau esantį " +"tarpeliais atskirtų init.d scenarijų, kurie dabar bus paleisti iÅ¡ naujo, " +"sÄ…raÅ¡Ä…, ir, jei reikia, pataisykite." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Pastaba: sshd/telnetd paleidimas iÅ¡ naujo neturÄ—tų paveikti aktyvių " +"prisijungimų." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Nepavyko paleisti iÅ¡ naujo kai kurių tarnybų atnaujinus GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "Atnaujinus GNU libc nepavyko iÅ¡ naujo paleisti Å¡ių procesų:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Jas reikÄ—s paleisti rankiniu bÅ«du įvykdant „/etc/init.d/tarnyba start“." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/ar.po +++ eglibc-2.13/debian/po/ar.po @@ -0,0 +1,206 @@ +# translation of ar.po to Arabic +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Ossama M. Khayat , 2007, 2008. +# Ossama Khayat , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: ar\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-09-09 01:07+0300\n" +"Last-Translator: Ossama Khayat \n" +"Language-Team: Arabic \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: UTF-8\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: \n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "جميع المحليات" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "المحليات التي سيتم توليدها:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"المحليات هي إطار عمل يمكنك من التبديل بين اللغات المتعددة وتمكن المستخدمين " +"من اختيار لغتهم، وبلدهم، ومجموعة الأحر٠الخاصة بهم، إلخ." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"الرجاء اختيار المحليات التي تريد توليدها. يجب اختيار محليات UTF-8 بشكل " +"اÙتراضي، وبالتحديد لعمليات التثبيت الجديدة. يمكن الاستÙادة من مجموعات " +"المحار٠الأخرى للتواÙÙ‚ مع الأنظمة والبرامج القديمة." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "لا شيء" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "المحلية الاÙتراضية لبيئة النظام:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"ÙÙŠ نظام ديبيان، تستخدم العديد من الحزم المحليات لعرض النصوص باللغة الصحيحة " +"للمستخدم. يمكنك اختيار المحلية الاÙتراضية للنظام من هذه المحليات." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"سيحدد هذا الخيار اللغة الاÙتراضية للنظام بأكمله. إن كان هذا النظام مستخدماً " +"من قبل عدة مستخدمين لا يستخدمون اللغة ذاتها، Ùسو٠يواجهون بعض الصعوبات." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "أتريد ترقية glibc الآن؟" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"هناك بعض الخدمات والبرامج التي تستخدم NSS يجب إعادة تشغيلها، وإلا لن تستطيع " +"تلك الخدمات البحث أو المصادقة بعد الآن. تستطيع عملية التثبيت إعادة تشغيل بعض " +"الخدمات (مثل ssh أو telnetd)ØŒ إلا أن بعض الخدمات الأخرى لا يمكن إعادة " +"تشغيلها آلياً. وإحدى تلك الخدمات هي xdm والتي يجب عليك تشغيلها يدوياً بعد " +"عملية ترقية glibc ذلك أن عملية إعادة تشغيلها آلياً قد يوق٠عمل جلسات X11 " +"الحالية." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"عثر البرنامج على الخدمات المثبتة التالية والتي يجب إيقاÙها قبل عملية " +"الترقية: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"إن كنت تريد ايقا٠عملة الترقية الآن وإتمامها لاحقاً، الرجاء الإجابة بالنÙÙŠ " +"للسؤال أدناه." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "الخدمات المطلوب إعادة تشغيلها لتريقة مكتبة GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"هناك بعض الخدمات والبرامج التي تستخدم NSS يجب إعادة تشغيلها، وإلا لن تستطيع " +"تلك الخدمات البحث أو المصادقة بعد الآن. تستطيع عملية التثبيت إعادة تشغيل بعض " +"الخدمات (مثل ssh والتي قد تؤثر على قدرتك الدخول). الرجاء مراجعة قائمة برامج " +"init.d هذه بالخدمات التي يجب إعادة تشغيلها الآن، وصححها إن كنت بحاجة إلى ذلك." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "ملاحظة: إعادة تشغيل sshd/telnetd يجب أن لايؤثر على أية اتصالات جارية." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Ùشلت عملية إعادة تشغيل بعض الخدمات لترقية GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "تعذر إعادة تشغيل الخدمات التالية لترقية مكتبة GNU libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"عليك بتشغيل هذه الخدمات يدوياً بتنÙيذ الأمر '/etc/init.d/ start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "يجب إعادة تشغيل xscreensaver Ùˆ xlockmore قبل عملية الترقية" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"عÙثر على نسخة أو أكثر لبرنامج xscreensaver أو xlockmore على هذا النظام. وبسبب " +"تغييرات المكتبة الغير متواÙقة، Ùإن ترقية مكتبة GNU libc ستتسبّب بعدم تمكّنك من " +"المصادقة باستخدام هذه البرامج. لذا، يجب أن ترتب عملية إعادة تشغيل أو إيقا٠" +"هذه البرامج قبل الاستمرار ÙÙŠ الترقية، كي تتÙادى حجز المستخدمين عن جلساتهم." --- eglibc-2.13.orig/debian/po/ca.po +++ eglibc-2.13/debian/po/ca.po @@ -0,0 +1,196 @@ +# Catalan translations for eglibc debconf templates. +# Copyright (C) 2002, 2007, 2008, 2010 GNU Libc Maintainers. +# This file is distributed under the same license as the eglibc package. +# Jordi Mallach , 2002, 2008, 2010. +# Jordà Polo , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: 2.11.2-6\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2010-10-23 11:57+0200\n" +"Last-Translator: Jordi Mallach \n" +"Language-Team: Catalan \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Tots els locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Locales a generar:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "Els locales són un entorn que permet que els usuaris canviïn la llengua, el país, els caràcters, la classificació alfabètica, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "Trieu els locales que vulgueu generar. Els locales UTF-8 haurien de ser l'opció predeterminada, especialment en noves instal·lacions. Altres jocs de caràcters us poden ser útils per motius de compatibilitat amb sistemes i programari antic." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Cap" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Locale predeterminat del sistema:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "A Debian, molts paquets fan servir els locales per mostrar el text en la llengua dels usuaris. Podeu canviar el locale predeterminat del sistema triant entre els locales generats." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "Amb aquesta opció seleccioneu la llengua predeterminada de tot el sistema. Si aquest és un entorn multiusuari on no tothom parla la mateixa llengua, alguns usuaris poden tindre dificultats." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Voleu actualitzar la glibc ara?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"És necessari tornar a iniciar els serveis i programes que utilitzen NSS, ja " +"que si no es fa això podrien deixar de poder fer cerques o autenticacions. " +"El procés d'instal·lació pot tornar a iniciar alguns serveis (com l'ssh o el " +"telnetd), però altres programes no es poden tornar a iniciar automàticament. " +"Un programa que necessita una parada i inici manual després de " +"l'actualització de la glibc és l'xdm, ja que un reinici automàtic podria " +"desconnectar les vostres sessions X11 actives." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Aquest script ha detectat els següents serveis instal·lats que s'haurien de " +"parar abans de l'actualització: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "Si voleu interrompre ara l'actualització i continuar més tard, contesteu negativament la pregunta següent." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Serveis a reiniciar per l'actualització de la biblioteca GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"És necessari tornar a iniciar els serveis i programes que utilitzen NSS, ja " +"que si no es fa això podrien deixar de poder fer cerques o autenticacions " +"(per a serveis com l'ssh, això pot afectar la vostra capacitat per a entrar " +"al sistema). Comproveu la següent llista separada per comes de scripts " +"d'init.d amb serveis que s'han de tornar a iniciar ara, i corregiu-la si és " +"necessari." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Nota: reiniciar l'ssh/telnetd no hauria d'afectar cap connexió existent." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" +"No s'ha pogut reiniciar alguns serveis per a l'actualització de GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"No s'ha pogut reiniciar els serveis següents per a l'actualització de la " +"biblioteca GNU libc:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Haureu d'iniciar aquests serveis manualment executant «/etc/init.d/ " +"start»." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "S'ha de reiniciar l'xscreensaver i l'xlockmore abans d'actualitzar" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "S'ha detectat al sistema una o més instàncies de l'xscreensaver o l'xlockmore en execució. Degut a alguns canvis de biblioteques incompatibles, l'actualització de la GNU libc causarà que no us pugueu autenticar contra aquests programes. Hauríeu d'assegurar-vos que aquests programes es reinicien o s'aturen abans de continuar aquesta actualització, per a evitar que els usuaris es queden blocats fora de les seues sessions actuals." --- eglibc-2.13.orig/debian/po/uk.po +++ eglibc-2.13/debian/po/uk.po @@ -0,0 +1,200 @@ +# translation of uk.po to Ukrainian +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Eugeniy Meshcheryakov , 2004, 2006. +msgid "" +msgstr "" +"Project-Id-Version: uk\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2006-02-21 10:12+0200\n" +"Last-Translator: Eugeniy Meshcheryakov \n" +"Language-Team: Ukrainian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Ð’ÑÑ– локалі" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Локалі Ñкі потрібно згенерувати:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +#, fuzzy +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Локаль -- це механізм, що дозволÑÑ” перемикатиÑÑ Ð¼Ñ–Ð¶ кількома мовами Ð´Ð»Ñ " +"кориÑтувачів, Ñкі можуть викориÑтовувати Ñвою мову, країну, Ñимволи порÑдок " +"ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– Ñ‚.п." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ðе вÑтановлювати" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Локаль за замовчаннÑм в ÑиÑтемному оточенні:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Ð’ Debian багато пакунків викориÑтовують локалі Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту на " +"вибраній кориÑтувачем мові. Якщо ваша рідна мова не англійÑька, то ви можете " +"змінити локаль за замовчаннÑм. СпиÑок Ñкладений із локалей Ñкі ви вирішили " +"згенерувати." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +#, fuzzy +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Примітка: цей пункт вибирає мову Ð´Ð»Ñ Ð²Ñієї ÑиÑтеми. Якщо в вашій ÑиÑтемі " +"працюють декілька кориÑтувачів, Ñкі не розмовлÑÑŽÑ‚ÑŒ мовою, Ñку ви вибрали, то " +"вони можуть зіткнутиÑÑ Ñ–Ð· труднощами, Ñ– тому, можливо, вам краще не " +"вÑтановлювати локаль за замовчаннÑм." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/POTFILES.in +++ eglibc-2.13/debian/po/POTFILES.in @@ -0,0 +1,2 @@ +[type: gettext/rfc822deb] debhelper.in/locales.templates +[type: gettext/rfc822deb] debhelper.in/libc.templates --- eglibc-2.13.orig/debian/po/cs.po +++ eglibc-2.13/debian/po/cs.po @@ -0,0 +1,217 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: glibc\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2009-06-27 09:58+0200\n" +"Last-Translator: Miroslav Kure \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "VÅ¡echny locales" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Locales, které se mají vygenerovat:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Locales je systém pro pÅ™epínání mezi různými jazyky. Uživatelé si pak mohou " +"zvolit svůj jazyk, zemi, znaky, způsob porovnávání, atd." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Vyberte, které locales se mají vygenerovat. PÅ™ednostnÄ› byste mÄ›li vybírat " +"locales v kódování UTF-8 (obzvláštÄ› u nových instalací). Ostatní znakové " +"sady jsou užiteÄné pro zpÄ›tnou kompatibilitu se staršími systémy a programy." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Žádné" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Výchozí locale pro tento systém:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Mnoho balíků v Debianu používá locales k zobrazení textu ve správném jazyce. " +"Z vygenerovaných locales si můžete vybrat to, které bude v systému použito " +"jako výchozí." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Tímto vyberete výchozí jazyk pro celý systém. Pokud se na poÄítaÄ pÅ™ihlaÅ¡ují " +"i uživatelé nemluvící vybraným jazykem, zaznamenají jisté problémy." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Chcete nyní aktualizovat glibc?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Běžící služby a programy využívající NSS se musí restartovat, protože jinak " +"se může stát, že nebudou moci vyhledávat v systémových databázích nebo " +"ověřovat uživatele. InstalaÄní proces umí restartovat nÄ›které služby (napÅ™. " +"ssh nebo telnetd) automaticky, ale jiné musíte restartovat ruÄnÄ›. Jednou " +"takovou službou, kterou je tÅ™eba po aktualizaci glibc ruÄnÄ› zastavit a znovu " +"spustit, je xdm. Automatický restart totiž může odpojit aktivní sezení X11." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Instalace rozpoznala následující nainstalované služby, které je tÅ™eba pÅ™ed " +"aktualizací zastavit: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Chcete-li nyní aktualizaci pÅ™eruÅ¡it a pokraÄovat pozdÄ›ji, odpovÄ›zte na " +"otázku zápornÄ›." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Služby, které se mají restartovat po aktualizaci knihovny GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Běžící služby a programy využívající NSS se musí restartovat, protože jinak " +"se může stát, že nebudou moci vyhledávat v systémových databázích nebo " +"ověřovat uživatele. (U služeb typu ssh to může ovlivnit možnost pÅ™ihlášení " +"se.) Zkontrolujte prosím následující mezerami oddÄ›lený seznam služeb, které " +"se mají restartovat a v případÄ› potÅ™eby jej opravte. Služby jsou v seznamu " +"zastoupeny svými init.d skripty." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "Poznámka: restart sshd/telnetd by nemÄ›l ovlivnit probíhající spojení." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Chyba pÅ™i restartu nÄ›kterých služeb bÄ›hem aktualizace GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Následující služby nemohly být bÄ›hem aktualizace knihovny GNU libc " +"restartovány:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "Budete je muset spustit ruÄnÄ› příkazem „/etc/init.d/ start“." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" +"Programy xscreensaver a xlockmore musí být pÅ™ed aktualizací restartovány" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Zdá se, že v systému běží jedna nebo více instancí programu xscreensaver " +"resp. xlockmore. Z důvodu nekompatibilních zmÄ›n v knihovnách se po " +"aktualizaci knihovny GNU libc nebudete moci pomocí tÄ›chto programů " +"autentizovat. To jinými slovy znamená, že se uživatelé nedostanou ke svým " +"uzamÄeným sezením. Abyste tomu pÅ™edeÅ¡li, mÄ›li byste pÅ™ed aktualizací zmínÄ›né " +"programy zastavit, nebo je ve vhodný Äas restartovat." --- eglibc-2.13.orig/debian/po/eu.po +++ eglibc-2.13/debian/po/eu.po @@ -0,0 +1,212 @@ +# translation of glibc 2.6.1-3 debconf to basque +# Piarres Beobide , 2006. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +msgid "" +msgstr "" +"Project-Id-Version: eu\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2007-09-11 09:57+0100\n" +"Last-Translator: Piarres Beobide \n" +"Language-Team: librezale \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Lokal guztiak" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Sortu behar diren lokalak:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Lokalak hizkuntza anitz artean aldatzeko ingurugiroa da erabiltzaileek " +"beren hizkuntza, herrialdea, karaktere-jokoa etab. erabiltzeko gaitasuna ematen " +"dute." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Mesedez zein lokala sortuko diren hautatu. Lehenespen bezala UTF-8 locale-ak " +"hautau beharko lirateke, bereiziki instalazio berri batetan. Beste karaktere " +"joko batzuek sortzea erabilgarri izan liteke sistema eta software " +"zaharragoekin bateragarritasuna mantentzeko." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Batez" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Sistema inguruneko lokal lehenetsia:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Debian pakete anitzek locale-ak erabiltzen dituzte erabiltzaileari dagokion " +"hizkuntzan testuak bistaratzeko. Locale lehenetsia sortutako locale-en " +"artean hautatu dezakezu." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Honek zure sistemako hizkuntza aukeratuko du. Hautatutako hizkuntza denek " +"erabiltzen ez duten erabiltzaile anitzeko sistema bat bada, agian " +"erabiltzaile horiek arazoetan aurki daitezke." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Glibc orain bertsio-berritu nahi al duzu?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"NSS erabiltzen duten abiaraziriko programa eta zerbitzuak berrabiarazi egin " +"behar dira, bestela hauek ez dira bilaketak egin edo autentifikatzeko gai " +"izango (ssh bezalako zerbitzuentzat, saio hasteko ahalmenean eragin dezake). " +"Mesedez gainbegiratu berrabiaraziko diren zerbitzuen init.d script-en " +"zuriunez bereiziriko zerrenda eta zuzendu behar izanez gero." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Skript honek bertsio-berritzea egin aurretik gelditu behar diren " +"instalaturiko hurrengo zerbitzu hauek aurkitu ditu: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Bertsio-berritzea etzaeratu eta berandua jarraitu nahi izanez gero, ez " +"erantzun behekaldeko galderari." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "GNU libc liburutegi eguneraketan berrabiarazi behar diren zerbitzuak:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"NSS erabiltzen duten abiaraziriko programa eta zerbitzuak berrabiarazi egin " +"behar dira, besteka hauek ez dira bilaketak egin edo autentifikatzeko gai " +"izango (ssh bezalako zerbitzuentzat, saio hasteko ahalmenean eragin dezake). " +"Mesedez gainbegiratu berrabiaraziko diren zerbitzuen init.d script-en gakoz " +"bereiziriko zerrenda eta zuzendu behar izanen gero." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Oharra: sshd/telnetd berrabiarazteak ez luke sorturik dauden konexioetan " +"eragin beharko." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "Huts GNU glibc bertsio berritzerkoan zenbait zerbitzu berrabiaraztean" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Hurrengo zerbitzuak ezin izan dira berrabiarazi GNU glibc liburutegi bertsio " +"berritzerako:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Hauek eskuz abiarazi beharko dituzu '/etc/init.d/ start' eginaz." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "xscreensaver eta xlockmore berrabiarazi egin behar dira bertsio-berritu ondoren" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"Xscreensaver edo xlockmore instantzi bat edo gehiago antzeman dira sisteman. " +"LKiburutegi aldaketa bateraezina direla eta GNU libc liburutegiak ez dizu " +"programa hauetan autentifikatzen utziko. Programa hauek berrabiazi edo " +"gelditzeko antolatu beharko zinateke erabiltzaileak beren saioetatik kanpo " +"uztea sahiesteko." --- eglibc-2.13.orig/debian/po/zh_CN.po +++ eglibc-2.13/debian/po/zh_CN.po @@ -0,0 +1,201 @@ +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Hiei Xu , 2004. +# Carlos Z.F. Liu , 2004. +# LI Daobing , 2007, 2008. +# +# +msgid "" +msgstr "" +"Project-Id-Version: glibc 2.7-9\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-02-28 23:44+0800\n" +"Last-Translator: LI Daobing \n" +"Language-Team: Chinese (Simplified) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "全部区域设置" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "请选择需è¦ç”Ÿæˆçš„区域设置(locale)。" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"区域设置(locale)是一ç§åœ¨å¤šç§è¯­è¨€ä¹‹é—´åˆ‡æ¢çš„框架,用户å¯ä»¥é€šè¿‡å®ƒæ¥è®¾å®šè‡ªå·±çš„语" +"言ã€å›½å®¶ã€å­—符集ã€å­—符串排åºæ–¹å¼ç­‰ã€‚" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"请选择需è¦ç”Ÿæˆçš„区域设置。通常应当选择 UTF-8 字符集的区域设置,特别是对于新安" +"装的系统。其他的字符集一般用于兼容旧系统和旧软件。" + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "æ— " + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "哪个将作为系统环境默认的区域设置(locale)?" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Debian 里的很多软件包都使用区域设置(locale)æ¥ä»¥æ­£ç¡®çš„语言å‘用户显示文本。你å¯" +"以从生æˆçš„区域设置中选择一个缺çœçš„区域设置。" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"注æ„:这将会把整个系统都设置为这ç§è¯­è¨€ã€‚如果您è¿è¡Œçš„是一个多用户系统,而且并" +"ä¸æ˜¯ç³»ç»Ÿå†…的所有用户都使用您选择的语言,那么他们将会é‡åˆ°ä¸€äº›éº»çƒ¦ã€‚" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "你想现在å‡çº§ glibc 么?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"使用 NSS çš„æœåŠ¡å’Œç¨‹åºéœ€è¦é‡å¯ï¼Œå¦åˆ™å¯èƒ½æ— æ³•ç»§ç»­æŸ¥è¯¢æˆ–验è¯ã€‚安装过程能é‡å¯éƒ¨åˆ†" +"æœåŠ¡(如 ssh å’Œ telnetd),但其他程åºæ— æ³•è‡ªåŠ¨é‡å¯ã€‚xdm 就是需è¦åœ¨ glibc å‡çº§å®Œ" +"æˆåŽæ‰‹åŠ¨åœæ­¢å’Œé‡å¯çš„ç¨‹åº - 因为自动é‡å¯å¯èƒ½ä¼šä¸­æ–­ä½ çš„å½“å‰ X11 会è¯ã€‚" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "脚本检测到以下的æœåŠ¡éœ€è¦åœ¨å‡çº§å‰åœæ­¢: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "如果你想打断å‡çº§å¹¶åœ¨ç¨åŽç»§ç»­ï¼Œè¯·å¯¹ä¸‹é¢çš„问题答 No" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "GNU libc 库å‡çº§éœ€è¦é‡å¯å¦‚下的æœåŠ¡ï¼š" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"使用 NSS çš„æœåŠ¡å’Œç¨‹åºéœ€è¦é‡å¯ï¼Œå¦åˆ™å¯èƒ½æ— æ³•æŸ¥è¯¢æˆ–验è¯(对于 ssh 这类的æœåŠ¡ï¼Œæœ‰" +"å¯èƒ½å¯¼è‡´ä½ æ— æ³•ç™»å½•)。请检查下é¢éœ€è¦é‡å¯çš„ init.d 脚本列表(空格分隔),如有误请" +"改正。" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "æ示:é‡å¯ sshd/telnetd ä¸ä¼šå½±å“现有的连接。" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "å›  GNU libc å‡çº§è€Œé‡å¯çš„部分æœåŠ¡é‡å¯å¤±è´¥" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "GNU libc 库å‡çº§ï¼Œä½†ä¸‹åˆ—æœåŠ¡æ— æ³•é‡å¯ï¼š" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "你需è¦é€šè¿‡æ‰‹åŠ¨è¿è¡Œ '/etc/init.d/ start' æ¥å¯åŠ¨è¿™äº›æœåŠ¡ã€‚" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" + --- eglibc-2.13.orig/debian/po/ro.po +++ eglibc-2.13/debian/po/ro.po @@ -0,0 +1,211 @@ +# translation of po-debconf://kdebase.po to romanian +# Romanian translation of glibc. +# Copyright (C) 2006 THE glibc'S COPYRIGHT HOLDER +# This file is distributed under the same license as the glibc package. +# +# Stan Ioan-Eugen , 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2008-02-17 12:48+0200\n" +"Last-Translator: stan ioan-eugen \n" +"Language-Team: romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Toate localele" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Localele ce vor fi generate:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Locale este un cadru de lucru pentru utilizatori, care le permite acestora " +"să schimbe între mai multe limbi pentru a folosi propria lor limbă, È›ară, " +"caractere, formatare a datei, etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"AlegeÈ›i ce locale se generează. Localele UTF-8 ar trebui alese implicit, în " +"special pentru instalări noi. Din motive de compatibilitate cu soft sau " +"sisteme mai vechi, puteÈ›i alege să se genereze È™i alte seturi de caractere." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Nici una" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Locale implicite pentru sistem:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Multe pachete din Debian folosesc locale pentru a afiÈ™a text în limba " +"corectă pentru utilizatori. PuteÈ›i alege o valoarea pentru locale, implicită " +"pentru sistem, din localele generate." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Această opÈ›iune va stabili limba pentru tot sistemul. Dacă aveÈ›i un sistem " +"multi-utilizator unde nu toÈ›i utilizatorii vorbesc limba aleasă, atunci ei " +"vor întâmpina dificultăți." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +#, fuzzy +#| msgid "" +#| "Running services and programs that are using NSS need to be restarted, " +#| "otherwise they might not be able to do lookup or authentication any more " +#| "(for services such as ssh, this can affect your ability to login). Please " +#| "review the following space-separated list of init.d scripts for services " +#| "to be restarted now, and correct it if needed." +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Serviciile È™i programele care rulează È™i folosesc NSS trebuiesc repornite, " +"altfel este posibil să nu mai poată efectua autentificarea sau căutarea " +"numelor (în cazul serviciilor gen ssh, acest lucru poate determina " +"imposibilitatea autentificării). Analizati următoarea listă ce conÈ›ine, " +"separate prin spaÈ›iu, scripturi init.d ale serviciilor ce trebuiesc " +"repornite acum È™i corectaÈ›i-o dacă este nevoie." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Servicii ce trebuiesc repornite la înnoirea bibliotecii GNU libc:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Serviciile È™i programele care rulează È™i folosesc NSS trebuiesc repornite, " +"altfel este posibil să nu mai poată efectua autentificarea sau căutarea " +"numelor (în cazul serviciilor gen ssh, acest lucru poate determina " +"imposibilitatea autentificării). Analizati următoarea listă ce conÈ›ine, " +"separate prin spaÈ›iu, scripturi init.d ale serviciilor ce trebuiesc " +"repornite acum È™i corectaÈ›i-o dacă este nevoie." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Notă: repornirea sshd/telnetd nu ar trebui să afecteze conexiunile existente." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "EÈ™ec la pornirea unor servicii pentru înnoirea GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Următoarele servicii nu ar trebui repornite la înnoirea bibliotecii GNU libc." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Va trebui să porniÈ›i aceste servicii manual executând comanda '/etc/init.d/" +" start'." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" --- eglibc-2.13.orig/debian/po/sv.po +++ eglibc-2.13/debian/po/sv.po @@ -0,0 +1,221 @@ +# translation of glibc_2.7-11_sv.po to swedish +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# Developers do not need to manually edit POT or PO files. +# +# Martin Bagge , 2008. +msgid "" +msgstr "" +"Project-Id-Version: glibc_2.7-11_sv\n" +"Report-Msgid-Bugs-To: glibc@packages.debian.org\n" +"POT-Creation-Date: 2009-03-08 15:23+0100\n" +"PO-Revision-Date: 2009-04-07 18:46+0100\n" +"Last-Translator: Martin Bagge \n" +"Language-Team: swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: multiselect +#. Choices +#: ../debhelper.in/locales.templates:1001 +msgid "All locales" +msgstr "Alla lokalanpassningar" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "Locales to be generated:" +msgstr "Lokalanpassningar att generera:" + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Locales are a framework to switch between multiple languages and allow users " +"to use their language, country, characters, collation order, etc." +msgstr "" +"Lokalanpassning (locale) är ett ramverk för att växla mellan flera språk för " +"att låta användare använda sitt språk, land, tecken och sorteringsordning, " +"etc." + +#. Type: multiselect +#. Description +#: ../debhelper.in/locales.templates:1002 +msgid "" +"Please choose which locales to generate. UTF-8 locales should be chosen by " +"default, particularly for new installations. Other character sets may be " +"useful for backwards compatibility with older systems and software." +msgstr "" +"Välj vilka lokalanpassningar som ska genereras. UTF-8-lokaler bör väljas som " +"standard, speciellt för nya installationer. Andra teckenuppsättningar kan " +"vara användbara för bakåtkompatibilitet med äldre system och programvara." + +#. Type: select +#. Choices +#: ../debhelper.in/locales.templates:2001 +msgid "None" +msgstr "Ingen" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "Default locale for the system environment:" +msgstr "Välj lokalanpassning som ska vara standard i systemet:" + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"Many packages in Debian use locales to display text in the correct language " +"for the user. You can choose a default locale for the system from the " +"generated locales." +msgstr "" +"Många paket i Debian använder lokalanpassningar för att visa text i det " +"korrekta språket för användaren. Du kan välja en standardlokal för systemet " +"från de genererade lokalerna." + +#. Type: select +#. Description +#: ../debhelper.in/locales.templates:2002 +msgid "" +"This will select the default language for the entire system. If this system " +"is a multi-user system where not all users are able to speak the default " +"language, they will experience difficulties." +msgstr "" +"Detta kommer att välja standardspråket för hela systemet. Om du kör ett " +"system med flera användare där inte alla talar det valda språket, kan de få " +"problem." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "Do you want to upgrade glibc now?" +msgstr "Vill du uppgradera glibc nu?" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more. " +"The installation process is able to restart some services (such as ssh or " +"telnetd), but other programs cannot be restarted automatically. One such " +"program that needs manual stopping and restart after the glibc upgrade by " +"yourself is xdm - because automatic restart might disconnect your active X11 " +"sessions." +msgstr "" +"Körande tjänster och program som använder NSS behöver startas om, annars " +"kanske de inte kan köra uppslag eller autentisering längre. Installationen " +"kan starta om några tjänster (ex. ssh och telnetd), andra program kan inte " +"startas om automatiskt - xdm är ett sådant program som du måste starta om " +"själv eftersom det skulle starta om din X-session." + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"This script detected the following installed services which must be stopped " +"before the upgrade: ${services}" +msgstr "" +"Skriptet hittade följande installerade tjänster som måste stoppas före " +"uppgraderingen: ${services}" + +#. Type: boolean +#. Description +#: ../debhelper.in/libc.templates:1001 +msgid "" +"If you want to interrupt the upgrade now and continue later, please answer " +"No to the question below." +msgstr "" +"Om du vill avbryta uppgraderingen nu och fortsätta senare anger du Nej på " +"frågan nedan." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "Services to restart for GNU libc library upgrade:" +msgstr "Tjänster att starta om för uppgradering av GNU libc-biblioteket:" + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Running services and programs that are using NSS need to be restarted, " +"otherwise they might not be able to do lookup or authentication any more " +"(for services such as ssh, this can affect your ability to login). Please " +"review the following space-separated list of init.d scripts for services to " +"be restarted now, and correct it if needed." +msgstr "" +"Körande tjänster och program som använder NSS behöver startas om, annars " +"kanske de inte kan köra uppslag eller autentisering längre (för tjänster " +"såsom ssh kan det påverka din möjlighet att logga in). Granska följande " +"blankstegsseparerade lista över init.d-skript för tjänster som ska startas " +"om nu, och gör ändringar om det behövs." + +#. Type: string +#. Description +#: ../debhelper.in/libc.templates:2001 +msgid "" +"Note: restarting sshd/telnetd should not affect any existing connections." +msgstr "" +"Observera: omstart av sshd/telnetd ska inte påverka befintliga anslutningar." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "Failure restarting some services for GNU libc upgrade" +msgstr "" +"Misslyckades med att starta om vissa tjänster för uppgraderingen av GNU libc" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"The following services could not be restarted for the GNU libc library " +"upgrade:" +msgstr "" +"Följande tjänster kunde inte startas om för uppgraderingen av GNU libc-" +"biblioteket:" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:3001 +msgid "" +"You will need to start these manually by running '/etc/init.d/ " +"start'." +msgstr "" +"Du behöver starta dessa manuellt genom att köra \"/etc/init.d/ start" +"\"." + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "xscreensaver and xlockmore must be restarted before upgrading" +msgstr "" +"xscreensaver och xlockmore måste startas om innan uppgraderingen påbörjas" + +#. Type: error +#. Description +#: ../debhelper.in/libc.templates:4001 +msgid "" +"One or more running instances of xscreensaver or xlockmore have been " +"detected on this system. Because of incompatible library changes, the " +"upgrade of the GNU libc library will leave you unable to authenticate to " +"these programs. You should arrange for these programs to be restarted or " +"stopped before continuing this upgrade, to avoid locking your users out of " +"their current sessions." +msgstr "" +"En eller flera instanser av xscreensaver eller xlockmore har hittats på " +"systemet. På grund av inkompatabilitet i och med förändringar av biblioteket " +"kan uppgraderingen av GNU libc innebära att du inte kan autentisera med " +"dessa program. Se till att alla instanser av programmen startas om eller " +"stoppas innan du fortsätter med denna uppgradering för att undvika att " +"användare blir utelåsta från sina sessioner." --- eglibc-2.13.orig/debian/local/ldconfig_wrap +++ eglibc-2.13/debian/local/ldconfig_wrap @@ -0,0 +1,17 @@ +#!/bin/sh + +if test $# = 0 \ + && test x"$LDCONFIG_NOTRIGGER" = x \ + && test x"$DPKG_MAINTSCRIPT_PACKAGE" != x \ + && dpkg-trigger --check-supported 2>/dev/null \ + && dpkg --compare-versions "$DPKG_RUNNING_VERSION" ge '1.14.5ubuntu10~~' +then + if dpkg-trigger --no-await ldconfig; then + if test x"$LDCONFIG_TRIGGER_DEBUG" != x; then + echo "ldconfig: wrapper deferring update (trigger activated)" + fi + exit 0 + fi +fi + +exec /sbin/ldconfig.real "$@" --- eglibc-2.13.orig/debian/local/memcpy-wrapper/Makefile +++ eglibc-2.13/debian/local/memcpy-wrapper/Makefile @@ -0,0 +1,11 @@ +all: memcpy-preload.so memcpy-syslog-preload.so + +clean: + rm -f memcpy-preload.so memcpy-syslog-preload.so + +memcpy-preload.so: memcpy-preload.c + $(CC) -D_GNU_SOURCE -DNOLOG -O2 -Wall -fPIC -shared -o memcpy-preload.so memcpy-preload.c + +memcpy-syslog-preload.so: memcpy-preload.c + $(CC) -D_GNU_SOURCE -O2 -Wall -fPIC -shared -o memcpy-syslog-preload.so memcpy-preload.c + --- eglibc-2.13.orig/debian/local/memcpy-wrapper/README +++ eglibc-2.13/debian/local/memcpy-wrapper/README @@ -0,0 +1,18 @@ +This small wrapper has for goal to workaround issues with some programs +calling memcpy() with source and destination overlap, causing issues on +recent GNU libc versions, which might copy memory backward on some +x86-64 CPU. For more details, see + http://sourceware.org/bugzilla/show_bug.cgi?id=12518 + +The wrapper is built in two versions, memcpy-preload.so for "production" +usage, which just fix the wrong call by using memmove, and +memcpy-syslog-preload.so for "debugging" purposes which also logs the +issue through syslog (rate limited). + +To use them for a specific binary, you can use the LD_PRELOAD +environment variable: + LD_PRELOAD=./memcpy-preload.so /path/to/binary + LD_PRELOAD=./memcpy-syslog-preload.so /path/to/binary + +For system-wide usage, it is possible to add this wrapper in +/etc/ld.so.preload. --- eglibc-2.13.orig/debian/local/memcpy-wrapper/memcpy-preload.c +++ eglibc-2.13/debian/local/memcpy-wrapper/memcpy-preload.c @@ -0,0 +1,61 @@ +/* Copyright (C) 2011, Aurelien Jarno + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include +#include +#include + +void *memcpy(void *dst, const void *src, size_t n) +{ +#ifndef NOLOG + uintptr_t usrc, udst; + + /* Convert to unsigned as arithmetic on pointer is undefined */ + udst = (uintptr_t) dst; + usrc = (uintptr_t) src; + + /* Check if source and destination overlap */ + if (((udst < usrc) && ((udst + n) > usrc)) || + ((usrc < udst) && ((usrc + n) > udst))) { + + static time_t lastlog = -1; + struct timeval tv; + + /* gettimeofday() is not expensive for the conditions we target in + * the Debian package (kernel >= 2.6.26, x86-64 architecture), this + * might need to be changed if this wrapper is later needed with + * different conditions */ + gettimeofday(&tv, NULL); + + /* Don't spam syslog, limit to (roughly) one log entry per second. */ + if (tv.tv_sec > lastlog) { + lastlog = tv.tv_sec; + syslog(LOG_WARNING | LOG_USER, + "source and destination overlap in memcpy() at ip %p", + __builtin_return_address(0)); + } + } +#endif + + /* Call memmove() instead of memcpy() */ + return memmove(dst, src, n); +} + --- eglibc-2.13.orig/debian/local/etc/bindresvport.blacklist +++ eglibc-2.13/debian/local/etc/bindresvport.blacklist @@ -0,0 +1,13 @@ +# +# This file contains a list of port numbers between 600 and 1024, +# which should not be used by bindresvport. bindresvport is mostly +# called by RPC services. This mostly solves the problem, that a +# RPC service uses a well known port of another service. +# +631 # cups +636 # ldaps +774 # rpasswd +873 # rsync +921 # lwresd +993 # imaps +995 # pops --- eglibc-2.13.orig/debian/local/etc/ld.so.conf.d/libc.conf +++ eglibc-2.13/debian/local/etc/ld.so.conf.d/libc.conf @@ -0,0 +1,2 @@ +# libc default configuration +/usr/local/lib --- eglibc-2.13.orig/debian/local/usr_sbin/locale-gen +++ eglibc-2.13/debian/local/usr_sbin/locale-gen @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e + +LOCALEGEN=/etc/locale.gen +LOCALES=/usr/share/i18n/locales +USER_LOCALES=/usr/local/share/i18n/locales +if [ -n "$POSIXLY_CORRECT" ]; then + unset POSIXLY_CORRECT +fi + + +[ -f $LOCALEGEN ] || exit 0; +[ -s $LOCALEGEN ] || exit 0; + +KEEP= +if [ "$1" = '--keep-existing' ]; then + KEEP=1 +fi + +if [ -z "$KEEP" ]; then + # Remove all old locale dir and locale-archive before generating new + # locale data. + rm -rf /usr/lib/locale/locale-archive || true +fi + +umask 022 + +is_entry_ok() { + if [ -n "$locale" -a -n "$charset" ] ; then + true + else + echo "error: Bad entry '$locale $charset'" + false + fi +} + +echo "Generating locales (this might take a while)..." +while read locale charset; do \ + case $locale in \#*) continue;; "") continue;; esac; \ + is_entry_ok || continue + if [ "$KEEP" ] && PERL_BADLANG=0 perl -MPOSIX -e \ + 'exit 1 unless setlocale(LC_ALL, $ARGV[0])' "$locale"; then + continue + fi + echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"; \ + echo -n ".$charset"; \ + echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \ + echo -n '...'; \ + if [ -f $USER_LOCALES/$locale ] ; then + input=$USER_LOCALES/$locale + elif [ -f $LOCALES/$locale ]; then + input=$locale + else + input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'` + if [ -f $USER_LOCALES/$input ]; then + input=$USER_LOCALES/$input + fi + fi + localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale || :; \ + echo ' done'; \ +done < $LOCALEGEN +echo "Generation complete." --- eglibc-2.13.orig/debian/local/usr_sbin/update-locale +++ eglibc-2.13/debian/local/usr_sbin/update-locale @@ -0,0 +1,129 @@ +#! /usr/bin/perl -w + +use strict; +use Getopt::Long; + +my $progname = "update-locale"; +my $locale_file = "/etc/default/locale"; + +my $help = 0; +my $reset = 0; +# Kept for compatibility reasons +my $remove = 0; +my $no_checks = 0; + +GetOptions( + 'reset' => \$reset, + 'remove' => \$remove, + 'locale-file=s' => \$locale_file, + 'no-checks' => \$no_checks, + 'h|help' => \$help, +); + +sub usage +{ + my $rc = shift; + print STDERR "Usage: $progname [OPTIONS] [LANG=locale] [LC_NUMERIC=locale] ... +Options: + --help display this message and exit + --reset ignore variables defined in the locale file + --locale-file=FILE file containing locale variables + (Default: /etc/default/locale) + --no-checks do not perform sanity checks on locale variables +"; + exit $rc; +} + +$help && usage(0); + +# Process command-line arguments +my %arg = (); +my $content = ''; +my $mode = 0644; +if (-r $locale_file) +{ + # Keep file mode + $mode = (stat($locale_file))[2] & 07777; + # Read current values + open(IN, "<", $locale_file) + or die "$progname: Unable to read $locale_file: $!\n"; + while () + { + $content .= $_; + next unless m/^(\w+)=(.*)/; + $arg{$1} = $2 unless $reset; + } + close(IN) + or die "$progname: Unable to close $locale_file: $!\n"; + $content =~ s/^(\s*\w+=)/#$1/mg; + $content .= "\n" unless $content =~ m/\n$/s; +} +else +{ + $content = "# File generated by $progname\n"; +} +for (@ARGV) +{ + if (m/(.*?)=(.*)/) + { + $arg{$1} = $2; + } + else + { + delete $arg{$_}; + } +} + +my $env = ''; +my ($key, $value); +while (($key, $value) = each %arg) +{ + $env .= " $key=$value"; + $content =~ s/^#\s*$key=.*/$key=$value/m or + $content .= "$key=$value\n"; +} + +# Sanity checks +if ($no_checks == 0) +{ + # Check that this locale does exist + my $charset = `LANG= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= LC_ALL= $env locale charmap 2>&1`; + die "*** $progname: Error: invalid locale settings: $env\n" + if ($charset =~ m/Cannot set/); + # If LANGUAGE is set, its first value must be compatible with LC_MESSAGES + if (defined $arg{LANGUAGE}) + { + my $language = $arg{LANGUAGE}; + $language =~ s/["']//g; + $language =~ s/[.:_].*//; + my $msg = ''; + my $var = ''; + for (qw(LANG LC_MESSAGES LC_ALL)) + { + if (defined $arg{$_}) + { + $var = $_; + $msg = $arg{$_}; + } + } + $msg =~ s/["']//g; + if ($msg !~ m/^$language/ && $var ne '' + && $msg ne 'C' && $msg ne 'POSIX' + && $language ne 'C' && $language ne 'POSIX') + { + print "*** $progname: Warning: LANGUAGE ($arg{LANGUAGE}) is not compatible with $var ($msg). Disabling it.\n"; + $content =~ s/^(\s*LANGUAGE=)/#$1/mg; + } + } +} + +# Write locale file +open(OUT, ">", $locale_file) + or die "$progname: Unable to write $locale_file: $!\n"; +print OUT $content; +close(OUT) + or die "$progname: Unable to close $locale_file: $!\n"; +chmod($mode, $locale_file) + or die "$progname: Unable to chmod $locale_file: $!\n"; + +1; --- eglibc-2.13.orig/debian/local/usr_sbin/validlocale +++ eglibc-2.13/debian/local/usr_sbin/validlocale @@ -0,0 +1,75 @@ +#!/usr/bin/perl -w +# +# Author: Petter Reinholdtsen +# Date: 2002-02-23 +# +# Test if the locale given as argument is a valid locale. If it +# is not, print on stdout the string to add to /etc/locale.gen to make +# locale-gen generate the locale (if it exists at all). + +use POSIX qw(setlocale LC_ALL); + +my $debug = 0; + +my $defaultcharset = $ENV{"DEFAULTCHARSET"} || "ISO-8859-1"; + +my $supportedlist = "/usr/share/i18n/SUPPORTED"; + +unless (defined $ARGV[0]) { + usage(); + exit 1; +} + +my $LANG = $ARGV[0]; + +my $loc = setlocale(LC_ALL, $LANG); +if ( ! $loc) { + print STDERR "locale '$LANG' not available\n"; + + my ($locale) = $LANG =~ m/^([^.@]+)/; + my ($charset) = $LANG =~ m/^[^.]+\.([^@]+)/; + my ($modifier) = $LANG =~ m/(@.+)$/; + + $modifier = "" unless defined $modifier; + + # Hm, if charset is missing, how to we pick the correct one to + # use? Fetching the value from /usr/share/i18n/SUPPORTED should + # work on Debian. + my $codeset = ""; + if (defined $charset) { + $codeset = '.' . $charset; + } else { + $charset = get_default_charset("$locale$modifier"); + } + + # print "L: $locale C: $charset M: $modifier\n"; + print "$locale$codeset$modifier $charset\n"; + + exit 1; +} else { + print STDERR "locale '$LANG' valid and available\n"; + exit 0; +} + +sub usage { + print "Usage: $0 \n" +} + +sub get_default_charset { + my ($locale) = @_; + my ($l, $c); + open(SUPPORTED, "< $supportedlist") || die "Unable to open $supportedlist"; + while () { + chomp; + ($l, $c) = split(/\s+/); + print "Checking '$l' '$c' != '$locale'\n" if $debug; + last if ($l eq $locale); + } + close(SUPPORTED); + + if ($l eq $locale) { + return $c; + } else { + return $defaultcharset; + } +} --- eglibc-2.13.orig/debian/local/manpages/nscd.8 +++ eglibc-2.13/debian/local/manpages/nscd.8 @@ -0,0 +1,87 @@ +.\" Placed in the Public Domain by Sebastian Rittau . +.Dd January 07, 2001 +.Dt NSCD 8 +.Os "GNU C Library 2.2" +.Sh NAME +.Nm nscd +.Nd name service caching daemon +.Sh SYNOPSIS +.Nm nscd +.Op OPTION... +.Sh DESCRIPTION +.Nm Nscd +caches libc-issued requests to the Name Service. If retrieving +NSS data is fairly expensive, +.Nm nscd +is able to speed up consecutive access to the same data +dramatically and increase overall system performance. +.Nm Nscd +should be run at boot time by +.Pa /etc/init.d/nscd . +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl d , Fl -debug +Do not fork and display messages on the current tty. +.El +.Bl -tag -width Ds +.It Fl f , Fl -config-file Ar NAME +Read configuration data from +.Pa NAME . +For a description of the config file format, see nscd.conf(5). +.El +.Bl -tag -width Ds +.It Fl g , Fl -statistic +Print current configuration statistics. +.El +.Bl -tag -width Ds +.It Fl i , Fl -invalidate Ar TABLE +Invalidate the specified +.Pa TABLE , +i. e. forget all data cached therein. This should be used if the +database storing this information has been changed. +.El +.Bl -tag -width Ds +.It Fl K , Fl -shutdown +Quit a running +.Nm nscd +process. +.El +.Bl -tag -width Ds +.It Fl S , Fl -secure Ar TABLE +Use a separate cache for each user. +.El +.Bl -tag -width Ds +.It Fl t , Fl -nthreads Ar NUMBER +Start +.Pa NUMBER +threads. This denotes the maximum number +of requests that can be handled simultaneously. The default is set +in the configuration file. (See nscd.conf(5).) +.El +.Bl -tag -width Ds +.It Fl ? , Fl -help +Print the list of available options. +.El +.Bl -tag -width Ds +.It Fl -usage +Print a short usage message. +.El +.Bl -tag -width Ds +.It Fl V , Fl -version +Print program version. +.El +.Sh FILES +.Bl -tag -width Ds +.It Ar /etc/nscd.conf +.Nm Nscd +configuration file. See nscd.conf(5) for more information. +.El +.Bl -tag -width Ds +.It Ar /etc/nsswitch.conf +Name Service Switch configuration. See nsswitch.conf(5) +for more information. +.El +.Sh SEE ALSO +GNU C Library info file, +.Xr nscd.conf 5 , +.Xr nsswitch.conf 5 --- eglibc-2.13.orig/debian/local/manpages/locale-gen.8 +++ eglibc-2.13/debian/local/manpages/locale-gen.8 @@ -0,0 +1,101 @@ +.\" This -*- nroff -*- file has been generated from +.\" DocBook SGML with docbook-to-man on Debian GNU/Linux. +.\" +.\" transcript compatibility for postscript use. +.\" +.\" synopsis: .P! +.\" +.de P! +\\&. +.fl \" force out current output buffer +\\!%PB +\\!/showpage{}def +.\" the following is from Ken Flowers -- it prevents dictionary overflows +\\!/tempdict 200 dict def tempdict begin +.fl \" prolog +.sy cat \\$1\" bring in postscript file +.\" the following line matches the tempdict above +\\!end % tempdict % +\\!PE +\\!. +.sp \\$2u \" move below the image +.. +.de pF +.ie \\*(f1 .ds f1 \\n(.f +.el .ie \\*(f2 .ds f2 \\n(.f +.el .ie \\*(f3 .ds f3 \\n(.f +.el .ie \\*(f4 .ds f4 \\n(.f +.el .tm ? font overflow +.ft \\$1 +.. +.de fP +.ie !\\*(f4 \{\ +. ft \\*(f4 +. ds f4\" +' br \} +.el .ie !\\*(f3 \{\ +. ft \\*(f3 +. ds f3\" +' br \} +.el .ie !\\*(f2 \{\ +. ft \\*(f2 +. ds f2\" +' br \} +.el .ie !\\*(f1 \{\ +. ft \\*(f1 +. ds f1\" +' br \} +.el .tm ? font underflow +.. +.ds f1\" +.ds f2\" +.ds f3\" +.ds f4\" +'\" t +.ta 8n 16n 24n 32n 40n 48n 56n 64n 72n +.TH "LOCALE-GEN" "8" +.SH "NAME" +locale-gen \(em generates localisation files from templates +.SH "SYNOPSIS" +.PP +\fBlocale-gen\fP +.SH "DESCRIPTION" +.PP +This manual page documents briefly the +\fBlocale-gen\fP command. +.PP +By default, the locale package which provides the base support for +localisation of libc-based programs does not contain usable localisation +files for every supported language. This limitation has became necessary +because of the substantial size of such files and the large number of +languages supported by libc. As a result, Debian uses a special +mechanism where we prepare the actual localisation files on the target +host and distribute only the templates for them. +.PP +\fBlocale-gen\fP is a program that reads the file +\fB/etc/locale.gen\fP and invokes +\fBlocaledef\fP for the chosen localisation profiles. +Run \fBlocale-gen\fP after you have modified the \fB/etc/locale.gen\fP file. + + +.SH "FILES" +.PP +\fB/etc/locale.gen\fP +.PP +The main configuration file, which has a simple format: every +line that is not empty and does not begin with a # is treated as a +locale definition that is to be built. + +.SH "SEE ALSO" +.PP +localedef(1), locale(1), locale.gen(5). +.SH "AUTHOR" +.PP +This manual page was written by Eduard Bloch for +the \fBDebian GNU/Linux\fP system (but may be used by others). Permission is +granted to copy, distribute and/or modify this document under +the terms of the GNU Free Documentation +License, Version 1.1 or any later version published by the Free +Software Foundation; with no Invariant Sections, no Front-Cover +Texts and no Back-Cover Texts. +.\" created by instant / docbook-to-man, Sat 02 Mar 2002, 16:43 --- eglibc-2.13.orig/debian/local/manpages/nscd_nischeck.8 +++ eglibc-2.13/debian/local/manpages/nscd_nischeck.8 @@ -0,0 +1,31 @@ +.\" Placed in the Public Domain by Sebastian Rittau . +.Dd January 08, 2001 +.Dt NSCD_NISCHECK 8 +.Os "GNU C Library 2.2" +.Sh NAME +.Nm nscd_nischeck +.Nd check NIS+ tables for read permissions +.Sh SYNOPSIS +.Nm nscd_nischeck +.Ar OPTION | TABLE +.Sh DESCRIPTION +.Nm Nscd_nischeck +checks if a given NIS+ table is world-readable. 0 is returned in +this case. Otherwise, only authenticated users can read the table +and 1 is returned. +.Sh OPTIONS +.Bl -tag -width Ds +.It Fl ? , Fl -help +Print a short help list. +.El +.Bl -tag -width Ds +.It Fl -usage +Print a short usage message. +.El +.Bl -tag -width Ds +.It Fl V , Fl -version +Print program version. +.El +.Sh SEE ALSO +GNU C Library info file, +.Xr nscd 8 --- eglibc-2.13.orig/debian/local/manpages/update-locale.8 +++ eglibc-2.13/debian/local/manpages/update-locale.8 @@ -0,0 +1,49 @@ +.TH UPDATE-LOCALE 8 "April 2006" "Debian GNU/Linux" +.SH "NAME" +.LP +update-locale \- Modify global locale settings +.SH "SYNTAX" +.LP +update-locale +.RI [ OPTIONS ] +[\fIvar\fP=\fIlocale\fP | \fIvar\fP] +[...] +.SH "DESCRIPTION" +.LP +This program can be called by maintainer scripts when Debian packages are +installed or removed, it updates the \fB/etc/default/locale\fP file to +reflect changes in system configuration related to global locale settings. +When variables have no value assigned, they are removed from the locale +file. +Some basic checks are performed to ensure that requested settings are valid. +.SH "OPTIONS" +.TP +.B \-\-help +Display an help message and exit. +.TP +.B \-\-reset +Variables which are not set on command-line are cleared out. +.TP +.BI \-\-locale\-file " FILE" +Define file containing locale variables. (Default: +.BR /etc/default/locale ) +.TP +.B \-\-no\-checks +Do not perform sanity checks on locale variables. +.SH "EXAMPLE" +.nf +The command +.ft B + update-locale LANG=en_CA.UTF-8 LANGUAGE +.ft R +sets \fBLANG\fP to \fBen_CA.UTF-8\fP and removes definitions for \fBLANGUAGE\fP. +.SH "FILES" +.TP +.B /etc/default/locale +File where global locale settings are stored. +.SH "AUTHOR" +.LP +Denis Barbier +.SH "SEE ALSO" +.LP +locale\-gen(8), locale(1) --- eglibc-2.13.orig/debian/local/manpages/po4a.cfg +++ eglibc-2.13/debian/local/manpages/po4a.cfg @@ -0,0 +1,7 @@ +[po4a_paths] po/man.pot de:po/de.po es:po/es.po id:po/id.po \ + fr:po/fr.po pl:po/pl.po pt_BR:po/pt_BR.po + +[type: man] validlocale.8 es:es/validlocale.es.8 \ + id:id/validlocale.id.8 add_id:id/addendum.id fr:fr/validlocale.fr.8 \ + add_fr:fr/addendum.fr pl:pl/validlocale.pl.8 \ + pt_BR:pt_BR/validlocale.pt_BR.8 --- eglibc-2.13.orig/debian/local/manpages/glibcbug.1 +++ eglibc-2.13/debian/local/manpages/glibcbug.1 @@ -0,0 +1,50 @@ +'\" t +.\" ** The above line should force tbl to be a preprocessor ** +.\" Man page for man +.\" +.\" Copyright (C), 2002 Free Software Foundation, Inc. +.\" +.\" You may distribute under the terms of the GNU General Public +.\" License as specified in the file COPYING that comes with the +.\" glibc distribution. +.\" +.\" +.TH glibcbug 1 "10 January 2002" "" "Debian GNU/Linux" +.SH "NAME" +glibcbug \- Report a bug to the Glibc developers +.SH "SYNOPSIS" +.B glibcbug +.SH "DESCRIPTION" +.B glibcbug +is a tool for reporting bugs to the glibc maintainers. +It automatically starts an editor where the user can enter details +of the bug. On completion, the bug is sent to the appropriate +address. +The User should replace the comments (text surrounded by +, and fill in the Subject: and From: lines with +a summary and e-mail address. + +If the user believes the bug is related to Debian rather than to the +glibc (libc6) package, then the +.B reportbug +command should be used instead. +.SH "ENVIRONMENT" +.B glibcbug +will utilize the following enviromntal variables if they exist: +.TP +.B EDITOR +and +.B VISUAL +Specifies the preferred editor. If +neither are set, +.B glibcbug +will default to +.B /usr/bin/sensible-editor +to determine a working editor. +.TP +.B HOME +Directory in which the failed bug report is saved if the mail fails. +.SH "SEE ALSO" +reportbug(1) +.SH "AUTHOR" +Alastair McKinstry . --- eglibc-2.13.orig/debian/local/manpages/iconv.1 +++ eglibc-2.13/debian/local/manpages/iconv.1 @@ -0,0 +1,274 @@ +.rn '' }` +.\" $RCSfile: iconv.1,v $$Revision: 1.1.2.2 $$Date: 2003/10/28 05:48:08 $ +.\" +.\" $Log: iconv.1,v $ +.\" Revision 1.1.2.2 2003/10/28 05:48:08 dan +.\" - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +.\" gotten lost. +.\" - Re-add typo fixes to iconv.1 and rpcgen.1. +.\" - Merge iconv.1 fix to iconv.pod. +.\" - Fix ld.so name in ld.so.8. +.\" - Re-add fix for locale-gen and POSIXLY_CORRECT. +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH ICONV 1 "lenny" "18/Nov/2007" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +iconv - Convert encoding of given files from one encoding to another +.SH "SYNOPSIS" +iconv \fB\-f\fR \fIencoding\fR [\fB\-t\fR \fIencoding\fR] \fI[inputfile]\fR... +.SH "DESCRIPTION" +The \fBiconv\fR program converts the encoding of characters in +\fIinputfile\fR, or from the standard input if no filename is specified, +from one coded character set to another. The result is +written to standard output unless otherwise specified by the +\fB\-\-output\fR option. +.TP +\fB\-\-from\-code\fR, \fB\-f\fR \fIencoding\fR +Convert characters from \fIencoding\fR. +.TP +\fB\-\-to\-code\fR, \fB\-t\fR \fIencoding\fR +Convert characters to \fIencoding\fR. If not specified the +encoding corresponding to the current locale is used. +.TP +\fB\-\-list\fR, \fB\-l\fR +List known coded character sets. +.TP +\fB\-c\fR +Omit invalid characters from output. +.TP +\fB\-\-output\fR, \fB\-o\fR \fIfile\fR +Specify output file (instead of stdout). +.TP +\fB\-\-silent\fR, \fB\-s\fR +Suppress warnings, but not errors. +.TP +\fB\-\-verbose\fR +Print progress information. +.TP +\fB\-\-help\fR, \fB\-?\fR +Give help list. +.TP +\fB\-\-usage\fR +Give a short usage message. +.TP +\fB\-\-version\fR, \fB\-V\fR +Print program version. +.SH ENCODINGS +The values permitted for \fI\-\-from\-code\fP and \fI\-\-to\-code\fP can be listed +by the \fBiconv \-\-list\fP command, and all combinations of the listed values are +supported. Furthermore the following two suffixes are supported: +.TP +//TRANSLIT +When the string "//TRANSLIT" is appended to \fI\-\-to\-code\fP, transliteration +is activated. +This means that when a character cannot be represented in the +target character set, it can be approximated through one or several +similarly looking characters. +.TP +//IGNORE +When the string "//IGNORE" is appended to \fI\-\-to\-code\fP, characters that +cannot be represented in the target character set will be silently discarded. + +.SH "AUTHOR" +\fIiconv\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Joel Klecker , +for the Debian GNU/Linux system. + +.rn }` '' +.IX Title "ICONV 1" +.IX Name "iconv - Convert encoding of given files from one encoding to another" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "ENCODINGS" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/locale.1 +++ eglibc-2.13/debian/local/manpages/locale.1 @@ -0,0 +1,268 @@ +.\" Automatically generated by Pod::Man v1.3, Pod::Parser v1.13 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R + +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "LOCALE 1" +.TH LOCALE 1 "2004-12-16" "sarge" "Debian GNU/Linux" +.UC +.SH "NAME" +locale \- Get locale-specific information. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBlocale\fR \fB[\fR \f(CW\-a\fR | \f(CW\-m\fR\fB]\fR +.PP +\&\fBlocale\fR \fB[\fR \-ck \fB]\fR \fIname\fR... +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The \fIlocale\fR program writes information about the current locale +environment, or all locales, to standard output. +.PP +When invoked without arguments, \fIlocale\fR summarizes the current +locale environment for each locale category defined by the LC_* +environment variables. +.PP +\&\fB\-a\fR, \fB\-\-all\-locales\fR +.PP +.Vb 1 +\& Write names of available locales. +.Ve +\&\fB\-m\fR, \fB\-\-charmaps\fR +.PP +.Vb 1 +\& Write names of available charmaps. +.Ve +.Sh "Output Format:" +.IX Subsection "Output Format:" +\&\fB\-c\fR, \fB\-\-category\-name\fR +.PP +.Vb 1 +\& Write names of selected categories. +.Ve +\&\fB\-k\fR, \fB\-\-keyword\-name\fR +.PP +.Vb 1 +\& Write names and values of selected keywords. +.Ve +.SH "ENVIRONMENT VARIABLES" +.IX Header "ENVIRONMENT VARIABLES" +These environment variables affect each locale categories for all locale-aware programs: + +\&\s-1LC_CTYPE\s0 +.PP +.Vb 1 +\& Character classification and case conversion. +.Ve +\&\s-1LC_COLLATE\s0 +.PP +.Vb 1 +\& Collation order. +.Ve +\&\s-1LC_TIME\s0 +.PP +.Vb 1 +\& Date and time formats. +.Ve +\&\s-1LC_NUMERIC\s0 +.PP +.Vb 1 +\& Non-monetary numeric formats. +.Ve +\&\s-1LC_MONETARY\s0 +.PP +.Vb 1 +\& Monetary formats. +.Ve +\&\s-1LC_MESSAGES\s0 +.PP +.Vb 2 +\& Formats of informative and diagnostic messages and +\& interactive responses. +.Ve +\&\s-1LC_PAPER\s0 +.PP +.Vb 1 +\& Paper size. +.Ve +\&\s-1LC_NAME\s0 +.PP +.Vb 1 +\& Name formats. +.Ve +\&\s-1LC_ADDRESS\s0 +.PP +.Vb 1 +\& Address formats and location information. +.Ve +\&\s-1LC_TELEPHONE\s0 +.PP +.Vb 1 +\& Telephone number formats. +.Ve +\&\s-1LC_MEASUREMENT\s0 +.PP +.Vb 1 +\& Measurement units (Metric or Other). +.Ve +\&\s-1LC_IDENTIFICATION\s0 +.PP +.Vb 1 +\& Metadata about the locale information. +.Ve +This environment variable can switch against multiple locale database: + +\&\s-1LOCPATH\s0 +.PP +.Vb 1 +\& The directory where locale data is stored. By default, /usr/lib/locale is used. +.Ve + +.SH "FILES" +.IX Header "FILES" +.PP +.PD 0 +.TP 8 +\fI/usr/share/i18n/SUPPORTED\fP +List of supported values (and their associated encoding) for the locale name. +This representation is recommended over +\fB\-\-all\-locales\fR one, due being the system wide supported values. +.PP + +.SH "AUTHOR" +.IX Header "AUTHOR" +\&\fIlocale\fR was written by Ulrich Drepper for the \s-1GNU\s0 C Library. +.PP +This manpage was written by Joel Klecker for +the Debian GNU/Linux system, and expanded by Alastair McKinstry + +.PP + +.SH "SEE ALSO" +.BR locale "(5), " locale "(7), " setlocale (3) + --- eglibc-2.13.orig/debian/local/manpages/Makefile +++ eglibc-2.13/debian/local/manpages/Makefile @@ -0,0 +1,20 @@ +#! /usr/bin/make -f + +DIRS := de es fr id pl pt_BR + +SGML_MAN = locale-gen.8 + +all: $(patsubst %.pod,%.1,$(wildcard *.pod)) $(SGML_MAN) po4a-man +%.1: %.pod + pod2man --center="Debian GNU/Linux" --release="etch" $< > $@ + +locale-gen.8: locale-gen.8.sgml + docbook-to-man $< > $@ + +po4a-man: + po4a -q po4a.cfg + +clean: + po4a -q po4a.cfg + $(foreach dir, $(DIRS), rm -rf $(dir)/*.8) + rm -f po/*~ --- eglibc-2.13.orig/debian/local/manpages/iconvconfig.8 +++ eglibc-2.13/debian/local/manpages/iconvconfig.8 @@ -0,0 +1,232 @@ +.rn '' }` +.\" $RCSfile: iconvconfig.8,v $$Revision: 1.1 $$Date: 2008-08-08 21:49:44 +0200 (ven. 08 août 2008) $ +.\" +.\" $Log: iconvconfig.8,v $ +.\" Revision 1.1 2003/11/03 17:37:27 jbailey +.\" - debian/local/manpages/gencat.1: New file. +.\" - debian/local/manpages/trace.1: New file. +.\" - debian/debhelper.in/libc-dev.manpages: Install them. +.\" - debian/local/manpages/iconvconfig.8: New file. +.\" - debian/debhelper.in/libc.manpages: Install it. +.\" +.\" Revision 1.1.2.2 2003/10/28 05:48:08 dan +.\" - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +.\" gotten lost. +.\" - Re-add typo fixes to iconv.1 and rpcgen.1. +.\" - Merge iconv.1 fix to iconv.pod. +.\" - Fix ld.so name in ld.so.8. +.\" - Re-add fix for locale-gen and POSIXLY_CORRECT. +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH ICONVCONFIG 8 "November 2003" "iconvconfig (glibc)" "Debian" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +iconvconfig \- Create fastloading iconv module configuration file +.SH "SYNOPSIS" +iconvconfig [OPTION...] [DIR...] +.SH "DESCRIPTION" +The \fBiconvconfig\fR program generates a cache that internationalised +applications can use to reduce loading time. +.PP +.TP +\fB--prefix\fR \fIPATH\fR +Prefix used for all file accesses +.SH "AUTHOR" +\fIiconvconfig\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Jeff Bailey . + +.rn }` '' +.IX Title "ICONVCONFIG 8" +.IX Name "iconvconfig - Create fastloading iconv module configuration file" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/localedef.1 +++ eglibc-2.13/debian/local/manpages/localedef.1 @@ -0,0 +1,293 @@ +.TH LOCALEDEF 1 "May 20, 2005" +.SH NAME +localedef \- compile locale definition files +.SH SYNOPSIS +.ad l +.nh +.B localedef +.RI [ options ] +.I outputpath +.br +.B "localedef \-\-list\-archive" +.RI [ options ] +.br +.B "localedef \-\-delete\-from\-archive" +.RI [ options ] +.IR localename " ..." +.br +.B "localedef \-\-add\-to\-archive" +.RI [ options ] +.IR compiledpath +.br +.B "localedef \-\-version" +.br +.B "localedef \-\-help" +.br +.B "localedef \-\-usage" +.ad b +.hy +.SH DESCRIPTION +The +.B localedef +program reads the indicated +.I charmap +and +.I input +files, compiles them to a binary form quickly usable by the +.BR locale (7) +functions in the C library, and places the output in +.IR outputpath . +.PP +If +.I outputpath +contains a slash character ('/'), it is directly the name of the output +directory. +In this case, there is a separate output file for each locale category +(LC_CTIME, LC_NUMERIC, and so on). +.PP +Otherwise, if the +.B \-\-no\-archive +option is used, +.I outputpath +is the name of a subdirectory in +.B /usr/lib/locale +where per-category compiled files are placed. +.PP +Otherwise, +.I outputpath +is the name of a locale and the compiled locale data is added to the +archive file +.BR /usr/lib/locale/locale-archive . +.PP +In any case, +.B localedef +aborts if the directory in which it tries to write locale files has +not already been created. +.PP +If no +.I charmapfile +is given, the value +.I POSIX +is used by default. +If no +.I inputfile +is given, or if it is given as a dash +.RB ( \- ), +.B localedef +reads from standard input. +.SH OPTIONS +Most options can have either short or long forms. If multiple short +options are used, they can be combined in one word (for example, +.B \-cv +is identical to +.BR "\-c \-v" ). +.PP +If a short option takes an argument, the argument can be given separately +as the next word +.RB ( "\-f foo" ), +or it can be written together with the option letter +.RB ( \-ffoo ). +If a long option takes an argument, the argument can be given separately +as the next word, or it can be written as option=argument +.RB ( \-\-charmap=foo ). +.SS "Operation selection options" +A few options direct +.B localedef +to do something else than compile locale definitions. +Only one of these should be used at a time. +.TP +.B \-\-delete\-from\-archive +Delete the named locales from the locale archive file. +.TP +.B \-\-list\-archive +List the locales contained in the locale archive file. +.TP +.B \-\-add\-to\-archive +Add the +.I compiledpath +directories to the locale archive file. +The directories should have been created by previous runs of +.BR localedef , +using +.BR \-\-no\-archive . +.SS "Other options" +Some of the following options are only sensible for some operations; hopefully it is self-evident which ones. +.TP +.BI \-f " charmapfile" ", \-\-charmap=" charmapfile +Specify the file that defines the symbolic character names that are +used by the input file. If the file is in the default directory for +character maps, it is not necessary to specify the full pathname. +This default directory is printed by +.BR "localedef \-\-help" . +.TP +.BI \-i " inputfile" ", \-\-inputfile=" inputfile +Specify the locale definition file to compile. If +.I inputfile +is not absolute, +.B localedef +will also look in the directories specified by the environment variable +.B I18NPATH +and in the default directory for locale definition files. This default +directory is printed by +.BR "localedef \-\-help" . +.TP +.BI \-u " repertoirefile" ", \-\-repertoire-map=" repertoirefile +Read mappings from symbolic names to Unicode UCS4 values from +.IR repertoirefile . +.TP +.BI \-A " aliasfile" ", \-\-alias\-file=" aliasfile +Use +.I aliasfile +to look up aliases for locale names. +There is no default aliases file. +.TP +.BI \-\-prefix= pathname +Set prefix to be prepended to the full archive pathname. +By default, the prefix is empty. +Setting the prefix to +.IR foo , +the archive would be placed in +.BR foo/usr/lib/locale/locale-archive . +.TP +.B "\-c, \-\-force" +Write the output files even if warnings were generated about the input +file. +.TP +.B \-\-old\-style +Create old-style tables. +.TP +.B "\-v, \-\-verbose" +Generate extra warnings about errors that are normally ignored. +.TP +.B \-\-quiet +Suppress all notifications and warnings, and report only fatal errors. +.TP +.B \-\-posix +Conform strictly to POSIX. Implies +.BR \-\-verbose . +This option currently has no other effect. Posix conformance is +assumed if the environment variable +.B POSIXLY_CORRECT +is set. +.TP +.B \-\-replace +Replace a locale in the locale archive file. +Without this option, if the locale is in the archive file already, +an error occurs. +.TP +.B \-\-no\-archive +Do not use the locale archive file, instead create +.I outputpath +as a subdirectory in the same directory as the locale archive file, +and create separate output files for locale categories in it. +.TP +.B "\-\-help" +Print a usage summary and exit. Also prints the default paths used by +.BR localedef . +.TP +.B "\-\-usage" +Print a short usage summary and exit. +.TP +.B "\-V, \-\-version" +Print the version number, license, and disclaimer of warranty for +.BR localedef . +.SH ENVIRONMENT +.TP +.B POSIXLY_CORRECT +The +.B \-\-posix +flag is assumed if this environment variable is set. +.TP +.B I18NPATH +A colon separated list of default directories for locale definition files. +.SH FILES +.TP +.B /usr/share/i18n/charmaps +Usual default charmap path. +.TP +.B /usr/share/i18n/locales +Usual default path for locale source files. +.TP +.B /usr/share/i18n/repertoiremaps +Usual default repertoire map path. +.TP +.B /usr/lib/locale/locale-archive +Usual default locale archive location. +.TP +.IB outputpath/ LC_COLLATE +One of the output files. It describes the rules for comparing strings +in the locale's alphabet. +.TP +.IB outputpath/ LC_CTYPE +One of the output files. It contains information about character +cases and case conversions for the locale. +.TP +.IB outputpath/ LC_MONETARY +One of the output files. It describes the way monetary values should +be formatted in the locale. +.TP +.IB outputpath/ LC_MESSAGES/SYS_LC_MESSAGES +One of the output files. It contains information about the language +messages should be printed in, and what an affirmative or negative +answer looks like. +.TP +.IB outputpath/ LC_NUMERIC +One of the output files. It describes the rules for formatting +numbers in the locale. +.TP +.IB outputpath/ LC_TIME +One of the output files. It describes the rules for formatting +times and dates in the locale. +.TP +.IB outputpath/ LC_PAPER +One of the output files. It describes the default paper size +in the locale. +.TP +.IB outputpath/ LC_NAME +One of the output files. It describes the rules for formatting +names in the locale. +.TP +.IB outputpath/ LC_ADDRESS +One of the output files. It describes the rules for formatting +addresses, and other location information in the locale. +.TP +.IB outputpath/ LC_TELEPHONE +One of the output files. It describes the rules for formatting +telephone numbers in the locale. +.TP +.IB outputpath/ LC_MEASUREMENT +One of the output files. It describes the rules for measurement in the +locale, e.g. Metric or other units. +.TP +.IB outputpath/ LC_IDENTIFICATION +One of the output files. It identifies the elements within the locale. +.SH EXAMPLES +Compile the locale files for Finnish in the UTF-8 character set +and add it to the default locale archive with the name +.BR fi_FI.UTF-8 : +.PP +.RS +localedef \-f UTF\-8 \-i fi_FI fi_FI.UTF\-8 +.RE +.PP +The same, but generate files into the current directory (note that the +last argument must then contain a slash): +.PP +.RS +localedef \-f UTF\-8 \-i fi_FI ./ +.RE +.SH "SEE ALSO" +.BR locale "(5), " locale "(7), " locale (1) +.SH AUTHOR +The program was written by Ulrich Drepper. +.PP +This manual page was written by Richard Braakman on +behalf of the Debian GNU/Linux Project and anyone else who wants it. +It was amended by Alastair McKinstry to +explain new ISO 14652 elements, +and amended further by Lars Wirzenius to document new +functionality (as of GNU C library 2.3.5). +The manpage is not supported by the GNU libc maintainers and may be +out of date. +.SH STANDARDS +This program conforms to the POSIX standard P1003.2 --- eglibc-2.13.orig/debian/local/manpages/ld.so.8 +++ eglibc-2.13/debian/local/manpages/ld.so.8 @@ -0,0 +1,231 @@ +.TH "LD.SO" 8 "26 May 2007" +.SH NAME +ld.so/ld-linux.so \- dynamic linker/loader +.SH DESCRIPTION +.B ld.so +loads the shared libraries needed by a program, prepares the program +to run, and then runs it. +Unless explicitly specified via the +.B \-static +option to +.B ld +during compilation, all Linux programs are incomplete and require +further linking at run time. +.PP +The necessary shared libraries needed by the program are searched for +in the following order +.IP o +Using the environment variable +.B LD_LIBRARY_PATH +.RB ( LD_AOUT_LIBRARY_PATH +for a.out programs). +Except if the executable is a setuid/setgid binary, in which case it +is ignored. +.IP o +From the cache file +.BR /etc/ld.so.cache +which contains a compiled list of candidate libraries previously found +in the augmented library path. Libraries installed in hardware capabilities +directories (see below) are prefered to other libraries. +.IP o +In the default path +.BR /lib , +and then +.BR /usr/lib . +.SH COMMAND LINE OPTIONS +.TP +.B \-\-list +List all dependencies and how they are resolved. +.TP +.B \-\-verify +Verify that program is dynamically linked and this dynamic linker can handle +it. +.TP +.B \-\-library\-path PATH +Override +.B LD_LIBRARY_PATH +environment variable setting (see below). +.TP +.B \-\-ignore\-rpath LIST +Ignore RPATH and RUNPATH information in object names in LIST. +This option has been supported by glibc2 for about one hour. +Then it was renamed into: +.TP +.B \-\-inhibit\-rpath LIST +.SH ENVIRONMENT +.TP +.B LD_LIBRARY_PATH +A colon-separated list of directories in which to search for +ELF libraries at execution-time. +Similar to the +.B PATH +environment variable. +.TP +.B LD_PRELOAD +A whitespace-separated list of additional, user-specified, ELF shared +libraries to be loaded before all others. +This can be used to selectively override functions in other shared libraries. +For setuid/setgid ELF binaries, only libraries in the standard search +directories that are also setgid will be loaded. +.TP +.B LD_TRACE_LOADED_OBJECTS +If present, causes the program to list its dynamic library dependencies, +as if run by ldd, instead of running normally. +.TP +.B LD_BIND_NOW +If present, causes the dynamic linker to resolve all symbols at program +startup instead of when they are first referenced. +.TP +.B LD_BIND_NOT +Do not update the GOT (global offset table) and PLT (procedure linkage table) after resolving a symbol. +.TP +.B LD_AOUT_LIBRARY_PATH +A colon-separated list of directories in which to search for +a.out libraries at execution-time. +Similar to the +.B PATH +environment variable. +.TP +.B LD_AOUT_PRELOAD +The name of an additional, user-specified, a.out shared library to be loaded +after all others. +This can be used to selectively override functions in other shared libraries. +.TP +.B LD_NOWARN +Suppress warnings about a.out libraries with incompatible minor +version numbers. +.TP +.B LD_WARN +If set to non-empty string, warn about unresolved symbols. +.TP +.B LD_KEEPDIR +Don't ignore the directory in the names of a.out libraries to be loaded. +Use of this option is strongly discouraged. +.TP +.B LD_DEBUG +Output verbose debugging information about the dynamic linker. +If set to `all' prints all debugging information it has, if set to +`help' prints a help message about which categories can be specified +in this environment variable. +.TP +.B LD_DEBUG_OUTPUT +File where LD_DEBUG output should be fed into, default is standard +output. LD_DEBUG_OUTPUT is ignored for setuid/setgid binaries. +.TP +.B LD_VERBOSE +If set to non-empty string, output symbol versioning information +about the program if querying information about the program (ie. either +.B LD_TRACE_LOADED_OBJECTS +has been set, or --list or --verify options have been given to the dynamic linker). +.TP +.B LD_PROFILE +Shared object to be profiled. +.TP +.B +LD_PROFILE_OUTPUT +File where +.B LD_PROFILE +output should be stored, default is standard output. LD_PROFILE_OUTPUT is ignored for setuid/setgid binaries. +.TP +.B LD_ASSUME_KERNEL +Every DSO (Dynamic Shared Object, aka shared library) can tell the dynamic linker in glibc which +minimum OS ABI version is needed. The information about the minimum OS ABI version is encoded in +a ELF note section usually named .note.ABI-tag. This is used to determine which library to load +when multiple version of the same library is installed on the system. +The +.B LD_ASSUME_KERNEL +environment variable overrides the kernel version used by the dynamic linker to determine which +library to load. +.SH RPATH TOKEN EXPANSION +The runtime linker provides a number of tokens that can be used in an rpath +specification (\fBDT_RPATH\fR or \fBDT_RUNPATH\fR). +.TP +.B $ORIGIN +ld.so understands the string \fB$ORIGIN\fR (or equivalently \fB${ORIGIN}\fR) +in an rpath specification to mean the directory containing the application +executable. Thus, an application located in somedir/app could be compiled +with gcc -Wl,-rpath,'$ORIGIN/../lib' so that it finds an associated shared +library in somedir/lib no matter where somedir is located in the directory +hierarchy. +.TP +.B $PLATFORM +The string \fB$PLATFORM\fR (or equivalently \fB${PLATFORM}\fR) in an rpath +specifcation expands to the processor type of the current machine. Please note +that on some architectures the Linux kernel doesn't provide a platform +string to the dynamic linker. +.TP +.B $LIB +The string \fB$LIB\fR (or equivalently \fB${LIB}\fR) in an rpath corresponds +to the system libraries directory, which is /lib for the native architecture +on FHS compliant GNU/Linux systems. +.SH HARDWARE CAPABILITIES +Libraries might be compiled using hardware-specific instructions which do not +exist on all CPU. Such libraries should be installed in directories whose name +defines the hardware capabilities such as \fB/usr/lib/sse2/\fR. The dynamic +linker checks these directories against the hardware of the machine and selects +the best suitable version of a given library. Hardware capabilities directories +could be cascaded to combine CPU features. Hardware capabilities depends on +the CPU. The following names are currently recognized: +.B Alpha +ev4, ev5, ev56, ev6, ev67 +.TP +.B MIPS +loongson2e, loongson2f, octeon, octeon2 +.TP +.B PowerPC +4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle, +fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601, +ppc64, smt, spe, ucache, vsx +.TP +.B SPARC +flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2 +.TP +.B s390 +dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, +z900, z990, z9-109, z10, zarch +.TP +.TP +.B x86 (32-bit only) +acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx, +mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm +.SH FILES +.PD 0 +.TP 20 +.B /lib/ld.so +a.out dynamic linker/loader +.TP 20 +.B /lib/ld-linux.so.* +ELF dynamic linker/loader +.TP +.B /etc/ld.so.cache +File containing a compiled list of directories in which to search for +libraries and an ordered list of candidate libraries. +.TP +.B /etc/ld.so.preload +File containing a whitespace separated list of ELF shared libraries to +be loaded before the program. +libraries and an ordered list of candidate libraries. +.TP +.B /etc/ld.so.nohwcap +When this file is present the dynamic linker will load the non-optimized version +of a library, even if the CPU supports the optimized version. +.TP +.B lib*.so* +shared libraries +.PD +.SH SEE ALSO +.BR ldd (1), +.BR ldconfig (8). +.SH BUGS +.LP +Currently +.B ld.so +has no means of unloading and searching for compatible or newer version of +libraries. +.PP +.B ld.so +functionality is only available for executables compiled using libc version +4.4.3 or greater. +.SH AUTHORS +David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus +Torvalds, Lars Wirzenius and Mitch D'Souza (not necessarily in that order). --- eglibc-2.13.orig/debian/local/manpages/locale-gen.8.sgml +++ eglibc-2.13/debian/local/manpages/locale-gen.8.sgml @@ -0,0 +1,148 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + --> + + + Eduard"> + Bloch"> + + March 10, 2005"> + + 8"> + blade@debian.org"> + + LOCALE-GEN"> + + + Debian GNU/Linux"> + GNU"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + generates localisation files from templates + + + + &dhpackage; + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; command. + + By default, the locale package which provides the base support for + localisation of libc-based programs does not contain usable localisation + files for every supported language. This limitation has became necessary + because of the substantial size of such files and the large number of + languages supported by libc. As a result, Debian uses a special + mechanism where we prepare the actual localisation files on the target + host and distribute only the templates for them. + + &dhpackage; is a program that reads the file + /etc/locale.gen and invokes + localedef for the chosen localisation profiles. + Run &dhpackage; after you have modified the /etc/locale.gen file. + + + + + + OPTIONS + + + + + + By default, &dhpackage; removes all + existing locales and generates new ones afresh. The + option prevents this, so that + only locales which do not already exist are generated. This is + useful if calling locale-gen a number of times in + succession. + + + + + + + FILES + + /etc/locale.gen + The main configuration file, which has a simple format: every + line that is not empty and does not begin with a # is treated as a + locale definition that is to be built. + + + + + + SEE ALSO + + localedef(1), locale(1), locale.alias(5), locale.gen(5). + + + + + AUTHOR + + This manual page was written by &dhusername; <&dhemail;> for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the GNU Free Documentation + License, Version 1.1 or any later version published by the Free + Software Foundation; with no Invariant Sections, no Front-Cover + Texts and no Back-Cover Texts. + + +
+ + --- eglibc-2.13.orig/debian/local/manpages/rpcinfo.8 +++ eglibc-2.13/debian/local/manpages/rpcinfo.8 @@ -0,0 +1,166 @@ +.\" from: @(#)rpcinfo.8c 2.2 88/08/03 4.0 RPCSRC; from 1.24 88/02/25 SMI +.\" $Id: rpcinfo.8,v 1.1.2.1 2003/09/22 21:33:35 jbailey Exp $ +.\" +.Dd December 17, 1987 +.Dt RPCINFO 8 +.Os +.Sh NAME +.Nm rpcinfo +.Nd report RPC information +.Sh SYNOPSIS +.Nm rpcinfo +.Fl p +.Op Ar host +.Nm rpcinfo +.Op Fl n Ar portnum +.Fl u Ar host +.Ar program +.Op Ar version +.Nm rpcinfo +.Op Fl n Ar portnum +.Fl t Ar host +.Ar program +.Op Ar version +.Nm rpcinfo +.Fl b +.Ar program version +.Nm rpcinfo +.Fl d +.Ar program version +.Sh DESCRIPTION +.Nm rpcinfo +makes an +.Tn RPC +call to an +.Tn RPC +server and reports what it finds. +.Sh OPTIONS +.Bl -tag -width indent +.It Fl p +Probe the portmapper on +.Ar host , +and print a list of all registered +.Tn RPC +programs. If +.Ar host +is not specified, it defaults to the value returned by +.Xr hostname 1 . +.It Fl u +Make an +.Tn RPC +call to procedure 0 of +.Ar program +on the specified +.Ar host +using +.Tn UDP , +and report whether a response was received. +.It Fl t +Make an +.Tn RPC +call to procedure 0 of +.Ar program +on the specified +.Ar host +using +.Tn TCP , +and report whether a response was received. +.It Fl n +Use +.Ar portnum +as the port number for the +.Fl t +and +.Fl u +options instead of the port number given by the portmapper. +.It Fl b +Make an +.Tn RPC +broadcast to procedure 0 of the specified +.Ar program +and +.Ar version +using +.Tn UDP +and report all hosts that respond. +.It Fl d +Delete registration for the +.Tn RPC +service of the specified +.Ar program +and +.Ar version . +This option can be exercised only by the super-user. +.El +.Pp +The +.Ar program +argument can be either a name or a number. +.Pp +If a +.Ar version +is specified, +.Nm rpcinfo +attempts to call that version of the specified +.Ar program . +Otherwise, +.Nm rpcinfo +attempts to find all the registered version +numbers for the specified +.Ar program +by calling version 0 (which is presumed not +to exist; if it does exist, +.Ar rpcinfo +attempts to obtain this information by calling +an extremely high version +number instead) and attempts to call each registered version. +Note: the version number is required for +.Fl b +and +.Fl d +options. +.Sh EXAMPLES +To show all of the +.Tn RPC +services registered on the local machine use: +.Pp +.Dl example% rpcinfo -p +.Pp +To show all of the +.Tn RPC +services registered on the machine named +.Ar klaxon +use: +.Pp +.Dl example% rpcinfo -p klaxon +.Pp +To show all machines on the local net that are running the Yellow Pages +service use: +.Pp +.Dl example% rpcinfo -b ypserv 'version' | uniq +.Pp +where 'version' is the current Yellow Pages version obtained from the +results of the +.Fl p +switch above. +.Pp +To delete the registration for version 1 of the +.Nm walld +service use: +.Pp +.Dl example% rpcinfo -d walld 1 +.Sh SEE ALSO +.Xr rpc 5 , +.Xr portmap 8 +.Rs +.%T "RPC Programming Guide" +.Re +.Sh BUGS +In releases prior to SunOS 3.0, the Network File System (NFS) did not +register itself with the portmapper; +.Nm rpcinfo +cannot be used to make +.Tn RPC +calls to the +.Tn NFS +server on hosts running such releases. --- eglibc-2.13.orig/debian/local/manpages/locale.gen.5 +++ eglibc-2.13/debian/local/manpages/locale.gen.5 @@ -0,0 +1,41 @@ +.\" -*- nroff -*- +.\" Copyright (C) 2002, 2005 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 +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program; if not, write to the Free Software Foundation, +.\" Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +.TH locale.gen 5 "July 2005" "Debian GNU/Linux" +.SH "NAME" +locale.gen \- Configuration file for locale-gen +.SH "DESCRIPTION" +The file \fB/etc/locale.gen\fP lists the locales that are to be generated +by the \fBlocale-gen\fP command. + +Each line is of the form: + + + +where is one of the locales given in +.B /usr/share/i18n/locales +and is one of the character sets listed in +.B /usr/share/i18n/charmaps + +The +.B locale-gen +command will generate all the locales, placing them in +\fB/usr/lib/locale\fP. + +.SH "SEE ALSO" +locale-gen(8), localedef(1), locale(1) +.SH "AUTHOR" +Alastair McKinstry --- eglibc-2.13.orig/debian/local/manpages/ldconfig.8 +++ eglibc-2.13/debian/local/manpages/ldconfig.8 @@ -0,0 +1,168 @@ +.TH ldconfig 8 "25 February 2008" +.SH NAME +ldconfig \- configure dynamic linker run-time bindings +.SH SYNOPSIS +ldconfig +.RB [OPTION...] +.SH DESCRIPTION +.B ldconfig +creates, updates, and removes the necessary links and cache (for use by the run-time linker, +.IR ld.so ) +to the most recent shared libraries found in the directories specified +on the command line, in the file +.IR /etc/ld.so.conf , +and in the trusted directories +.RI ( /usr/lib +and +.IR /lib ). +.B ldconfig +checks the header and file names of the libraries it encounters when +determining which versions should have their links updated. +.B ldconfig +ignores symbolic links when scanning for libraries. +.PP +.B ldconfig +will attempt to deduce the type of ELF libs (ie. libc 5.x or libc 6.x (glibc)) +based on what C libraries if any the library was linked against, therefore when +making dynamic libraries, it is wise to explicitly link against libc (use -lc). +.B ldconfig +is capable of storing multiple ABI types of libraries into a single cache on +architectures which allow native running of multiple ABIs, like +ia32/ia64/x86_64 or sparc32/sparc64. +.PP +Some existing libs do not contain enough information to allow the deduction of +their type, therefore the +.IR /etc/ld.so.conf +file format allows the specification of an expected type. This is +.B only +used for those ELF libs which we can not work out. The format +is like this "dirname=TYPE", where type can be libc4, libc5 or libc6. +(This syntax also works on the command line). Spaces are +.B not +allowed. Also see the +.B -p +option. +.PP +Directory names containing an +.B = +are no longer legal unless they also have an expected type specifier. +.PP +.B ldconfig +should normally be run by the super-user as it may require write +permission on some root owned directories and files. If you use +.B -r +option to change the root directory, you don't have to be super-user though +as long as you have sufficient right to that directory tree. +.SH OPTIONS +.TP +.B \-v\ \-\-verbose +Verbose mode. +Print current version number, the name of each directory as it +is scanned and any links that are created. +.TP +.B \-n +Only process directories specified on the command line. +Don't process the trusted directories +.RI ( /usr/lib +and +.IR /lib ) +nor those specified in +.IR /etc/ld.so.conf . +Implies +.BR \-N . +.TP +.B \-N +Don't rebuild the cache. +Unless +.B \-X +is also specified, links are still updated. +.TP +.B \-X +Don't update links. +Unless +.B \-N +is also specified, the cache is still rebuilt. +.TP +.B \-f conf +Use +.B conf +instead of +.IR /etc/ld.so.conf . +.TP +.B \-C cache +Use +.B cache +instead of +.IR /etc/ld.so.cache . +.TP +.B \-r root +Change to and use +.B root +as the root directory. +.TP +.B \-l +Library mode. +Manually link individual libraries. +Intended for use by experts only. +.TP +.B \-p\ \-\-print-cache +Print the lists of directories and candidate libraries stored in +the current cache. +.TP +.B \-c\ \-\-format=FORMAT +Use +.B FORMAT +for the cache file. Choices are old, new and compat (the default). +.TP +.B \-i \-\-ignore-aux-cache +Ignore auxiliary cache file. +.TP +.B \-?\ \-\-help \-\-usage +Print usage information. +.TP +.B \-V\ \-\-version +Print version and exit. +.SH EXAMPLES +.RS +# /sbin/ldconfig -v +.RE +will set up the correct links for the shared binaries and rebuild +the cache. +.RS +# /sbin/ldconfig -n /lib +.RE +as root after the installation of a new shared library will properly update the +shared library symbolic links in /lib. +.SH FILES +.PD 0 +.TP 20 +.B /lib/ld-linux.so.* +execution time linker/loader +.TP 20 +.B /etc/ld.so.conf +File containing a list of colon, space, tab, newline, or comma separated +directories in which to search for libraries. +.TP 20 +.B /etc/ld.so.cache +File containing an ordered list of libraries found in the directories +specified in +.BR /etc/ld.so.conf . +This file is not in human readable format, and is not intended to be +edited. +.TP +.B lib*.so.version +shared libraries +.PD +.SH SEE ALSO +.BR ldd (1), +.BR ld.so (8). +.SH BUGS +.LP +.BR ldconfig , +being a user process, must be run manually and has no means of dynamically +determining and relinking shared libraries for use by +.BR ld.so +when a new shared library is installed. +.SH AUTHORS +Andreas Jaeger. +Manual page written by David Engel and Mitch D'Souza. --- eglibc-2.13.orig/debian/local/manpages/tzselect.1 +++ eglibc-2.13/debian/local/manpages/tzselect.1 @@ -0,0 +1,67 @@ +.\" Copyright 1998 Marcus Brinkmann (brinkmd@debian.org) +.\" +.\" Permission is granted to make and distribute verbatim copies of this +.\" manual provided the copyright notice and this permission notice are +.\" preserved on all copies. +.\" +.\" Permission is granted to copy and distribute modified versions of this +.\" manual under the conditions for verbatim copying, provided that the +.\" entire resulting derived work is distributed under the terms of a +.\" permission notice identical to this one +.\" +.\" Since the Linux kernel and libraries are constantly changing, this +.\" manual page may be incorrect or out-of-date. The author(s) assume no +.\" responsibility for errors or omissions, or for damages resulting from +.\" the use of the information contained herein. The author(s) may not +.\" have taken the same level of care in the production of this manual, +.\" which is licensed free of charge, as they might when working +.\" professionally. +.\" +.\" Formatted or processed versions of this manual, if unaccompanied by +.\" the source, must acknowledge the copyright and authors of this work. +.\" +.\" Modified Mon Jul 12 18:40:00 1998 by Marcus Brinkmann (brinkmd@debian.org) +.TH TZSELECT 1 "12 June 1998" "Debian" "Debian Timezone Configuration" +.SH NAME +tzselect \- view timezones +.SH SYNOPSIS +.B tzselect +.SH DESCRIPTION +This manual page explains how you can use the +.B "tzselect" +utility to view the installed timezone. It comes handy when you want to know what time it is in +other countries, or if you just wonder what timezones exist. + +.B tzselect +is called without any parameters from the shell. It shows a list of about one dozen geographic +areas one can roughly recognize as continents. After choosing a geographic area by number, a +list of countries and cities in this area will be shown. + +You can press the +.B Enter +key to reprint the list. To choose a timezone, just press the number left to it. +If your input is invalid, the list will be reprinted. + +You may press +.B Ctrl-C +to interrupt the script at any time. + +Note that +.B tzselect +will not actually change the timezone for you. Use 'dpkg-reconfigure tzdata' to achieve this. +.SH FILES +.I /usr/share/zoneinfo/ +.SH "SEE ALSO" +.BR hwclock (8) +.SH AUTHOR +Copyright 1998 Marcus Brinkmann + +Please see nroff source for legal notice. + + + + + + + + --- eglibc-2.13.orig/debian/local/manpages/nscd.conf.5 +++ eglibc-2.13/debian/local/manpages/nscd.conf.5 @@ -0,0 +1,243 @@ +.\" Placed in the Public Domain by Sebastian Rittau +.TH NSCD.CONF 5 "07 January 2001" +.UC 5 +.SH NAME +nscd.conf \- configuration file for Name Service Caching Daemon +.hy 0 +.SH DESCRIPTION +.I /etc/nscd.conf +configures the caches used by +.BR nscd (8) +as well as some generic options. +.BR nscd (8) +is able to use a configuration file at a different location, +when supplied with the +.IR -f +or +.IR --config-file +command line option. + +.PP +The configuration file consists of a set of lines. +Empty lines, and text after a '#' is ignored. +All remaining lines denote the setting of an option. +White space before and after options, and between +options and option arguments is ignored. + +There are two kinds of options: General options influence +.BR nscd (8)'s +general behaviour, while cache related options only affect the +specified cache. Options are set like this: +.nf + + general_option option + cache_option cache_name option +.fi +.SH GENERAL OPTIONS +.TP +.BI logfile \ file +Specifies the name of the debug log-file that +.BR nscd (8) +should use if +.B debug-level +is higher than +.BR 0 . +If this option is not set, +.BR nscd (8) +will write its debug output to stderr. +.TP +.BI debug-level \ level +If +.I level +is higher than +.BR 0 , +.BR nscd (8) +will create some debug output. The higher the level, the more verbose +the output. +.TP +.BI threads \ #threads +This option sets the number of threads that +.BR nscd (8) +should use by default. It can be overridden by calling +.BR nscd (8) +with the +.I -t +or +.I --nthreads +argument. If neither this configuration option nor the command line +argument is given, +.BR nscd (8) +uses 5 threads by default. The minimum is 3. More threads means more +simultaneous connections that +.BR nscd (8) +can handle. +.TP +.BI max-threads \ #threads +Specifies the maximum number of threads to be started. +.TP +.BI server-user \ user +By default, +.BR nscd (8) +is run as user root. This option can be set to force +.BR nscd (8) +to drop root privileges after startup. It cannot be used when +.BR nscd (8) +is called with the +.I -S +or +.I --secure +argument. Also note that some services require that nscd run as root, so +using this may break those lookup services. +.TP +.BI stat-user \ user +Specifies the user who is allowed to request statistics. +.TP +.BI paranoia \ bool +.I bool +must be one of +.B yes +or +.BR no . +Enabling paranoia mode causes +.BR nscd (8) +to restart itself periodically. +.TP +.BI restart-interval \ time +Sets the restart interval to time seconds if periodic restart is enabled by enabling +paranoia mode. The default value is 3600. +.SH CACHE OPTIONS +All cache options take two arguments. The first one denotes +the service or cache the option should affect. Currently +.I service +can be one of +.BR passwd , +.BR group , +or +.BR hosts . +.TP +.BI enable-cache \ service\ bool +.I bool +must be one of +.B yes +or +.BR no . +Each cache is disabled by default and must be enabled explicitly +by setting this options to +.BR yes . +.TP +.BI positive-time-to-live \ service\ secs +This is the number of seconds after which a cached entry is +removed from the cache. This defaults to 3600 seconds (i. e. +one hour). +.TP +.BI negative-time-to-live \ service\ secs +If an entry is not found by the Name Service, it is added to +the cache and marked as "not existent". This option sets the number +of seconds after which such a not existent entry is removed from +the cache. This defaults to 20 seconds for the +.B password +and +.B host +caches and to 60 seconds for the +.B group +cache. +.TP +.BI suggested-size \ service\ prime-number +This option sets the size of the hash that is used to store the +cache entries. As this is a hash, it should be reasonably larger +than the maximum number of entries that is expected to be cached +simultaneously and should be a prime number. It defaults to a +size of 211 entries. +.TP +.BI check-files \ service\ bool +.I bool +must be one of +.B yes +(default) or +.BR no . +If file checking is enabled, +.BR nscd (8) +periodically checks the modification time of +.IR /etc/passwd , +.IR /etc/group , +or +.I /etc/hosts +(for the +.BR passwd , +.BR group , +and +.B host +cache respectively) +and invalidates the cache if the file has changed since the +last check. +.TP +.BI persistent \ service\ bool +.I bool +must be one of +.B yes +(default) or +.BR no . +Keep the content of the cache for service over +.BR nscd (8) +restarts. Useful when paranoia mode is set. +.TP +.BI shared \ service\ bool +.I bool +must be one of +.B yes +(default) or +.BR no . +The memory mapping of the +.BR nscd (8) +databases for service is shared with the clients so that they can directly search +in them instead of having to ask the daemon over the socket each time a lookup is +performed. +.TP +.BI reload-count \ #number +Sets the number of times a cached record is reloaded before it is pruned from +the cache. Each cache record has a timeout, when that timeout expires, +.BR nscd (8) +will either reload it (query the NSS service again if the data hasn't changed), or +drop it. +.TP +.BI max-db-size \ service\ number-of-bytes +Sets the maximum allowable size for the service. +.TP +.BI auto-propagate \ service\ bool +When set to no for passwd or group service, then the +.I .byname +requests are not added to +.I passwd.byuid +or +.I group.bygid +cache. This may help for tables containing multiple records for the same id. +.SH EXAMPLE +.nf + +# This is a comment. + + logfile /var/log/nscd.log + threads 6 + server-user nobody + debug-level 0 + + enable-cache passwd yes + positive-time-to-live passwd 600 + negative-time-to-live passwd 20 + suggested-size passwd 211 + check-files passwd yes + + enable-cache group yes + positive-time-to-live group 3600 + negative-time-to-live group 60 + suggested-size group 211 + check-files group yes + + enable-cache hosts yes + positive-time-to-live hosts 3600 + negative-time-to-live hosts 20 + suggested-size hosts 211 + check-files hosts yes +.fi +.SH SEE ALSO +nscd(8), nsswitch.conf(5) --- eglibc-2.13.orig/debian/local/manpages/getconf.1 +++ eglibc-2.13/debian/local/manpages/getconf.1 @@ -0,0 +1,247 @@ +.rn '' }` +.\" $RCSfile: getconf.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +.\" +.\" $Log: getconf.1,v $ +.\" Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +.\" New directory for things we add to the package +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH GETCONF 1 "squeeze" "13/Jun/2010" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +getconf \- Query system configuration variables +.SH "SYNOPSIS" +\fBgetconf\fR \-a +.P +\fBgetconf\fR [\fB\-v specification\fR] system_var +.PP +\fBgetconf\fR [\fB\-v specification\fR] path_var pathname +.SH "DESCRIPTION" +\fB\-a\fR +.PP +.Vb 2 +\& Displays all configuration variables for the current system +\& and their values. +.Ve +\fB\-v\fR +.PP +.Vb 2 +\& Indicate the specification and version for which to obtain +\& configuration variables. +.Ve +\fBsystem_var\fR +.PP +.Vb 2 +\& A system configuration variable, as defined by sysconf(3) or +\& confstr(3). +.Ve +\fBpath_var\fR +.PP +.Vb 2 +\& A system configuration variable as defined by pathconf(3). This +\& must be used with a pathname. +.Ve +.SH "AUTHOR" +\fIgetconf\fR was written by Roland McGrath for the GNU C Library +.PP +This man page was written by Ben Collins for +the Debian GNU/Linux system. +.SH "SEE ALSO" +\fBsysconf\fR(3), \fBpathconf\fR(3), \fBconfstr\fR(3) + +.rn }` '' +.IX Title "GETCONF 1" +.IX Name "getconf - Query system configuration variables" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + +.IX Header "SEE ALSO" + --- eglibc-2.13.orig/debian/local/manpages/gai.conf.5 +++ eglibc-2.13/debian/local/manpages/gai.conf.5 @@ -0,0 +1,92 @@ +.\" A man page for gai.conf. -*- nroff -*- +.\" +.\" Copyright (C) 2006 Red Hat, Inc. All rights reserved. +.\" +.\" This copyrighted material is made available to anyone wishing to use, +.\" modify, copy, or redistribute it subject to the terms and conditions of the +.\" GNU General Public License v.2. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU General Public License along +.\" with this program; if not, write to the Free Software Foundation, Inc., +.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +.\" +.\" Author: Ulrich Drepper +.TH gai.conf 5 "May 2006" gai.conf + +.SH NAME +gai.conf \- getaddrinfo(3) configuration file + +.SH DESCRIPTION +A call to +.BR getaddrinfo (3) +might return multiple answers. According to RFC 3484 these answers must +be sorted so that the answer with the highest success rate is first in +the list. The RFC provides an algorithm for the sorting. The static +rules are not always adequate, though. For this reason the RFC also +requires that system administrators get the chance to dynamically change +the sorting. For the glibc implementation this can be achieved with +the +.BR /etc/gai.conf +file. +.PP +Each line in the configuration file consists of a keyword and its +parameters. White spaces in any place are ignored. Lines starting +with `#' are comments and are ignored. +.PP +The keywords currently recognized are: +.TP +\fBlabel\fR \fInetmask\fR \fIprecedence\fR +The value is added to the label table used in the RFC 3484 sorting. +If any \fBlabel\fR definition is present in the configuration file +is present the default table is not used. All the label definitions +of the default table which are to be maintained have to be duplicated. +Following the keyword the line has to contain a network mask and a label +value. + +.TP +\fBprecedence\fR \fInetmask\fR \fIprecedence\fR +This keyword is similar to \fBlabel\fR but instead the value is added +to the precendence table as specified in RFC 3484. Once again, the +presence of a single \fBprecedence\fR line in the configuration file +causes the default table to not be used. + +.TP +\fBreload\fR <\fByes\fR|\fBno\fR> +This keyword control whether a process checks whether the configuration +file has been changes since the last time it was read. If the value is +`\fByes\fR' the file is re-read. This might cause problems in multi-threaded +applications and is generally a bad idea. The default is `\fBno\fR'. + + +.SH EXAMPLE + +The default table according to RFC 3484 would be specified with the +following configuration file: + +.nf +label ::1/128 0 +label ::/0 1 +label 2002::/16 2 +label ::/96 3 +label ::ffff:0:0/96 4 +precendence ::1/128 50 +precendence ::/0 40 +precendence 2002::/16 30 +precendence ::/96 20 +precendence ::ffff:0:0/96 10 + + +.SH FILES +\fI/etc/gai.conf\fR + +.SH AUTHOR +Ulrich Drepper + +.SH SEE ALSO +.BR getaddrinfo(3), +RFC 3484 --- eglibc-2.13.orig/debian/local/manpages/gencat.1 +++ eglibc-2.13/debian/local/manpages/gencat.1 @@ -0,0 +1,240 @@ +.rn '' }` +.\" $RCSfile: gencat.1,v $$Revision: 1.1 $$Date: 2008-08-08 21:49:44 +0200 (ven. 08 août 2008) $ +.\" +.\" $Log: gencat.1,v $ +.\" Revision 1.1 2003/11/03 17:37:27 jbailey +.\" - debian/local/manpages/gencat.1: New file. +.\" - debian/local/manpages/trace.1: New file. +.\" - debian/debhelper.in/libc-dev.manpages: Install them. +.\" - debian/local/manpages/iconvconfig.8: New file. +.\" - debian/debhelper.in/libc.manpages: Install it. +.\" +.\" Revision 1.1.2.2 2003/10/28 05:48:08 dan +.\" - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +.\" gotten lost. +.\" - Re-add typo fixes to iconv.1 and rpcgen.1. +.\" - Merge iconv.1 fix to iconv.pod. +.\" - Fix ld.so name in ld.so.8. +.\" - Re-add fix for locale-gen and POSIXLY_CORRECT. +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH GENCAT 1 "November 2003" "gencat (glibc)" "Debian" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +gencat \- Generate message catalog +.SH "SYNOPSIS" +gencat [OPTION...] -o OUTPUT-FILE [INPUT-FILE]... +.SH "DESCRIPTION" +The \fBgencat\fR program is specified in the X/Open standard and the +GNU implementation follows this specification and so processes all +correctly formed input files. Additionally some extension are implemented +which help to work in a more reasonable way with the \fBcatgets\fR(3) functions. +.PP +.TP +\fB-H\fR, \fB--header\fR \fINAME\fR +Create C header file NAME containing symbol definitions +.TP +\fB--new\fR +Do not use existing catalog, force new output file +.TP +\fB-o\fR, \fB--output\fR \fINAME\fR +Write output to file NAME +.SH "AUTHOR" +\fIgencat\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Jeff Bailey . + +.rn }` '' +.IX Title "GENCAT 1" +.IX Name "gencat - Generate message catalog" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/getent.1 +++ eglibc-2.13/debian/local/manpages/getent.1 @@ -0,0 +1,235 @@ +.rn '' }` +.\" $RCSfile: getent.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +.\" +.\" $Log: getent.1,v $ +.\" Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +.\" New directory for things we add to the package +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH GETENT 1 "lenny" "18/Nov/2007" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +getent \- get entries from administrative database +.SH "SYNOPSIS" +\fBgetent\fR \fIdatabase\fR [\fIkey\fR ...] +.SH "DESCRIPTION" +The \fIgetent\fR program gathers entries from the specified +administrative database using the specified search keys. +Where \fIdatabase\fR is one of passwd, group, hosts, services, protocols, +or networks. +.SH "EXIT VALUES" +The \fIgetent\fR command exits with the following values: +.TP +.B 0 +Success +.TP +.B 1 +Unknown database +.TP +.B 2 +Key not found in database +.TP +.B 3 +Database does not support enumeration +.SH "AUTHOR" +\fIgetent\fR was written by Thorsten Kukuk for the GNU C Library. +.PP +This man page was written by Joel Klecker for +the Debian GNU/Linux system. + +.rn }` '' +.IX Title "GETENT 1" +.IX Name "getent - get entries from administrative database" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "EXIT VALUES" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/ldd.1 +++ eglibc-2.13/debian/local/manpages/ldd.1 @@ -0,0 +1,58 @@ +.\" Copyright 1995-2000 David Engel (david@ods.com) +.\" Copyright 1995 Rickard E. Faith (faith@cs.unc.edu) +.\" Copyright 2000 Ben Collins (bcollins@debian.org) +.\" Redone for GLibc 2.2 +.\" Copyright 2000 Jakub Jelinek (jakub@redhat.com) +.\" Corrected. +.\" Most of this was copied from the README file. Do not restrict distribution. +.\" May be distributed under the GNU General Public License +.TH LDD 1 "30 October 2000" +.SH NAME +ldd \- print shared library dependencies +.SH SYNOPSIS +.B ldd +.RB [OPTION]... +FILE... +.SH DESCRIPTION +.B ldd +prints the shared libraries required by each program or shared library +specified on the command line. +.SH OPTIONS +.TP +.B \-\-version +Print the version number of +.BR ldd . +.TP +.B \-v\ \-\-verbose +Print all information, including e.g. symbol versioning information. +.TP +.B \-d\ \-\-data\-relocs +Perform relocations and report any missing objects (ELF only). +.TP +.B \-r\ \-\-function\-relocs +Perform relocations for both data objects and functions, and +report any missing objects or functions (ELF only). +.TP +.B \-u\ \-\-unused +Print unused direct dependencies. +.TP +.B \-\-help +Usage information. +.SH BUGS +.B ldd +does not work on a.out shared libraries. +.PP +.B ldd +does not work with some extremely old a.out programs which were +built before +.B ldd +support was added to the compiler releases. +If you use +.B ldd +on one of these programs, the program will attempt to run with argc = 0 and +the results will be unpredictable. +.SH AUTHOR +Roland McGrath and Ulrich Drepper. +.SH SEE ALSO +.BR ldconfig (8), +.BR ld.so (8). --- eglibc-2.13.orig/debian/local/manpages/sprof.1 +++ eglibc-2.13/debian/local/manpages/sprof.1 @@ -0,0 +1,230 @@ +.rn '' }` +.\" $RCSfile: sprof.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +.\" +.\" $Log: sprof.1,v $ +.\" Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +.\" New directory for things we add to the package +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH SPROF 1 "etch" "7/Jan/2001" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +sprof \- Read and display shared object profiling data +.SH "SYNOPSIS" +\fBsprof\fR \fB\-p\fR|\fB\-c\fR [\fB\-q\fR] +.SH "DESCRIPTION" +\fB--call-pairs\fR, \fB\-c\fR +.PP +.Vb 1 +\& print list of count paths and their number of use +.Ve +\fB--flat-profile\fR, \fB\-p\fR +.PP +.Vb 1 +\& generate flat profile with counts and ticks +.Ve +\fB--graph\fR, \fB\-q\fR +.PP +.Vb 1 +\& generate call graph +.Ve +.SH "AUTHOR" +\fIsprof\fR was written by Ulrich Drepper for the GNU C Library +.PP +This man page was written by Joel Klecker for +the Debian GNU/Linux system. + +.rn }` '' +.IX Title "SPROF 1" +.IX Name "sprof - Read and display shared object profiling data" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/rpcgen.1 +++ eglibc-2.13/debian/local/manpages/rpcgen.1 @@ -0,0 +1,442 @@ +.\" @(#)rpcgen.new.1 1.1 90/11/09 TIRPC 1.0; from 40.10 of 10/10/89 +.\" Copyright (c) 1988,1990 Sun Microsystems, Inc. - All Rights Reserved. +.nr X +.if \nX=0 .ds x} rpcgen 1 "" "\&" +.if \nX=1 .ds x} rpcgen 1 "" +.if \nX=2 .ds x} rpcgen 1 "" "\&" +.if \nX=3 .ds x} rpcgen "" "" "\&" +.TH \*(x} +.SH NAME +\f4rpcgen\f1 \- an RPC protocol compiler +.SH SYNOPSIS +.ft 4 +.nf +rpcgen \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen [\-D\f2name\f4[=\f2value\f4]] [\-T] [\-K \f2secs\fP] \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen \-c|\-h|\-l|\-m|\-M|\-t [\-o \f2outfile\f4 ] \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen [\-I] \-s \f2nettype\f4 [\-o \f2outfile\f4] \f2infile\f4 +.fi +.ft 1 +.br +.ft 4 +.nf +rpcgen \-n \f2netid\f4 [\-o \f2outfile\f4] \f2infile\f4 +.ft 1 +.SH DESCRIPTION +.P +\f4rpcgen\f1 +is a tool that generates C code to implement an RPC protocol. +The input to +\f4rpcgen\f1 +is a language similar to C known as +RPC Language (Remote Procedure Call Language). +.P +\f4rpcgen\f1 +is normally used as in the first synopsis where +it takes an input file and generates up to four output files. +If the +\f2infile\f1 +is named +\f4proto.x\f1, +then +\f4rpcgen\f1 +will generate a header file in +\f4proto.h\f1, +XDR routines in +\f4proto_xdr.c\f1, +server-side stubs in +\f4proto_svc.c\f1, +and client-side stubs in +\f4proto_clnt.c\f1. +With the +\f4\-T\f1 +option, +it will also generate the RPC dispatch table in +\f4proto_tbl.i\f1. +With the +\f4\-Sc\f1 +option, +it will also generate sample code which would illustrate how to use the +remote procedures on the client side. This code would be created in +\f4proto_client.c\f1. +With the +\f4\-Ss\f1 +option, +it will also generate a sample server code which would illustrate how to write +the remote procedures. This code would be created in +\f4proto_server.c\f1. +.P +The server created can be started both by the port monitors +(for example, \f4inetd\f1 or \f4listen\f1) +or by itself. +When it is started by a port monitor, +it creates servers only for the transport for which +the file descriptor \f40\fP was passed. +The name of the transport must be specified +by setting up the environmental variable +\f4PM_TRANSPORT\f1. +When the server generated by +\f4rpcgen\f1 +is executed, +it creates server handles for all the transports +specified in +\f4NETPATH\f1 +environment variable, +or if it is unset, +it creates server handles for all the visible transports from +\f4/etc/netconfig\f1 +file. +Note: +the transports are chosen at run time and not at compile time. +.P +When built for a port monitor (\f4rpcgen\f1 \f4\-I\f1), and that the server +is self-started, it backgrounds itself by default. A special define symbol +\f4RPC_SVC_FG\f1 can be used to run the server process in foreground. +.P +The second synopsis provides special features which allow +for the creation of more sophisticated RPC servers. +These features include support for user provided +\f4#defines\f1 +and RPC dispatch tables. +The entries in the RPC dispatch table contain: +.RS +.PD 0 +.TP 3 +\(bu +pointers to the service routine corresponding to that procedure, +.TP +\(bu +a pointer to the input and output arguments +.TP +\(bu +the size of these routines +.PD +.RE +A server can use the dispatch table to check authorization +and then to execute the service routine; +a client library may use it to deal with the details of storage +management and XDR data conversion. +.P +The other three synopses shown above are used when +one does not want to generate all the output files, +but only a particular one. +Some examples of their usage is described in the +EXAMPLE +section below. +When +\f4rpcgen\f1 +is executed with the +\f4\-s\f1 +option, +it creates servers for that particular class of transports. +When +executed with the +\f4\-n\f1 +option, +it creates a server for the transport specified by +\f2netid\f1. +If +\f2infile\f1 +is not specified, +\f4rpcgen\f1 +accepts the standard input. +.P +The C preprocessor, +\f4cc \-E\f1 +[see \f4cc\fP(1)], +is run on the input file before it is actually interpreted by +\f4rpcgen\f1. +For each type of output file, +\f4rpcgen\f1 +defines a special preprocessor symbol for use by the +\f4rpcgen\f1 +programmer: +.P +.PD 0 +.TP 12 +\f4RPC_HDR\f1 +defined when compiling into header files +.TP +\f4RPC_XDR\f1 +defined when compiling into XDR routines +.TP +\f4RPC_SVC\f1 +defined when compiling into server-side stubs +.TP +\f4RPC_CLNT\f1 +defined when compiling into client-side stubs +.TP +\f4RPC_TBL\f1 +defined when compiling into RPC dispatch tables +.PD +.P +Any line beginning with +`\f4%\f1' +is passed directly into the output file, +uninterpreted by +\f4rpcgen\f1. +.P +For every data type referred to in +\f2infile\f1, +\f4rpcgen\f1 +assumes that there exists a +routine with the string +\f4xdr_\f1 +prepended to the name of the data type. +If this routine does not exist in the RPC/XDR +library, it must be provided. +Providing an undefined data type +allows customization of XDR routines. +.br +.ne 10 +.P +The following options are available: +.TP +\f4\-a\f1 +Generate all the files including sample code for client and server side. +.TP +\f4\-b\f1 +This generates code for the SunOS4.1 style of rpc. It is +for backward compatibility. This is the default. +.TP +\f4\-5\f1 +This generates code for the SysVr4 style of rpc. It is used by the +Transport Independent RPC that is in Svr4 systems. +By default rpcgen generates code for SunOS4.1 stype of rpc. +.TP +\f4\-c\f1 +Compile into XDR routines. +.TP +\f4\-C\f1 +Generate code in ANSI C. This option also generates code that could be +compiled with the C++ compiler. This is the default. +.TP +\f4\-k\f1 +Generate code in K&R C. The default is ANSI C. +.TP +\f4\-D\f2name\f4[=\f2value\f4]\f1 +Define a symbol +\f2name\f1. +Equivalent to the +\f4#define\f1 +directive in the source. +If no +\f2value\f1 +is given, +\f2value\f1 +is defined as \f41\f1. +This option may be specified more than once. +.TP +\f4\-h\f1 +Compile into +\f4C\f1 +data-definitions (a header file). +\f4\-T\f1 +option can be used in conjunction to produce a +header file which supports RPC dispatch tables. +.TP +\f4\-I\f1 +Generate a service that can be started from inetd. The default is +to generate a static service that handles transports selected with \f4\-s\f1. +Using \f4\-I\f1 allows starting a service by either method. +.TP +\f4-K\f2 secs\f1 +By default, services created using \f4rpcgen\fP wait \f4120\fP seconds +after servicing a request before exiting. +That interval can be changed using the \f4-K\fP flag. +To create a server that exits immediately upon servicing a request, +\f4-K\ 0\fP can be used. +To create a server that never exits, the appropriate argument is +\f4-K\ -1\fP. +.IP +When monitoring for a server, +some portmonitors, like +\f4listen\fP(1M), +.I always +spawn a new process in response to a service request. +If it is known that a server will be used with such a monitor, the +server should exit immediately on completion. +For such servers, \f4rpcgen\fP should be used with \f4-K\ -1\fP. +.TP +\f4\-l\f1 +Compile into client-side stubs. +.TP +\f4\-m\f1 +Compile into server-side stubs, +but do not generate a \(lqmain\(rq routine. +This option is useful for doing callback-routines +and for users who need to write their own +\(lqmain\(rq routine to do initialization. +.TP +\f4\-M\f1 +Generate multithread-safe stubs for passing arguments +and results between rpcgen-generated code and user written code. +This option is useful for users who want to use threads in their code. +.TP +\f4\-n \f2netid\f1 +Compile into server-side stubs for the transport +specified by +\f2netid\f1. +There should be an entry for +\f2netid\f1 +in the +netconfig database. +This option may be specified more than once, +so as to compile a server that serves multiple transports. +.TP +\f4\-N\f1 +Use the newstyle of rpcgen. This allows procedures to have multiple arguments. +It also uses the style of parameter passing that closely resembles C. So, when +passing an argument to a remote procedure you do not have to pass a pointer to +the argument but the argument itself. This behaviour is different from the oldstyle +of rpcgen generated code. The newstyle is not the default case because of +backward compatibility. +.TP +\f4\-o \f2outfile\f1 +Specify the name of the output file. +If none is specified, +standard output is used +(\f4\-c\f1, +\f4\-h\f1, +\f4\-l\f1, +\f4\-m\f1, +\f4\-n\f1, +\f4\-s\f1, +\f4\-Sc\f1, +\f4\-Sm\f1, +\f4\-Ss\f1, +and +\f4\-t\f1 +modes only). +.TP +\f4\-s \f2nettype\f1 +Compile into server-side stubs for all the +transports belonging to the class +\f2nettype\f1. +The supported classes are +\f4netpath\f1, +\f4visible\f1, +\f4circuit_n\f1, +\f4circuit_v\f1, +\f4datagram_n\f1, +\f4datagram_v\f1, +\f4tcp\f1, +and +\f4udp\f1 +[see \f4rpc\fP(3N) +for the meanings associated with these classes]. +This option may be specified more than once. +Note: +the transports are chosen at run time and not at compile time. +.TP +\f4\-Sc\f1 +Generate sample code to show the use of remote procedure and how to bind +to the server before calling the client side stubs generated by rpcgen. +.TP +\f4\-Sm\f1 +Generate a sample Makefile which can be used for compiling the application. +.TP +\f4\-Ss\f1 +Generate skeleton code for the remote procedures on the server side. You would need +to fill in the actual code for the remote procedures. +.TP +\f4\-t\f1 +Compile into RPC dispatch table. +.TP +\f4\-T\f1 +Generate the code to support RPC dispatch tables. +.P +The options +\f4\-c\f1, +\f4\-h\f1, +\f4\-l\f1, +\f4\-m\f1, +\f4\-s\f1 +and +\f4\-t\f1 +are used exclusively to generate a particular type of file, +while the options +\f4\-D\f1 +and +\f4\-T\f1 +are global and can be used with the other options. +.br +.ne 5 +.SH NOTES +The RPC Language does not support nesting of structures. +As a work-around, +structures can be declared at the top-level, +and their name used inside other structures in +order to achieve the same effect. +.P +Name clashes can occur when using program definitions, +since the apparent scoping does not really apply. +Most of these can be avoided by giving +unique names for programs, +versions, +procedures and types. +.P +The server code generated with +\f4\-n\f1 +option refers to the transport indicated by +\f2netid\f1 +and hence is very site specific. +.SH EXAMPLE +The following example: +.IP +.ft 4 +$ rpcgen \-T prot.x +.ft 1 +.P +generates the five files: +\f4prot.h\f1, +\f4prot_clnt.c\f1, +\f4prot_svc.c\f1, +\f4prot_xdr.c\f1 +and +\f4prot_tbl.i\f1. +.P +The following example sends the C data-definitions (header file) +to the standard output. +.IP +.ft 4 +$ rpcgen \-h prot.x +.ft 1 +.P +To send the test version of the +\f4-DTEST\f1, +server side stubs for +all the transport belonging to the class +\f4datagram_n\f1 +to standard output, use: +.IP +.ft 4 +$ rpcgen \-s datagram_n \-DTEST prot.x +.ft 1 +.P +To create the server side stubs for the transport indicated +by +\f2netid\f1 +\f4tcp\f1, +use: +.IP +.ft 4 +$ rpcgen \-n tcp \-o prot_svc.c prot.x +.ft 1 +.SH "SEE ALSO" +\f4cc\fP(1). --- eglibc-2.13.orig/debian/local/manpages/validlocale.8 +++ eglibc-2.13/debian/local/manpages/validlocale.8 @@ -0,0 +1,49 @@ +.TH "validlocale" "8" "0.1" "Petter Reinholdtsen" "" +.SH "NAME" +.LP +validlocale \- Test if a given locale is available +.SH "SYNTAX" +.LP +validlocale <\fIlocale\fP> +.SH "DESCRIPTION" +.LP +Test if the locale given as argument is a valid locale. If it +isn't, print on stdout the string to add to /etc/locale.gen to make +locale\-gen generate the locale (if it exists at all). +.SH "FILES" +.LP +\fI/usr/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "ENVIRONMENT VARIABLES" +.LP +.TP +\fBDEFAULTCHARSET\fP +Which charset to assume if the given locale is missing from the +list of supported locales. +.SH "EXAMPLES" +.LP +If you give a valid locale as parameter, it outputs a string +specifying this on stderr: +.LP +.IP +% validlocale C +.br +locale 'C' valid and available +.LP +When given a invalid (not generated or just nonexistent), it +outputs a string on stderr telling that this is an invalid locale, and a string to stdout with the string to add to /etc/locale.gen +to have this locale generated: +.LP +.IP +% validlocale de_AU@euro +.br +locale 'de_AU@euro' not available +.br +de_AU@euro ISO\-8859\-15 +.SH "AUTHORS" +.LP +Petter Reinholdtsen +.SH "SEE ALSO" +.LP +locale\-gen(8), localedef(1), locale(1) --- eglibc-2.13.orig/debian/local/manpages/zdump.1 +++ eglibc-2.13/debian/local/manpages/zdump.1 @@ -0,0 +1,43 @@ +.TH ZDUMP 1 +.SH NAME +zdump \- time zone dumper +.SH SYNOPSIS +.B zdump +[ +.B \-v +] [ +.B \-c +cutoffyear ] [ zonename ... ] +.SH DESCRIPTION +.I Zdump +prints the current time in each +.I zonename +named on the command line. +.PP +These options are available: +.TP +.B \-v +For each +.I zonename +on the command line, +print the time at the lowest possible time value, +the time one day after the lowest possible time value, +the times both one second before and exactly at +each detected time discontinuity, +the time at one day less than the highest possible time value, +and the time at the highest possible time value, +Each line ends with +.B isdst=1 +if the given time is Daylight Saving Time or +.B isdst=0 +otherwise. +.I zonename +should be the relative path file name from +.B /usr/share/zoneinfo/ +which directory contains all zone data. +.TP +.BI "\-c " cutoffyear +Cut off the verbose output near the start of the given year. +.SH "SEE ALSO" +ctime(3), zic(8) +.\" @(#)zdump.8 7.3 --- eglibc-2.13.orig/debian/local/manpages/zic.8 +++ eglibc-2.13/debian/local/manpages/zic.8 @@ -0,0 +1,413 @@ +.TH ZIC 8 +.SH NAME +zic \- time zone compiler +.SH SYNOPSIS +.B zic +[ +.B \-v +] [ +.B \-d +.I directory +] [ +.B \-l +.I localtime +] [ +.B \-p +.I posixrules +] [ +.B \-L +.I leapsecondfilename +] [ +.B \-s +] [ +.B \-y +.I command +] [ +.I filename +\&... ] +.SH DESCRIPTION +.if t .ds lq `` +.if t .ds rq '' +.if n .ds lq \&"\" +.if n .ds rq \&"\" +.de q +\\$3\*(lq\\$1\*(rq\\$2 +.. +.I Zic +reads text from the file(s) named on the command line +and creates the time conversion information files specified in this input. +If a +.I filename +is +.BR \- , +the standard input is read. +.PP +These options are available: +.TP +.BI "\-d " directory +Create time conversion information files in the named directory rather than +in the standard directory named below. +.TP +.BI "\-l " timezone +Use the given time zone as local time. +.I Zic +will act as if the input contained a link line of the form +.sp +.ti +.5i +Link \fItimezone\fP localtime +.TP +.BI "\-p " timezone +Use the given time zone's rules when handling POSIX-format +time zone environment variables. +.I Zic +will act as if the input contained a link line of the form +.sp +.ti +.5i +Link \fItimezone\fP posixrules +.TP +.BI "\-L " leapsecondfilename +Read leap second information from the file with the given name. +If this option is not used, +no leap second information appears in output files. +.TP +.B \-v +Complain if a year that appears in a data file is outside the range +of years representable by +.IR time (2) +values. +.TP +.B \-s +Limit time values stored in output files to values that are the same +whether they're taken to be signed or unsigned. +You can use this option to generate SVVS-compatible files. +.TP +.BI "\-y " command +Use the given +.I command +rather than +.B yearistype +when checking year types (see below). +.PP +Input lines are made up of fields. +Fields are separated from one another by any number of white space characters. +Leading and trailing white space on input lines is ignored. +An unquoted sharp character (#) in the input introduces a comment which extends +to the end of the line the sharp character appears on. +White space characters and sharp characters may be enclosed in double quotes +(") if they're to be used as part of a field. +Any line that is blank (after comment stripping) is ignored. +Non-blank lines are expected to be of one of three types: +rule lines, zone lines, and link lines. +.PP +A rule line has the form +.nf +.ti +.5i +.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u +.sp +Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +.sp +For example: +.ti +.5i +.sp +Rule US 1967 1973 \- Apr lastSun 2:00 1:00 D +.sp +.fi +The fields that make up a rule line are: +.TP "\w'LETTER/S'u" +.B NAME +Gives the (arbitrary) name of the set of rules this rule is part of. +.TP +.B FROM +Gives the first year in which the rule applies. +Any integer year can be supplied; the Gregorian calendar is assumed. +The word +.B minimum +(or an abbreviation) means the minimum year representable as an integer. +The word +.B maximum +(or an abbreviation) means the maximum year representable as an integer. +Rules can describe times that are not representable as time values, +with the unrepresentable times ignored; this allows rules to be portable +among hosts with differing time value types. +.TP +.B TO +Gives the final year in which the rule applies. +In addition to +.B minimum +and +.B maximum +(as above), +the word +.B only +(or an abbreviation) +may be used to repeat the value of the +.B FROM +field. +.TP +.B TYPE +Gives the type of year in which the rule applies. +If +.B TYPE +is +.B \- +then the rule applies in all years between +.B FROM +and +.B TO +inclusive. +If +.B TYPE +is something else, then +.I zic +executes the command +.ti +.5i +\fByearistype\fP \fIyear\fP \fItype\fP +.br +to check the type of a year: +an exit status of zero is taken to mean that the year is of the given type; +an exit status of one is taken to mean that the year is not of the given type. +.TP +.B IN +Names the month in which the rule takes effect. +Month names may be abbreviated. +.TP +.B ON +Gives the day on which the rule takes effect. +Recognized forms include: +.nf +.in +.5i +.sp +.ta \w'Sun<=25\0\0'u +5 the fifth of the month +lastSun the last Sunday in the month +lastMon the last Monday in the month +Sun>=8 first Sunday on or after the eighth +Sun<=25 last Sunday on or before the 25th +.fi +.in -.5i +.sp +Names of days of the week may be abbreviated or spelled out in full. +Note that there must be no spaces within the +.B ON +field. +.TP +.B AT +Gives the time of day at which the rule takes effect. +Recognized forms include: +.nf +.in +.5i +.sp +.ta \w'1:28:13\0\0'u +2 time in hours +2:00 time in hours and minutes +15:00 24-hour format time (for times after noon) +1:28:14 time in hours, minutes, and seconds +.fi +.in -.5i +.sp +where hour 0 is midnight at the start of the day, +and hour 24 is midnight at the end of the day. +Any of these forms may be followed by the letter +.B w +if the given time is local +.q "wall clock" +time, +.B s +if the given time is local +.q standard +time, or +.B u +(or +.B g +or +.BR z ) +if the given time is universal time; +in the absence of an indicator, +wall clock time is assumed. +.TP +.B SAVE +Gives the amount of time to be added to local standard time when the rule is in +effect. +This field has the same format as the +.B AT +field +(although, of course, the +.B w +and +.B s +suffixes are not used). +.TP +.B LETTER/S +Gives the +.q "variable part" +(for example, the +.q S +or +.q D +in +.q EST +or +.q EDT ) +of time zone abbreviations to be used when this rule is in effect. +If this field is +.BR \- , +the variable part is null. +.PP +A zone line has the form +.sp +.nf +.ti +.5i +.ta \w'Zone\0\0'u +\w'Australia/Adelaide\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u +Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] +.sp +For example: +.sp +.ti +.5i +Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00 +.sp +.fi +The fields that make up a zone line are: +.TP "\w'GMTOFF'u" +.B NAME +The name of the time zone. +This is the name used in creating the time conversion information file for the +zone. +.TP +.B GMTOFF +The amount of time to add to UTC to get standard time in this zone. +This field has the same format as the +.B AT +and +.B SAVE +fields of rule lines; +begin the field with a minus sign if time must be subtracted from UTC. +.TP +.B RULES/SAVE +The name of the rule(s) that apply in the time zone or, +alternately, an amount of time to add to local standard time. +If this field is +.B \- +then standard time always applies in the time zone. +.TP +.B FORMAT +The format for time zone abbreviations in this time zone. +The pair of characters +.B %s +is used to show where the +.q "variable part" +of the time zone abbreviation goes. +Alternately, +a slash (/) +separates standard and daylight abbreviations. +.TP +.B UNTIL +The time at which the UTC offset or the rule(s) change for a location. +It is specified as a year, a month, a day, and a time of day. +If this is specified, +the time zone information is generated from the given UTC offset +and rule change until the time specified. +The month, day, and time of day have the same format as the IN, ON, and AT +columns of a rule; trailing columns can be omitted, and default to the +earliest possible value for the missing columns. +.IP +The next line must be a +.q continuation +line; this has the same form as a zone line except that the +string +.q Zone +and the name are omitted, as the continuation line will +place information starting at the time specified as the +.B UNTIL +field in the previous line in the file used by the previous line. +Continuation lines may contain an +.B UNTIL +field, just as zone lines do, indicating that the next line is a further +continuation. +.PP +A link line has the form +.sp +.nf +.ti +.5i +.ta \w'Link\0\0'u +\w'Europe/Istanbul\0\0'u +Link LINK-FROM LINK-TO +.sp +For example: +.sp +.ti +.5i +Link Europe/Istanbul Asia/Istanbul +.sp +.fi +The +.B LINK-FROM +field should appear as the +.B NAME +field in some zone line; +the +.B LINK-TO +field is used as an alternate name for that zone. +.PP +Except for continuation lines, +lines may appear in any order in the input. +.PP +Lines in the file that describes leap seconds have the following form: +.nf +.ti +.5i +.ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u +.sp +Leap YEAR MONTH DAY HH:MM:SS CORR R/S +.sp +For example: +.ti +.5i +.sp +Leap 1974 Dec 31 23:59:60 + S +.sp +.fi +The +.BR YEAR , +.BR MONTH , +.BR DAY , +and +.B HH:MM:SS +fields tell when the leap second happened. +The +.B CORR +field +should be +.q + +if a second was added +or +.q - +if a second was skipped. +.\" There's no need to document the following, since it's impossible for more +.\" than one leap second to be inserted or deleted at a time. +.\" The C Standard is in error in suggesting the possibility. +.\" See Terry J Quinn, The BIPM and the accurate measure of time, +.\" Proc IEEE 79, 7 (July 1991), 894-905. +.\" or +.\" .q ++ +.\" if two seconds were added +.\" or +.\" .q -- +.\" if two seconds were skipped. +The +.B R/S +field +should be (an abbreviation of) +.q Stationary +if the leap second time given by the other fields should be interpreted as UTC +or +(an abbreviation of) +.q Rolling +if the leap second time given by the other fields should be interpreted as +local wall clock time. +.SH NOTE +For areas with more than two types of local time, +you may need to use local standard time in the +.B AT +field of the earliest transition time's rule to ensure that +the earliest transition time recorded in the compiled file is correct. +.SH FILE +/usr/share/zoneinfo standard directory used for created files +.SH "SEE ALSO" +ctime(3), zdump(1) +.\" @(#)zic.8 7.18 --- eglibc-2.13.orig/debian/local/manpages/locale.alias.5 +++ eglibc-2.13/debian/local/manpages/locale.alias.5 @@ -0,0 +1,45 @@ +.\" -*- nroff -*- +.\" Copyright (C) 2002 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 +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program; if not, write to the Free Software Foundation, +.\" Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +.TH locale.alias 5 "January 2002" "Debian GNU/Linux" +.SH "NAME" +locale.alias \- Locale name alias data base +.SH "DESCRIPTION" +The locale.alias database file (/etc/locale.alias) is used by the +.B locale +command and the +.B X Window System +. +It describes aliases for the locales, with each line being of the +form + + + +Where is in the POSIX format: xx_YY.CHARSET. +The first two letters \fIxx\fR are the ISO-639 Language code, + the next two \fIYY\fR are the ISO-3166 Country code, +and the Charset is one of the character sets (listed in +\fI/usr/share/i18n/charsets\fR +). +The aliases can be free text; they are normally the English language +name, or simpler versions of the POSIX locale name. + +Lines beginning with Hash ("#") are treated as comments and ignored. + +.SH "SEE ALSO" +locale(1), localedef(1), locale-gen(8), locale.gen(5) +.SH "AUTHOR" +Alastair McKinstry --- eglibc-2.13.orig/debian/local/manpages/catchsegv.1 +++ eglibc-2.13/debian/local/manpages/catchsegv.1 @@ -0,0 +1,218 @@ +.rn '' }` +.\" $RCSfile: catchsegv.1,v $$Revision: 1.1.2.1 $$Date: 2003/09/22 21:33:35 $ +.\" +.\" $Log: catchsegv.1,v $ +.\" Revision 1.1.2.1 2003/09/22 21:33:35 jbailey +.\" New directory for things we add to the package +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH CATCHSEGV 1 "etch" "7/Jan/2001" "Debian GNU/Linux" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +catchsegv \- Catch segmentation faults in programs +.SH "SYNOPSIS" +\fBcatchsegv\fR \fBprogram\fR [\fBargs\fR] +.SH "DESCRIPTION" +Used to debug segmentation faults in programs. The output is the +content of registers, plus a backtrace. Basically you call your +program and its arguments as the arguments to catchsegv. +.SH "AUTHOR" +\fIcatchsegv\fR was written by Ulrich Drepper for the GNU C Library +.PP +This man page was written by Ben Collins for +the Debian GNU/Linux system. + +.rn }` '' +.IX Title "CATCHSEGV 1" +.IX Name "catchsegv - Catch segmentation faults in programs" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/mtrace.1 +++ eglibc-2.13/debian/local/manpages/mtrace.1 @@ -0,0 +1,228 @@ +.rn '' }` +.\" $RCSfile: mtrace.1,v $$Revision: 1.1 $$Date: 2008-08-08 21:49:44 +0200 (ven. 08 août 2008) $ +.\" +.\" $Log: mtrace.1,v $ +.\" Revision 1.1 2003/11/03 17:37:27 jbailey +.\" - debian/local/manpages/gencat.1: New file. +.\" - debian/local/manpages/trace.1: New file. +.\" - debian/debhelper.in/libc-dev.manpages: Install them. +.\" - debian/local/manpages/iconvconfig.8: New file. +.\" - debian/debhelper.in/libc.manpages: Install it. +.\" +.\" Revision 1.1.2.2 2003/10/28 05:48:08 dan +.\" - Re-add debian/patches/80_glibc232-locales-nb_NO-fix.dpatch, which had +.\" gotten lost. +.\" - Re-add typo fixes to iconv.1 and rpcgen.1. +.\" - Merge iconv.1 fix to iconv.pod. +.\" - Fix ld.so name in ld.so.8. +.\" - Re-add fix for locale-gen and POSIXLY_CORRECT. +.\" +.\" +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +.\" +.\" +.\" Set up \*(-- to give an unbreakable dash; +.\" string Tr holds user defined translation string. +.\" Bell System Logo is used as a dummy character. +.\" +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of +.\" \*(L" and \*(R", except that they are used on ".xx" lines, +.\" such as .IP and .SH, which do another additional levels of +.\" double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaningful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH MTRACE 1 "November 2003" "mtrace (glibc)" "Debian" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +mtrace \- Interpret output from MALLOC_TRACE +.SH "SYNOPSIS" +mtrace [OPTION]... [Binary] MtraceData +.SH "DESCRIPTION" +The \fBmtrace\fR interprets the output from when the MALLOC_TRACE +environment variable is set. +.SH "AUTHOR" +\fImtrace\fR was written by Ulrich Drepper as part of the GNU C Library. +.PP +This man page was written by Jeff Bailey . + +.rn }` '' +.IX Title "MTRACE 1" +.IX Name "mtrace \- Interpret output from MALLOC_TRACE" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "AUTHOR" + --- eglibc-2.13.orig/debian/local/manpages/es/validlocale.es.8 +++ eglibc-2.13/debian/local/manpages/es/validlocale.es.8 @@ -0,0 +1,54 @@ +.\" This file was generated with po4a. Translate the source file. +.\" +.TH validlocale 8 0.1 "Petter Reinholdtsen" "" +.SH NOMBRE +.LP +validlocale \- Comprueba si la opción de localización dada está disponible +.SH SINTAXIS +.LP +validlocale <\fIopción_de_localización\fP> +.SH DESCRIPCIÓN +.LP +Comprueba si la opción de localización dada como argumento es válida. Si no +lo es muestra en la stdout (salida estándar) la cadena de caracteres que se +necesita añadir a /etc/locale.gen para que locale\-gen genere esa opción de +localización (si es que existe). +.SH FICHEROS +.LP +\fI/usr/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "VARIABLES DE ENTORNO" +.LP +.TP +\fBDEFAULTCHARSET\fP +El juego de caracteres que asume en caso de que la opción de localización +dada no esté entre la lista de opciones de localización soportadas. +.SH EJEMPLOS +.LP +Si usted proporciona una opción de localización válida como parámetro, +muestra una cadena de caracteres especificándolo en stderr (salida de +errores estándar): +.LP +.IP +% validlocale C +.br +locale 'C' valid and available +.LP +Cuando se proporcione una inválida (no ha sido generada o no existe), +muestra una cadena de caracteres en stderr diciendo que es inválida, y otra +a stdout con la cadena de caracteres que se necesita añadir a +/etc/locale.gen para que se genere: +.LP +.IP +% validlocale de_AU@euro +.br +locale 'de_AT@euro' not available +.br +de_AT@euro ISO\-8859\-15 +.SH AUTORES +.LP +Petter Reinholdtsen +.SH "VÉASE ADEMÁS" +.LP +locale\-gen(8), localedef(1), locale(1) --- eglibc-2.13.orig/debian/local/manpages/es/addendum.es +++ eglibc-2.13/debian/local/manpages/es/addendum.es @@ -0,0 +1,3 @@ + +.SH TRADUCTOR +Traducción de Rubén Porras Campo --- eglibc-2.13.orig/debian/local/manpages/fr/validlocale.fr.8 +++ eglibc-2.13/debian/local/manpages/fr/validlocale.fr.8 @@ -0,0 +1,57 @@ +.\" This file was generated with po4a. Translate the source file. +.\" +.TH validlocale 8 0.1 "Petter Reinholdtsen" "" +.SH NOM +.LP +validlocale \- vérifie si un ensemble donné de paramètres régionaux est +disponible +.SH SYNTAXE +.LP +validlocale <\fIlocale\fP> +.SH DESCRIPTION +.LP +Teste si l'ensemble de paramètres régionaux donné en argument est +valable. S'il ne l'est pas, affiche sur la sortie standard la chaîne de +caractères à ajouter à /etc/locale.gen afin de permettre à locale\-gen de +générer l'ensemble de paramètres (s'il existe). +.SH FICHIERS +.LP +\fI/us/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "VARIABLES D'ENVIRONNEMENT" +.LP +.TP +\fBDEFAULTCHARSET\fP +Indique quel encodage de caractères doit être supposé si la locale donnée +n'est pas dans la liste des locales gérées. +.SH EXEMPLES +.LP +Si vous indiquez comme paramètre une locale valabe, vous recevrez ceci sur +la sortie d'erreur +.LP +.IP +% validlocale C +.br +locale «\ C\ » valide et disponible +.LP +Lorsqu'une locale non valable (non créée ou inexistante) est indiquée, vous +recevrez un message sur la sortie d'erreur disant qu'il s'agit d'une locale +non valable et une chaîne de caractères sur la sortie standard à ajouter à +/etc/locale.gen pour que la locale soit créée\ : +.LP +.IP +% validlocale de_AU@euro +.br +locale «\ de_AT@euro\ » non disponible +.br +de_AT@euro ISO\-8859\-15 +.SH AUTEURS +.LP +Petter·Reinholdtsen· + +.SH "TRADUCTION" +Clément Stenac, 2005. Veuillez signaler toute erreur à +.SH "VOIR AUSSI" +.LP +locale\-gen(8), localedef(1), locale(1) --- eglibc-2.13.orig/debian/local/manpages/fr/addendum.fr +++ eglibc-2.13/debian/local/manpages/fr/addendum.fr @@ -0,0 +1,4 @@ +PO4A-HEADER:mode=after;position=AUTEUR;beginboundary=\.SH + +.SH "TRADUCTION" +Clément Stenac, 2005. Veuillez signaler toute erreur à --- eglibc-2.13.orig/debian/local/manpages/po/man.pot +++ eglibc-2.13/debian/local/manpages/po/man.pot @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "" + +# type: Plain text +#: validlocale.8:49 +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "" --- eglibc-2.13.orig/debian/local/manpages/po/pt_BR.po +++ eglibc-2.13/debian/local/manpages/po/pt_BR.po @@ -0,0 +1,503 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) 2005 Free Software Foundation, Inc. +# Brazilian , 2005. +# , fuzzy +# +# +msgid "" +msgstr "" +"Project-Id-Version: base-config man\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-10-24 21:25-0200\n" +"Last-Translator: Brazilian \n" +"Language-Team: Brazilian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NOME" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "validlocale - Testa se uma dada locale está disponível" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SINTAXE" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "DESCRIÇÃO" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Testa se a locale passada como argumento é válida. Se não for, imprime em " +"stdout o texto a ser adicionado em /etc/locale.gen para fazer locale-gen " +"gerar a locale (se ela existir)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "ARQUIVOS" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIÁVEIS DE AMBIENTE" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"Qual conjunto de caracteres assumir se a locale dada estiver faltando na " +"lista de locales suportadas." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "EXEMPLOS" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Se você der uma locale válida como parâmetro, a saída será um texto " +"especificando isto em stderr:" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale·'C'·é válida e está disponível" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Quando é dado uma inválida (não gerada ou não existente), a saída será um " +"texto em stderr dizendo que a locale é inválida, e um texto para stdout que " +"deve ser adicionado a /etc/locale.gen para ter esta locale gerada:" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' não está disponível" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTORES" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "VEJA TAMBÉM" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Configuração do sistema base Debian" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SINOPSE" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B é o programa que foi executado quando você reiniciou a " +#~ "primeira vez em seu novo sistema debian instalado. Ele o guia através das " +#~ "configurações de seu sistema e baixando softwares adicionais, indo além. " +#~ "O programa pode ser executado posteriormente a qualquer momento para guiá-" +#~ "lo essencialmente através do mesmo processo novamente." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTAÇÂO" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B gera um menu de opções a partir do conteúdo de B, e dos modelos debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Os arquivos .mnu em /usr/lib/base-config/ controlam quando um item de " +#~ "menu aparece apenas em novas instalações (Only-New: true), ou o debconf " +#~ "pode já estar sendo executado quando o item é executado (Debconf: true), " +#~ "um número Order controla a posição no menu. Se um arquivo .mnu contém " +#~ "\"Exit-Menu: true\", então base-config será terminado após executar esse " +#~ "item do menu. Finalmente a linha \"Changes-Menu: true\" fará com que " +#~ "base-config reconstrua o menu após executar este item." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Os arquivos .tst em /usr/lib/base-config/ são executados quando base-" +#~ "config constrói o menu e devem retornar verdadeiro para que apareçam no " +#~ "menu." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Os itens do menu são pegos do debconf olhando para itens na base de dados " +#~ "do debconf chamada de base-config/menu/qualquercoisa" + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Quando um item do menu é selecionado, o programa correspondente, em /usr/" +#~ "lib/base-config é executado. Se esta é uma instalação novo em um novo " +#~ "sistema debian, o programa recebe \"new\" como seu primeiro argumento." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B checa os códigos de retorno de cada um dos programas. Se " +#~ "um programa retorna não-zero, o menu principal é exibido (isso pode " +#~ "envolver diminuir a prioridade do debconf)." + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Geralmente o usuário avança descendo o menu item a item à medida que cada " +#~ "um é completado com sucesso. Se um item do menu precisa voltar para um " +#~ "item anterior ou pular algum item subseqüente, ele pode escrever o nome " +#~ "do próximo item do menu para mostrar ao arquivo \"jump-to\" no diretório " +#~ "atual." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B
. B
contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Cada execução do base-config é registrada em B
. B
contém as informações de tempo que " +#~ "vão juntamente com o registro. Isso permite repetições da execução do " +#~ "base-config usando o utilitário B(1)." + +# type: Plain text +#~ msgid "" +#~ "B
, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "B
, se o arquivo existe, é usado pelo B em novas instalações para obter valores do primeiroestágio de " +#~ "instalação do debian-installer." + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Outros pacotes podem colocar arquivos em B, e " +#~ "adicionar títulos de menu no debconf, que serão adicionados ao menu. É " +#~ "fortemente encorajado que qualquer programa desses comunique-se com o " +#~ "usuário inteiramente via debconf, de forma que a configuração da base " +#~ "mantenha a consistência e o visual profissional." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Outra coisa útil para distribuições customizadas é /usr/share/base-config/" +#~ "debconf-seed. Se esse diretório existir, cada arquivo nele será carregado " +#~ "no banco de dados do debconf usando B(1)" + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Se o arquivo /var/log/installer/debconf-seed é criado pelo debian-" +#~ "installer, ele também será carregado no banco de dados do debconf." + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "AMBIENTE" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "As seguintes variáveis de ambiente influenciam B. Essas " +#~ "variáveis podem ser definidas em tempo de execução, ou para novas " +#~ "instalações, podem ser passadas ao kernel na linha de comando do B" +#~ "(8) (ou outro gerenciador de boot). Consulte a documentação do seu " +#~ "gerenciador de boot para detalhes. Por exemplo, lilo pode ser bootado com " +#~ "algo como: \"linux DEBIAN_FRONTEND=readline\"." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Controla várias coisas sobre o B(7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - wrapper de terminal" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B é usado para executar B(8) em novos sistemas " +#~ "Debian instalados. Ele examina o ambiente, tomando nota das configurações " +#~ "de localização, qual tipo de console está disponível e executa um " +#~ "programa de terminal apropriado. Por exemplo, no console Linux e em uma " +#~ "localização Japonesa, ele executa jfterm. O comando especificado é " +#~ "executado dentro do programa de terminal (caso exista algum)." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPÇÕES" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "Não execute outro terminal." + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - adiciona fontes de download para o apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B é um programa interativo que simplifica a adição de fontes " +#~ "no arquivo sources.list do apt. Ele conhece todos os principais espelhos " +#~ "(mirrors) debian e pode ajudá-lo a selecionar um. Pode até mesmo usar o " +#~ "B(8) para vasculhar CDs." + +# type: TP +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Por padrão nenhuma consulta de CDs é feita. Passar \"probe\" como o " +#~ "primeiro argumento para este programa fará com que o mesmo procure por um " +#~ "CD no drive em sua inicialização e adicione-o ao sources.list. Isto é " +#~ "útil em instalações iniciais do debian para minimizar a interação com o " +#~ "usuário." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Indica que esta é uma nova instalação. Este parâmetro permite ao apt-" +#~ "setup executar no modo não-interativo se suas perguntas do debconf foram " +#~ "previamente respondidas." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#, fuzzy +#~ msgid "TZSETUP" +#~ msgstr "APT-SETUP" + +# type: SH +#, fuzzy +#~ msgid "DERIVATION" +#~ msgstr "DESCRIÇÃO" --- eglibc-2.13.orig/debian/local/manpages/po/pl.po +++ eglibc-2.13/debian/local/manpages/po/pl.po @@ -0,0 +1,490 @@ +msgid "" +msgstr "" +"Project-Id-Version: base-config\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-10-23 21:50+0200\n" +"Last-Translator: Robert Luberda \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NAZWA" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "validlocale - Sprawdza, czy dostêpne jest dane locale" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SK£ADNIA" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "OPIS" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Sprawdza, czy locale podane jako argument jest poprawne. Je¶li nie jest, " +"wypisuje na stdout napis, jaki nale¿y dodaæ do /etc/locale.gen, aby " +"polecenie locale-gen wygenerowa³o dane locale (o ile w ogóle ono istnieje)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "PLIKI" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "ZMIENNE ¦RODOWISKOWE" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"Jakiego zestawu znaków u¿yæ, je¶li podanego locale nie ma w li¶cie " +"obs³ugiwanych." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "PRZYK£ADY" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Je¶li jako parametr podano nazwê poprawnego locale, wypisuje na stderr " +"odpowiedni napis:" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale 'C' valid and available" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Je¶li podano nazwê nieprawid³owego locale (niewygenerowanego lub po prostu " +"nieistniej±cego), wypisuje na stderr napis mówi±cy o tym, ¿e nie jest to " +"prawid³owe locale, oraz - na stdout - napis, który nale¿y dodaæ do /etc/" +"locale.gen, aby móc wygenerowaæ dane locale:" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' not available" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTOR" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "PATRZ TAK¯E" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - konfiguracja podstawowego systemu Debian" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SK£ADNIA" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B to program uruchamiany po pierwszym starcie nowo " +#~ "zainstalowanego systemu Debian. Prowadzi on u¿ytkownika przez " +#~ "konfiguracjê systemu, pobieranie dodatkowego oprogramowania i tak dalej. " +#~ "Program ten mo¿na uruchomiæ w dowolnym momencie, aby przej¶æ przez ten " +#~ "proces ponownie." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTACJA" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B generuje menu z list± wyborów na podstawie zawarto¶ci " +#~ "katalogu B oraz z szablonów programu debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Pliki .mnu w /usr/lib/base-config/ okre¶laj±, czy dana pozycja z menu " +#~ "pojawia siê tylko w nowo instalowanych systemach (Only-New: true), czy " +#~ "debconf mo¿e ju¿ dzia³aæ, kiedy pozycja z menu jest uruchamiana (Debconf: " +#~ "true), a liczbowy \"Order\" okre¶la pozycjê w menu. Je¿eli plik .mnu " +#~ "zawiera \"Exit-Menu: true\", to base-config zakoñczy dzia³anie po " +#~ "uruchomieniu tej pozycji. W koñcu, linia \"Changes-Menu: true\" powoduje, " +#~ "¿e base-config przebuduje menu po uruchomieniu tej pozycji." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Podczas budowania menu base-config uruchamia pliki .tst z katalogu /usr/" +#~ "lib/base-config, które musz± zwróciæ warto¶æ true, aby dana pozycja " +#~ "pojawi³a siê w menu." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Pozycje menu s± brane z programu debconf, przez wyszukiwanie w bazie " +#~ "danych debconfa rekordów o nazwie base-config/menu/cokolwiek." + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Po wybraniu pozycji w menu uruchamiany jest odpowiadaj±cy jej program z " +#~ "katalogu /usr/lib/base-config. Je¶li jest to pierwsze uruchomienie po " +#~ "zainstalowaniu systemu, ka¿dy program otrzymuje jako pierwszy argument " +#~ "wyraz \"new\"." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B sprawdza kod zakoñczenia ka¿dego programu. Je¿eli program " +#~ "zwróci warto¶æ niezerow±, to zostanie wy¶wietlone g³ówne menu (mo¿e to " +#~ "wymagaæ zmniejszenia priorytetu debconfa)." + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Ogólnie rzecz bior±c, u¿ytkownik jest przenoszony w dó³ menu od jednej " +#~ "pozycji do nastêpnej. Je¿eli pozycja z menu potrzebuje wróciæ do " +#~ "poprzedniej pozycji menu lub przeskoczyæ pó¼niejsz± pozycjê, to mo¿e do " +#~ "pliku \"jump-to\" umieszczonego w bie¿±cym katalogu wpisaæ nazwê " +#~ "nastêpnej pozycji do pokazania w menu." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B
. B
contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Ka¿de uruchomienie programu base-config jest zapisywane w B
. B
zawiera informacje o czasie " +#~ "wykonywania poszczególnych poleceñ. Pozwala to na powtórzenie uruchomieñ " +#~ "base-config za pomoc± programiku B(1)." + +# type: Plain text +#~ msgid "" +#~ "B
, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "Podczas nowych instalacji B u¿ywa B
, je¿eli istnieje, do pobrania warto¶ci pierwszego etapu " +#~ "instalacji przez program debian-installer." + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Pakiety mog± instalowaæ programy w katalogu B, " +#~ "dziêki czemu stan± siê one czê¶ci± procesu konfiguracji. Zaleca siê, aby " +#~ "programy te komunikowa³y siê z u¿ytkownikiem wy³±cznie przy pomocy " +#~ "programu debconf, dziêki czemu konfiguracja systemu podstawowego uzyska " +#~ "jednolity i profesjonalny wygl±d." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Kolejn± u¿yteczn± rzecz± dla w³asnych dystrybucji jest /usr/share/base-" +#~ "config/debconf-seed. Je¿eli ten katalog istnieje, to ka¿dy plik w tym " +#~ "katalogu zostanie za³adowany do bazy danych debconfa za pomoc± B(1)." + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Je¿eli plik /var/log/installer/debconf-seed zostanie utworzony przez " +#~ "instalator Debiana, to tak¿e zostanie za³adowany do bazy danych debconfa." + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "ZMIENNE ¦RODOWISKOWE" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "Nastêpuj±ce zmienne ¶rodowiskowe wp³ywaj± na dzia³anie B. " +#~ "Mo¿na je ustawiæ przy uruchomieniu programu lub (w przypadku instalacji " +#~ "nowego systemu) mo¿na je podaæ j±dru przy pomocy linii poleceñ B(8) " +#~ "(lub innego programu ³aduj±cego). Wiêcej informacji na temat " +#~ "przekazywania parametrów j±dru mo¿na znale¼æ w dokumentacji danego " +#~ "programu ³aduj±cego. W przypadku lilo mo¿na za³adowaæ system na przyk³ad " +#~ "w nastêpuj±cy sposób: \"linux DEBIAN_FRONTEND=readline\"." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Wp³ywaj± na dzia³anie systemu B(7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoeyh@debian.orgE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - program po¶rednicz±cy terminala" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B jest u¿ywany do wywo³ania B(8) w nowo " +#~ "instalowanych systemach Debian. Sprawdza on ¶rodowisko, zwracaj±c uwagê " +#~ "na ustawienia locale i typ dostêpnej konsoli, a nastêpnie uruchamia " +#~ "odpowiedni program terminala. Na przyk³ad na konsoli Linux przy locale " +#~ "japoñskim uruchamia program jfterm. Podana komenda jest wykonywana w " +#~ "uruchomionym terminalu." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPCJE" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "Nie uruchamiaj innego terminala." + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - dodaje nowe ¼ród³a pakietów dla apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B to interaktywny program u³atwiaj±cy dodawanie ¼róde³ " +#~ "pakietów do pliku sources.list programu apt. Zna on wszystkie g³ówne " +#~ "serwery lustrzane Debiana i mo¿e pomóc wybraæ jeden z nich. Mo¿e nawet " +#~ "u¿yæ programu B(8) do przeszukiwania p³yt CD." + +# type: TP +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Domy¶lnie nie jest sprawdzana obecno¶æ p³yty CD. Je¶li jako pierwszy " +#~ "argument zostanie podany wyraz \"probe\", program przeszuka p³ytê CD " +#~ "znajduj±c± siê w napêdzie i doda j± do pliku sources.list. Jest to " +#~ "przydatne przy instalacji systemu, gdy¿ pozwala na ograniczenie " +#~ "koniecznych dzia³añ u¿ytkownika." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Wskazuje, ¿e jest to nowa instalacja. Ten parametr pozwala programowi apt-" +#~ "setup uruchomiæ siê w trybie nieinteraktywnym, je¿eli wcze¶niej zosta³y " +#~ "wpisane odpowiedzi na jego pytania debconfa." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" --- eglibc-2.13.orig/debian/local/manpages/po/fr.po +++ eglibc-2.13/debian/local/manpages/po/fr.po @@ -0,0 +1,505 @@ +# fr.po for base-config manpage +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Previous translator : +# Antoine Gémis . +# +msgid "" +msgstr "" +"Project-Id-Version: base-config\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-07-27 19:36+0200\n" +"Last-Translator: Clément Stenac \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NOM" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" +"validlocale - vérifie si un ensemble donné de paramètres régionaux est " +"disponible" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SYNTAXE" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "DESCRIPTION" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Teste si l'ensemble de paramètres régionaux donné en argument est valable. " +"S'il ne l'est pas, affiche sur la sortie standard la chaîne de caractères à " +"ajouter à /etc/locale.gen afin de permettre à locale-gen de générer " +"l'ensemble de paramètres (s'il existe)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "FICHIERS" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIABLES D'ENVIRONNEMENT" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"Indique quel encodage de caractères doit être supposé si la locale donnée " +"n'est pas dans la liste des locales gérées." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "EXEMPLES" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Si vous indiquez comme paramètre une locale valabe, vous recevrez ceci sur " +"la sortie d'erreur " + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale « C » valide et disponible" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Lorsqu'une locale non valable (non créée ou inexistante) est indiquée, vous " +"recevrez un message sur la sortie d'erreur disant qu'il s'agit d'une locale " +"non valable et une chaîne de caractères sur la sortie standard à ajouter à /" +"etc/locale.gen pour que la locale soit créée :" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale « de_AT@euro » non disponible" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTEURS" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter·Reinholdtsen·Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "VOIR AUSSI" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8),·localedef(1),·locale(1),·base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Configuration du système Debian de base" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SYNOPSIS" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B est le programme lancé lors du premier redémarrage d'un " +#~ "nouveau système Debian. Il vous guide pas à pas dans la configuration du " +#~ "système, l'installation de nouveaux programmes, etc. Vous pourrez lancer " +#~ "à nouveau ce programme plus tard si vous désirez modifier la " +#~ "configuration de votre système." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLÉMENTATION" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B génère un menu de choix à partir du contenu de B et depuis les modèles debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Les fichiers .mnu dans /usr/lib/base-config/ permettent de spécifier si " +#~ "un élément de menu ne doit apparaître que pour les nouvelles " +#~ "installations (Only-New:true), si Debconf doit déjà fonctionner lors du " +#~ "lancement de l'élément (Debconf: true), et un champ numérique contrôle la " +#~ "position dans le menu. Si un fichier .mnu contient « Exit-Menu: true », " +#~ "base-config se terminera après l'exécution de cet élément. Enfin, une " +#~ "ligne « Changes-Menu: true » fera que base-config reconstruira le menu " +#~ "après l'exécution de l'élément." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Les fichiers .tst dans /usr/lib/base-config/ sont lancés lorsque base-" +#~ "config construit le menu et doivent renvoyer un résultat nul pour que cet " +#~ "élément apparaisse dans le menu." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Les éléments du menu sont tirés de Debconf, en cherchant les éléments " +#~ "dans la base de données de Debconf appelés base-config/menu/quelque_chose" + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Lorsqu'un élément du menu est sélectionné, le programme correspondant " +#~ "dans /usr/lib/base-config est exécuté. S'il s'agit d'une installation sur " +#~ "un nouveau système, le programme reçoit « new » en tant que premier " +#~ "argument." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B vérifie les codes de retour des programmes. Si un " +#~ "programme retourne une valeur non nulle, le menu principal sera affiché " +#~ "(ceci peut conduire à une diminution de la priorité Debconf)" + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Généralement, au fur et à mesure que les éléments se terminent avec " +#~ "succès, les éléments suivants du menu sont présélectionnés. Si un élément " +#~ "a besoin d'un retour à un élément précédent du menu, ou d'un saut à un " +#~ "autre élément, il peut écrire le nom de l'élément à présélectionner " +#~ "ensuite dans le fichier « jump-to » du répertoire courant." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B
. B
contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Chaque exécution de base-config est consignée dans B
. Les informations temporelles du journal sont consignées dans B
, ceci permet de relancer base-config en utilisant " +#~ "B(1)B<.>" + +# type: Plain text +#~ msgid "" +#~ "B
, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "Le fichier B
, s'il existe, est " +#~ "utilisé par B pendant les nouvelles installations pour " +#~ "obtenir les valeurs produites par la première étape de debian-installer" + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "D'autres paquets peuvent insérer des programmes dans B et ajouter des éléments de menu à debconf ; ils seront alors " +#~ "ajoutés au menu. Afin de conserver l'homogénéité et l'aspect " +#~ "professionnel du processus d'installation, il est fortement conseillé que " +#~ "la communication entre ces paquets et l'utilisateur se fasse " +#~ "exclusivement par debconf." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Un autre répertoire intéressant pour les distributions personnalisées " +#~ "est /usr/share/base-config/debconf-seed. Si ce répertoire existe, tout " +#~ "son contenu sera chargé dans la base de données debconf à l'aide de " +#~ "B(1)" + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Si le fichier /var/log/debian-installer/debconf-seed·est créé par " +#~ "l'installateur Debian, il sera également chargé dans la base de données " +#~ "debconf" + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "ENVIRONNEMENT" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "base-config tient compte des variables d'environnement suivantes. Ces " +#~ "variables peuvent être définies dynamiquement, pendant l'installation, ou " +#~ "bien encore passées en paramètre au noyau sur la ligne de commande de " +#~ "B(8) (ou d'un autre chargeur de démarrage). Consultez la " +#~ "documentation de votre chargeur de démarrage pour plus d'informations. " +#~ "Par exemple, lilo peut être lancé avec un paramètre tel que « linux " +#~ "DEBIAN_FRONTEND=readline »." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Contrôle de nombreux aspects de (7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTEUR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@debian.orgE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - encapsulateur de terminal" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B est utilisé pour exécuter B (8) sur un système " +#~ "Debian nouvellement installé. Il examine l'environnement, prenant en " +#~ "compte les réglages de paramètres locaux et le type de console " +#~ "disponible, et lance un programme de terminal adéquat. Par exemple, pour " +#~ "une console Linux et des paramètres locaux japonais, il lancera jfterm. " +#~ "La commande indiquée est alors lancée dans le programme de terminal, s'il " +#~ "y en a un." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPTIONS" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "Ne pas lancer d'autre terminal" + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - permet d'ajouter des sources de téléchargement apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B est un programme interactif simplifiant l'ajout de sources " +#~ "au fichier sources.list. Il connaît tous les principaux miroirs Debian et " +#~ "peut vous aider à en choisir un. Il peut même utiliser B(8) " +#~ "pour parcourir des cédéroms." + +# type: TP +#~ msgid "I" +#~ msgstr "I<« probe »>" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Par défaut, aucune détection des CD n'est faite. Si vous passez « probe » " +#~ "comme premier argument à ce programme, il effectuera une détection du CD " +#~ "dans le lecteur au démarrage et l'ajoutera au sources.list. Ceci est " +#~ "utile lors des installations initiales de Debian, afin de minimiser " +#~ "l'interaction avec l'utilisateur." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Indique qu'il s'agit d'une nouvelle installation. Ce paramètre permet à " +#~ "apt-setup de fonctionner en mode non-interactif si les réponses à ses " +#~ "questions debconf ont été préchargées." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" --- eglibc-2.13.orig/debian/local/manpages/po/es.po +++ eglibc-2.13/debian/local/manpages/po/es.po @@ -0,0 +1,672 @@ +msgid "" +msgstr "" +"Project-Id-Version: 2.74\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-11-30 18:58+0100\n" +"Last-Translator: Rubén Porras \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NOMBRE" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" +"validlocale - Comprueba si la opción de localización dada está disponible" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "SINTAXIS" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "DESCRIPCIÓN" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Comprueba si la opción de localización dada como argumento es válida. Si no " +"lo es muestra en la stdout (salida estándar) la cadena de caracteres que se " +"necesita añadir a /etc/locale.gen para que locale-gen genere esa opción de " +"localización (si es que existe)." + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "FICHEROS" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIABLES DE ENTORNO" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"El juego de caracteres que asume en caso de que la opción de localización " +"dada no esté entre la lista de opciones de localización soportadas." + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "EJEMPLOS" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Si usted proporciona una opción de localización válida como parámetro, " +"muestra una cadena de caracteres especificándolo en stderr (salida de " +"errores estándar):" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "locale 'C' valid and available" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Cuando se proporcione una inválida (no ha sido generada o no existe), " +"muestra una cadena de caracteres en stderr diciendo que es inválida, y otra " +"a stdout con la cadena de caracteres que se necesita añadir a /etc/locale." +"gen para que se genere:" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' not available" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTORES" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "VÉASE ADEMÁS" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - configuración del sistema base de Debian" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "SINOPSIS" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B es el programa que se ejecutó la primera vez que arrancó " +#~ "en su sistema Debian recién instalado. base-config termina de configurar " +#~ "el sistema, descarga programas adicionales... El programa puede " +#~ "ejecutarse en cualquier momento posterior para realizar el mismo proceso " +#~ "de nuevo." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTACIÓN" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B genera un menú de elecciones con los contenidos de B, y de las plantillas de debconf." + +# type: Plain text +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Los ficheros .mnu de /usr/lib/base-config/ controlan si el elemento del " +#~ "menú aparece sólo en nuevas instalaciones (\"Only-New: true\"), si " +#~ "debconf puede estar siendo ejecutado en el momento en el que se ejecute " +#~ "el elemento (Debconf: true). Una opción numérica \"Order\" controla el " +#~ "lugar en el menú. Si el fichero .mnu contiene \"Exit-Menu:true\", base-" +#~ "config terminará después de ejectuar ese elemento del menú. Finalmente, " +#~ "una línea \"Changes-Menu: true\" hará que base-config reconstruya el menú " +#~ "después de ejecutar el elemento del menú." + +# type: Plain text +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Los ficheros .tst de /usr/lib/base-config/ se ejecutan cuando base-config " +#~ "construye el menú y debe devolver \"true\" para que ese elemento aparezca " +#~ "en el menú." + +# type: Plain text +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Los elementos del menú se toman de debconf, buscando los elementos en la " +#~ "base de datos de debconf llamada base-config/menu/loquesea." + +# type: Plain text +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Cuando se selecciona elemento del menú, se ejecuta el programa " +#~ "correspondiente en /usr/lib/base-config. Si ésta es la primera " +#~ "instalación en un sistema muevo, entonces el programa recibe \"new\" como " +#~ "su primer argumento." + +# type: Plain text +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B comprueba los valores devueltos por cada programa. Si un " +#~ "programa devuelve un valor distinto de cero, se muestra el menú principal " +#~ "(puede que esto implique bajar la prioridad de debconf)." + +# type: Plain text +#~ msgid "" +#~ "Generally the user is advanced down the menu from item to item as each " +#~ "succeeds. If a menu item needs to jump back to a previous item in the " +#~ "menu, or skip over a subsequent item, it can write the name of the next " +#~ "menu item to show to the file \"jump-to\" in the current directory." +#~ msgstr "" +#~ "Normalmente el usuario es guiado de arriba abajo de un elemento del menú " +#~ "en otro a medida que cada uno de ellos se completa con éxito. Si un " +#~ "elemento del menú necesita volver a otro anterior o saltar alguno de los " +#~ "posteriores, puede hacerlo escribiendo el nombre del siguiente elemento " +#~ "del menú al que saltar en el fichero \"jump-to\" en el directorio actual." + +# type: Plain text +#~ msgid "" +#~ "Every base-config run is logged to B
. B
contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Cualquier ejecución de base-config se registra en B
. B
contiene información de los " +#~ "tiempos que van con el registro. Esto permite volver a ver la ejecución " +#~ "de base-config usando la utilidad B(1)B<.>" + +# type: Plain text +#~ msgid "" +#~ "B
, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "Si existe B, B lo usa en nuevas " +#~ "instalaciones para obtener valores de la primera etapa de instalación del " +#~ "\"debian-installer\"." + +# type: Plain text +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Otros paquetes pueden dejar ficheros en B, y " +#~ "añadir títulos de menú en debconf, y serán añadidos al menú. Es altamente " +#~ "recomendable que cualquiera de estos programas se comunique con el " +#~ "usuario totalmente a través de debconf, de esta forma, la configuración " +#~ "mantiene un aspecto consistente y profesional." + +# type: Plain text +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Otra cosa útil para las distribuciones personalizadas es /usr/share/base-" +#~ "config/debconf-seed. Si ese directorio existe, todos los ficheros dentro " +#~ "de él se cargarán en la base de datos de debconf usando B(1)" + +# type: Plain text +#~ msgid "" +#~ "If the file /var/log/installer/debconf-seed is created by the debian-" +#~ "installer, it will also be loaded into the debconf database." +#~ msgstr "" +#~ "Si debian-installer crea el fichero /var/log/installer/debconf-seed, " +#~ "también se incorporará a la base de datos de debconf." + +# type: SH +#~ msgid "ENVIRONMENT" +#~ msgstr "ENTORNO" + +# type: Plain text +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "Las siguientes variables de entorno influencian a B. Estas " +#~ "variables pueden establecerse en tiempo de ejecución, o para nuevas " +#~ "instalaciones, puede pasarse al núcleo en la línea de órdenes de B" +#~ "(8) (u otro gestor de arranque). Consulte la documentación de su gestor " +#~ "de arranque para más detalles. Por ejemplo, lilo puede arrancarse con " +#~ "algo como \"linux DEBIAN_FRONTEND=readline\"." + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "Control various things about B(7)" +#~ msgstr "Controlan varias cosas de B(7)" + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@debian.orgE" + +# type: TH +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - envuelve un terminal" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B se usa para ejecutar B(8) en sistemas Debian " +#~ "recién instalados. Examina el entorno, toma nota de la configuración de " +#~ "las opciones de localización y de que tipo de terminal está disponible, " +#~ "para luego ejecutar un programa de terminal apropiado. Por ejemplo, en " +#~ "una consola de Linux con configuración de localización japonesa ejecutará " +#~ "jfterm. La orden especificada se ejecuta dentro del programa de terminal " +#~ "(si hay alguno)." + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPCIONES" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#~ msgid "Don't run another terminal." +#~ msgstr "No ejecutar otro terminal." + +# type: TH +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - añade fuentes para las descargas de apt" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B es un programa interactivo que simplifica el proceso de " +#~ "añadir fuentes al sources.list de apt. Conoce las principales réplicas " +#~ "Debian y puede ayudarle a seleccionar una. Incluso puede usar B" +#~ "(8) para analizar CD's." + +# type: TP +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Por omisión no se busca ningún CD. Si se pasa \"probe\" como primer " +#~ "argumento el programa mirará al arrancar si hay un CD en la unidad y lo " +#~ "añadirá al sources.list. Esto es útil en instalaciones iniciales de " +#~ "Debian, para minimizar la interacción con el usuario." + +# type: TP +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#~ msgid "" +#~ "Indicates that this is a new install. This parameter allows apt-setup to " +#~ "run in noninteractive mode if its debconf questions have been preseeded." +#~ msgstr "" +#~ "Indica que es una nueva instalación. Este parámetro permite ejecutar apt-" +#~ "setup de forma no interactiva si los valores de debconf han sido " +#~ "preconfigurados." + +# type: Plain text +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#~ msgid "TZSETUP" +#~ msgstr "TZSETUP" + +# type: TH +#~ msgid "16 January 2004" +#~ msgstr "16 de enero de 2004" + +# type: TH +#~ msgid "Debian" +#~ msgstr "Debian" + +# type: TH +#~ msgid "Debian Timezone Configuration" +#~ msgstr "Configuración de zona horaria en Debian" + +# type: Plain text +#~ msgid "tzsetup - set the local timezone" +#~ msgstr "tzsetup - establece la zona horaria local" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "This manual page explains how you can use the B utility to set " +#~ "the local timezone. This is necessary to let your system know about the " +#~ "difference between system time and local time (the time in the real " +#~ "world). It is also necessary to make your system behave nicely when your " +#~ "location uses Daylight Savings Time." +#~ msgstr "" +#~ "Esta página del manual explica como puede usar la utilidad B " +#~ "para establecer la zona horaria local. Esto es importante para que su " +#~ "sistema sepa la diferencia entre el tiempo del sistema y el tiempo local " +#~ "(el tiempo del mundo real). También es necesario para que su sistema se " +#~ "comporte de forma adecuada cuando en su zona se realicen cambios horarios " +#~ "para aprovechar mejor la luz del día." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "A valid system time together with the correct local time zone will give " +#~ "you best performance and highest reliability. It is especially important " +#~ "in a network environment, where even small time differences can make a " +#~ "mirror refetch a whole ftp site, or where time stamps on external file " +#~ "systems are used." +#~ msgstr "" +#~ "Un tiempo del sistema válido junto con la zona horaria adecuada le dará " +#~ "mejores resultados y una mayor seguridad. Es especialmente importante en " +#~ "un entorno de red, donde incluso pequeñas diferencias de tiempo pueden " +#~ "hacer que una réplica vuelva a descargar todo un sitio ftp, o donde se " +#~ "usan marcas de tiempo en un sistema de ficheros externo." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is typically called without any parameters from the shell. " +#~ "Optionally, the -y parameter can be used, to make it always change your " +#~ "time zone without asking first. The -g parameter can also be used, to " +#~ "make it ask if the hardware clock is set to gmt or not. The -c parameter, " +#~ "followed by a country code, hints at the country the user's time zone may " +#~ "be in. The -N parameter allows it to run noninteractively if the debconf " +#~ "questions have been preseeded." +#~ msgstr "" +#~ "Normalmente se invoca B desde un shell sin parámetros. " +#~ "Opcionalmente, puede usarse la opción -y, para que siempre cambie la zona " +#~ "horaria sin preguntar primero. El parámetro -g puede también usarse, para " +#~ "que pregunte si el reloj físico del sistema está en hora GMT o no. El " +#~ "parámetro -c, seguido de un código de país, indica el país en el que " +#~ "posiblemente esté la zona horaria del usuario. El parámetro -N hace que " +#~ "se ejecute de forma no interactiva si ha sido preconfigurado." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "After you made your choice, B will try to change the timezone " +#~ "for you. See the B section below for technical details. You " +#~ "must have root privileges to actually change anything. Please use " +#~ "B(1) as a user space command to just look at the timezones. It " +#~ "will print the local time in any timezone recognized by the system." +#~ msgstr "" +#~ "Después de que realice su elección, B tratará de cambiar la zona " +#~ "horaria por usted. Lea la sección B de más abajo " +#~ "para los detalles técnicos. Debe de tener privilegios de superusuario " +#~ "para cambiar realmente cualquier configuración. Puede usar B" +#~ "(1) como una orden de usuario para simplemente mirar las zonas horarias " +#~ "reconocidas por el sistema. Mostrará la hora local y todas las zonas " +#~ "horarias reconocidas por el sistema." + +# type: SH +#~ msgid "A WORD OF WARNING" +#~ msgstr "UN AVISO" + +# type: Plain text +#~ msgid "" +#~ "What timezone is correct for your system? It depends on the geographical " +#~ "location of the machine. Getting the correct location is important, but " +#~ "the system must also know how your hardware clock is set. Most DOS based " +#~ "PCs set their hardware clock on Local Time, while most UNIX systems set " +#~ "their hardware clock to UTC." +#~ msgstr "" +#~ "¿Qué zona horaria es correcta para su sistema? Depende de la localización " +#~ "geográfica de la máquina. Obtener la localización correcta es importante, " +#~ "pero el sistema también necesita saber cómo funciona el reloj físico. La " +#~ "mayoría de los ordenadores personales basados en DOS establecen el reloj " +#~ "físico según el tiempo local, mientras que los sistemas UNIX lo " +#~ "establecen según UTC." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The Debian GNU/Linux system gains its knowledge of this setting from the " +#~ "file I. This file contains either the line B, " +#~ "which indicates that the hardware clock is set to UTC, or it contains the " +#~ "line B, which declares the hardware clock is set to Local Time. " +#~ "If these setting are correct, and the hardware clock is truly set as " +#~ "indicated, then configuring the proper timezone for the machine will " +#~ "cause the proper date and time to be displayed. If these are not set " +#~ "correctly, the the reported time will be quite incorrect. See B" +#~ "(8) for more details on this topic." +#~ msgstr "" +#~ "El sistema Debian GNU/Linux obtiene la configuración del fichero I. Este fichero contiene o bien la línea B, que " +#~ "indica que el reloj físico está en UTC, o bien la línea B, que " +#~ "indica que está en tiempo local. Si el reloj está de verdad como se " +#~ "indica, entonces configurar la zona horaria adecuada hará que se muestre " +#~ "la fecha y el tiempo correcto. En caso de no ser así, el tiempo mostrado " +#~ "podrá ser bastante incorrecto. Consulte B(8) para más detalles " +#~ "acerca de este tema." + +# type: SH +#~ msgid "INTERNALS" +#~ msgstr "FUNCIONAMIENTO INTERNO" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The work done by B is actually pretty simple. It just updates " +#~ "the link I to point to the correct timezone installed in " +#~ "I." +#~ msgstr "" +#~ "El trabajo hecho por B es realmente bastante sencillo. Sólo " +#~ "actualiza el enlace I para que apunte al la zona horaria " +#~ "correcta instalada en I." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "There is nothing wrong with doing this manually. However, using " +#~ "B you don't have to remember the path to the timezones." +#~ msgstr "" +#~ "No pasa nada malo si esto se realiza manualmente. Sin embargo, usando " +#~ "B no es necesario recordar donde se guardan las zonas horarias." + +# type: Plain text +#~ msgid "I I I" +#~ msgstr "I I I" + +# type: SH +#~ msgid "DERIVATION" +#~ msgstr "DERIVACIÓN" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "This program is based on B(8) -- the only major difference is " +#~ "that this program uses debconf for its user interface, and that it allows " +#~ "configuration of GMT." +#~ msgstr "" +#~ "Este programa se base en B(8) -- la mayor diferencia está en " +#~ "que éste usa debconf para la interfaz de usuario, y que además permite la " +#~ "configuración de GMT." + +# type: Plain text +#~ msgid "B(8) B(1) B(5) B(8)" +#~ msgstr "B(8) B(1) B(5) B(8)" --- eglibc-2.13.orig/debian/local/manpages/po/id.po +++ eglibc-2.13/debian/local/manpages/po/id.po @@ -0,0 +1,526 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: base-config man\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-11-11 16:50-0500\n" +"Last-Translator: Debian Indonesia Team \n" +"Language-Team: Debian Indonesia Team \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ascii\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, fuzzy, no-wrap +msgid "validlocale" +msgstr "validlocale" + +# type: TH +#: validlocale.8:1 +#, fuzzy, no-wrap +msgid "0.1" +msgstr "0.1" + +# type: TH +#: validlocale.8:1 +#, fuzzy, no-wrap +msgid "Petter Reinholdtsen" +msgstr "Petter Reinholdtsen" + +# type: SH +#: validlocale.8:2 +#, fuzzy, no-wrap +msgid "NAME" +msgstr "NAMA" + +# type: Plain text +#: validlocale.8:5 +#, fuzzy +msgid "validlocale - Test if a given locale is available" +msgstr "validlocale - memeriksa apakah lokal yang diberikan tersedia" + +# type: SH +#: validlocale.8:5 +#, fuzzy, no-wrap +msgid "SYNTAX" +msgstr "RINGKASAN" + +# type: Plain text +#: validlocale.8:8 +#, fuzzy +msgid "validlocale EIE" +msgstr "validlocale EIE" + +# type: SH +#: validlocale.8:8 +#, fuzzy, no-wrap +msgid "DESCRIPTION" +msgstr "PENJELASAN" + +# type: Plain text +#: validlocale.8:13 +#, fuzzy +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" +"Memeriksa apakah lokal yang diberikan sebagai argumen adalah lokal yang sah. " +"Jika tidak, akan dicetak pada stdout string yang dapat ditambahkan ke /etc/" +"locale.gen untuk membuat locale-gen meng-generate lokal tersebut (jika " +"tersedia)." + +# type: SH +#: validlocale.8:13 +#, fuzzy, no-wrap +msgid "FILES" +msgstr "BERKAS-BERKAS" + +# type: Plain text +#: validlocale.8:16 +#, fuzzy +msgid "I" +msgstr "I" + +# type: Plain text +#: validlocale.8:18 +#, fuzzy +msgid "I" +msgstr "I" + +# type: SH +#: validlocale.8:18 +#, fuzzy, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "VARIABEL-VARIABEL LINGKUNGAN" + +# type: TP +#: validlocale.8:20 +#, fuzzy, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: validlocale.8:24 +#, fuzzy +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" +"set karakter mana yang akan dipakai bila lokal yang diberikan tidak ada pada " +"daftar lokal yang didukung." + +# type: SH +#: validlocale.8:24 +#, fuzzy, no-wrap +msgid "EXAMPLES" +msgstr "CONTOH" + +# type: Plain text +#: validlocale.8:28 +#, fuzzy +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" +"Bila anda memberikan lokal yang sah pada parameter, program akan menuliskan " +"string yang memberitahukan hal ini pada stderr:" + +# type: Plain text +#: validlocale.8:31 +#, fuzzy +msgid "% validlocale C" +msgstr "% validlocale C" + +# type: Plain text +#: validlocale.8:33 +#, fuzzy +msgid "locale 'C' valid and available" +msgstr "locale 'C' valid and available" + +# type: Plain text +#: validlocale.8:37 +#, fuzzy +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" +"Ketika parameter yang diberikan tidak sah (tidak digenerate atau tidak " +"tersedia), program akan mencetak pada stderr string yang memberitahu bahwa " +"lokal tidak sah, dan string lain pada stdout, yang dapat ditambahkan pada /" +"etc/locale.gen agar lokal ini digenerate:" + +# type: Plain text +#: validlocale.8:40 +#, fuzzy +msgid "% validlocale de_AU@euro" +msgstr "% validlocale de_AU@euro" + +# type: Plain text +#: validlocale.8:42 +#, fuzzy +msgid "locale 'de_AT@euro' not available" +msgstr "locale 'de_AT@euro' not available" + +# type: Plain text +#: validlocale.8:44 +#, fuzzy +msgid "de_AT@euro ISO-8859-15" +msgstr "de_AT@euro ISO-8859-15" + +# type: SH +#: validlocale.8:44 +#, fuzzy, no-wrap +msgid "AUTHORS" +msgstr "PENULIS" + +# type: Plain text +#: validlocale.8:47 +#, fuzzy +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "Petter Reinholdtsen Epere@hungry.comE" + +# type: SH +#: validlocale.8:47 +#, fuzzy, no-wrap +msgid "SEE ALSO" +msgstr "LIHAT JUGA" + +# type: Plain text +#: validlocale.8:49 +#, fuzzy +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "locale-gen(8), localedef(1), locale(1), base-config(8)" + +# type: TH +#, fuzzy +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#, fuzzy +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Alat konfigurasi sistem basis Debian" + +# type: SH +#, fuzzy +#~ msgid "SYNOPSIS" +#~ msgstr "RINGKASAN" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B merupakan program yang dijalankan saat pertama kali anda " +#~ "boot ke sistem Debian anda yang baru diinstal. Program ini membimbing " +#~ "anda melalui tahap-tahap pengaturan sistem, mengunduh (mendownload) " +#~ "perangkat lunak tambahan, dan seterusnya. Program ini dapat dijalankan " +#~ "lagi di kemudian hari, apabila anda ingin mengulangi proses yang sama " +#~ "lagi." + +# type: SH +#, fuzzy +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTASI" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B menghasilkan pilihan menu dari isi berkas B, dan dari templet-templet debconf." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The .mnu files in /usr/lib/base-config/ control whether the menu item " +#~ "appears only on new installs (Only-New: true), whether debconf can " +#~ "already be running when the item is run (Debconf: true), a numeric Order " +#~ "controls placement in the menu. If a .mnu file contains \"Exit-Menu: true" +#~ "\", then base-config will terminate after running that menu item. " +#~ "Finally, a \"Changes-Menu: true\" line will make base-config rebuild the " +#~ "menu after running the menu item." +#~ msgstr "" +#~ "Berkas-berkas .mnu dalam /usr/lib/base-config mengatur apakah sebuah item " +#~ "menu muncul hanya saat instalasi baru (Only-New: True), apakah debconf " +#~ "dapat telah jalan ketika item tersebut dijalankan (Debconf: true), urutan " +#~ "numerik mengatur peletakan dalam menu. Jika sebuah berkas .mnu berisi " +#~ "\"Exit-Menu: true\", maka base-config akan berhenti setelah menjalankan " +#~ "item menu tersebut. Terakhir, baris \"Changes-menu: true\" akan membuat " +#~ "base-config membangun kembali menu setelah menjalankan item menu tersebut." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The .tst files in /usr/lib/base-config/ are run when base-config builds " +#~ "the menu and must return true for that menu item to appear on the menu." +#~ msgstr "" +#~ "Berkas-berkas .tst pada /usr/lib/base-config/ akan dijalankan ketika base-" +#~ "config membangun menu dan mesti mengembalikan nilai benar (true) agar " +#~ "item menu tersebut muncul pada menu." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The menu items are taken from debconf, by looking for items in the " +#~ "debconf database named base-config/menu/whatever." +#~ msgstr "" +#~ "Item-item menu diambil dari debconf, dengan melihat item-item pada basis " +#~ "data debconf yang dinamakan base-config/menu/sesuatu." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "When a menu item is selected, the corresponding program, in /usr/lib/base-" +#~ "config is run. If this is a fresh install onto a new debian system, the " +#~ "program receives \"new\" as its first argument." +#~ msgstr "" +#~ "Saat sebuah item menu dipilih, program yang sesuai pada /usr/lib/base-" +#~ "config akan dijalankan. Jika ini merupakan instalasi perdana pada sebuah " +#~ "sistem Debian yang baru, program akan menerima \"new\" pada argumen " +#~ "pertama." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B checks the return codes of each of the programs. If a " +#~ "program returns nonzero, the main menu is displayed (this may involve " +#~ "lowering the debconf priority)." +#~ msgstr "" +#~ "B memeriksa nilai kembalian dari tiap program. Jika sebuah " +#~ "program mengembalikan nilai bukan nol, maka menu utama akan ditampilkan " +#~ "(ini bisa melibatkan penurunan prioritas debconf)." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "Every base-config run is logged to B. B
contains timing information to go with the log. " +#~ "This allows replays of base-config runs using the B(1) utility." +#~ msgstr "" +#~ "Setiap kali base-config dijalankan, akan ditulis log pada B
. B
berisi informasi waktu " +#~ "untuk dijalankan dengan log. Ini memungkinkan pengulangan jalannya base-" +#~ "config dengan menggunakan utilitas B(1)" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B
, if it exists, is used by B " +#~ "on new installs to get values from the debian-installer first stage " +#~ "install." +#~ msgstr "" +#~ "B
, jika ada, digunakan oleh B " +#~ "pada instalasi baru untuk mengambil nilai-nilai dari tahap pertama " +#~ "instalasi debian-installer." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "Other packages can drop files into B, and add menu " +#~ "titles in debconf, and they will be added to the menu. It is very " +#~ "strongly encouraged that any such programs communicate with the user " +#~ "entirely via debconf, so that the base configuration maintains a " +#~ "consistent and professional look." +#~ msgstr "" +#~ "Paket-paket lain dapat menaruh berkas-berkas pada B, dan menambahkan judul menu pada debconf, dan mereka akan ditambahkan " +#~ "pada menu. Sangat disarankan agar program-program tersebut berinteraksi " +#~ "dengan pengguna sepenuhnya melalui debconf, sehingga konfigurasi basis " +#~ "dapat mempertahankan tampilan yang konsisten dan profesional." + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "Another useful thing for custom distributions is /usr/share/base-config/" +#~ "debconf-seed. If that directory exists, every file in it will be loaded " +#~ "into the debconf database using B(1)" +#~ msgstr "" +#~ "Hal berguna lainnya untuk distribusi yang dikustomisasi adalah berkas /" +#~ "usr/share/base-config/debconf-seed. Bila direktori tersebut ditemukan,' " +#~ "semua berkas didalamnya akan dimuat dalam basis data debconf menggunakan " +#~ "B(1)" + +# type: SH +#, fuzzy +#~ msgid "ENVIRONMENT" +#~ msgstr "LINGKUNGAN" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "The following environment variables influence B. These " +#~ "variables may be set at run time, or for new installs, may be passed to " +#~ "the kernel at the B(8) (or other bootloader) command line. Consult " +#~ "your boot loader's documentation for details. For example, lilo can be " +#~ "booted with something like \"linux DEBIAN_FRONTEND=readline\"." +#~ msgstr "" +#~ "Variabel-variabel lingkungan berikut mempengaruhi B. Nilai-" +#~ "nilai ini dapat diatur saat menjalankan, atau untuk instalasi baru, dapat " +#~ "diberikan pada kernel melalui baris perintah B(8) (atau boot " +#~ "loader lainnya). Lihat dokumentasi boot loader anda untuk informasi " +#~ "detil. Sebagai contoh, lilo dapat diboot sebagai berikut: \"linux " +#~ "DEBIAN_FRONTEND=readline\"." + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: TP +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "Control various things about B(7)" +#~ msgstr "Mengatur beragam hal mengenai B(7)" + +# type: SH +#, fuzzy +#~ msgid "AUTHOR" +#~ msgstr "PENULIS" + +# type: Plain text +#, fuzzy +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoeyh@debian.orgE" + +# type: TH +#, fuzzy +#~ msgid "TERMWRAP" +#~ msgstr "TERMWRAP" + +# type: Plain text +#, fuzzy +#~ msgid "termwrap - terminal wrapper" +#~ msgstr "termwrap - terminal wrapper" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is used to execute B(8) on newly installed " +#~ "Debian systems. It examines the environment, taking note of locale " +#~ "settings, and what type of console is available, and runs an appropriate " +#~ "terminal program. For example, at the Linux console and in a Japanese " +#~ "locale, it runs jfterm. The specified command is run inside the terminal " +#~ "program (if any)." +#~ msgstr "" +#~ "B digunakan untuk menjalankan B(8) pada sistem " +#~ "Debian yang baru dipasang. Ia meneliti lingkungan, memperhatikan " +#~ "pengaturan lokal, dan jenis konsol yang tersedia, dan kemudian " +#~ "menjalankan program terminal yang sesuai. Sebagai contoh, pada konsol " +#~ "Linux dan lokal Jepang, ia akan menjalankan jfterm. Program yang " +#~ "diberikan akan dijalakan pada terminal tersebut (jika tersedia)." + +# type: SH +#, fuzzy +#~ msgid "OPTIONS" +#~ msgstr "OPSI-OPSI" + +# type: TP +#, fuzzy +#~ msgid "I<-nnt>" +#~ msgstr "I<-nnt>" + +# type: Plain text +#, fuzzy +#~ msgid "Don't run another terminal." +#~ msgstr "Jangan menjalankan terminal yang lain." + +# type: TH +#, fuzzy +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#, fuzzy +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - menambahkan sumber-sumber download untuk apt" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B merupakan program interaktif yang menyederhanakan penambahan " +#~ "sumber-sumber ke berkas sources.list dari apt. Ia mengetahui semua mirror-" +#~ "mirror utama Debian dan dapat membantu anda memilih salah satu. Ia bahkan " +#~ "dapat menggunakan B(8) untuk memindai CD." + +# type: TP +#, fuzzy +#~ msgid "I" +#~ msgstr "I" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Secara bawaan tidak dilakukan pemeriksaan CD. Memberikan \"probe\" " +#~ "sebagai argumen pertama untuk program ini, akan membuat program memeriksa " +#~ "CD yang ada dalam penggerak dan menambahkannya ke berkas sources.list. " +#~ "Ini berguna pada saat instalasi awal Debian, untuk mengurangi interaksi " +#~ "dengan pengguna." + +# type: TP +#, fuzzy +#~ msgid "I<-N>" +#~ msgstr "I<-N>" + +# type: Plain text +#, fuzzy +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: SH +#, fuzzy +#~ msgid "DERIVATION" +#~ msgstr "PENJELASAN" --- eglibc-2.13.orig/debian/local/manpages/po/de.po +++ eglibc-2.13/debian/local/manpages/po/de.po @@ -0,0 +1,294 @@ +# base-config manual page +# Copyright (C) 2005 Free Software Foundation, Inc. +# Jens Seidel , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: base-config 2005/11/17\n" +"POT-Creation-Date: 2005-12-27 17:38-0500\n" +"PO-Revision-Date: 2005-11-17 21:06+0100\n" +"Last-Translator: Jens Seidel \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "validlocale" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "0.1" +msgstr "" + +# type: TH +#: validlocale.8:1 +#, no-wrap +msgid "Petter Reinholdtsen" +msgstr "" + +# type: SH +#: validlocale.8:2 +#, no-wrap +msgid "NAME" +msgstr "NAME" + +# type: Plain text +#: validlocale.8:5 +msgid "validlocale - Test if a given locale is available" +msgstr "" + +# type: SH +#: validlocale.8:5 +#, no-wrap +msgid "SYNTAX" +msgstr "" + +# type: Plain text +#: validlocale.8:8 +msgid "validlocale EIE" +msgstr "" + +# type: SH +#: validlocale.8:8 +#, no-wrap +msgid "DESCRIPTION" +msgstr "BESCHREIBUNG" + +# type: Plain text +#: validlocale.8:13 +msgid "" +"Test if the locale given as argument is a valid locale. If it isn't, print " +"on stdout the string to add to /etc/locale.gen to make locale-gen generate " +"the locale (if it exists at all)." +msgstr "" + +# type: SH +#: validlocale.8:13 +#, no-wrap +msgid "FILES" +msgstr "" + +# type: Plain text +#: validlocale.8:16 +msgid "I" +msgstr "" + +# type: Plain text +#: validlocale.8:18 +msgid "I" +msgstr "" + +# type: SH +#: validlocale.8:18 +#, no-wrap +msgid "ENVIRONMENT VARIABLES" +msgstr "" + +# type: TP +#: validlocale.8:20 +#, no-wrap +msgid "B" +msgstr "" + +# type: Plain text +#: validlocale.8:24 +msgid "" +"Which charset to assume if the given locale is missing from the list of " +"supported locales." +msgstr "" + +# type: SH +#: validlocale.8:24 +#, no-wrap +msgid "EXAMPLES" +msgstr "BEISPIELE" + +# type: Plain text +#: validlocale.8:28 +msgid "" +"If you give a valid locale as parameter, it outputs a string specifying this " +"on stderr:" +msgstr "" + +# type: Plain text +#: validlocale.8:31 +msgid "% validlocale C" +msgstr "" + +# type: Plain text +#: validlocale.8:33 +msgid "locale 'C' valid and available" +msgstr "" + +# type: Plain text +#: validlocale.8:37 +msgid "" +"When given a invalid (not generated or just nonexistent), it outputs a " +"string on stderr telling that this is an invalid locale, and a string to " +"stdout with the string to add to /etc/locale.gen to have this locale " +"generated:" +msgstr "" + +# type: Plain text +#: validlocale.8:40 +msgid "% validlocale de_AU@euro" +msgstr "" + +# type: Plain text +#: validlocale.8:42 +msgid "locale 'de_AT@euro' not available" +msgstr "" + +# type: Plain text +#: validlocale.8:44 +msgid "de_AT@euro ISO-8859-15" +msgstr "" + +# type: SH +#: validlocale.8:44 +#, no-wrap +msgid "AUTHORS" +msgstr "AUTOR" + +# type: Plain text +#: validlocale.8:47 +msgid "Petter Reinholdtsen Epere@hungry.comE" +msgstr "" + +# type: SH +#: validlocale.8:47 +#, no-wrap +msgid "SEE ALSO" +msgstr "" + +# type: Plain text +#: validlocale.8:49 +msgid "locale-gen(8), localedef(1), locale(1)" +msgstr "" + +# type: TH +#~ msgid "BASE-CONFIG" +#~ msgstr "BASE-CONFIG" + +# type: Plain text +#~ msgid "base-config - Debian base system configuration" +#~ msgstr "base-config - Debian-Basissystemkonfiguration" + +# type: SH +#~ msgid "SYNOPSIS" +#~ msgstr "ÜBERSICHT" + +# type: Plain text +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#~ msgid "" +#~ "B is the program that was run when you first rebooted into " +#~ "your newly installed debian system. It walks you through setting up the " +#~ "system and downloading additional software, and so forth. The program can " +#~ "be run at any later date to walk you through essentially the same process " +#~ "again." +#~ msgstr "" +#~ "B ist das Programm, das lief, als Sie das erste Mal Ihr neu " +#~ "installiertes Debian-System starteten. Es führt Sie durch die Einrichtung " +#~ "des Systems, das Herunterladen zusätzlicher Software und so weiter. Das " +#~ "Programm kann zu jedem späteren Zeitpunkt erneut gestartet werden, um " +#~ "erneut durch den selben Prozess zu führen." + +# type: SH +#~ msgid "IMPLEMENTATION" +#~ msgstr "IMPLEMENTIERUNG" + +# type: Plain text +#~ msgid "" +#~ "B generates a menu of choices from the contents of B, and from debconf templates." +#~ msgstr "" +#~ "B erzeugt ein Auswahlmenü aus dem Inhalt von B und von Debconf-Vorlagen." + +# type: SH +#~ msgid "AUTHOR" +#~ msgstr "AUTOR" + +# type: Plain text +#~ msgid "Joey Hess Ejoeyh@debian.orgE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: SH +#~ msgid "OPTIONS" +#~ msgstr "OPTIONEN" + +# type: TP +#~ msgid "I<-nnt>" +#~ msgstr "I<»-N«>" + +# type: TH +#, fuzzy +#~ msgid "APT-SETUP" +#~ msgstr "APT-SETUP" + +# type: Plain text +#, fuzzy +#~ msgid "apt-setup - add apt download sources" +#~ msgstr "apt-setup - Hinzufügen von Quellen zum Herunterladen" + +# type: Plain text +#, fuzzy +#~ msgid "B" +#~ msgstr "B" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "B is an interactive program that simplifies adding sources to " +#~ "apt's sources.list. It knows about all the major debian mirrors and can " +#~ "help you select one. It can even use B(8) to scan CDs." +#~ msgstr "" +#~ "B ist ein interaktives Programm, daß das Hinzufügen von " +#~ "Quellen zu apt's sources.list vereinfacht. Es kennt alle bedeutenden " +#~ "Debian-Spiegel und kann Ihnen bei der Auswahl helfen. Es kann sogar B(8) zum Durchsuchen von CDs verwenden." + +# type: TP +#, fuzzy +#~ msgid "I" +#~ msgstr "I<»probe«>" + +# type: Plain text +#, fuzzy +#~ msgid "" +#~ "By default no probing of CDs is done. Passing \"probe\" as the first " +#~ "argument to this program will make it probe for a CD in the drive on " +#~ "startup and add it to sources.list. This is useful on initial debian " +#~ "installs, to minimize interaction with the user." +#~ msgstr "" +#~ "Standardmäßig wird nicht auf CDs überprüft. Wird »probe« als erstes " +#~ "Argument an dieses Programm übergeben, dann wird beim Starten auf eine CD " +#~ "im Laufwerk geprüft und diese zu den sources.list hinzugefügt. Dies ist " +#~ "bei Debian Erstinstallationen nützlich, um die Interaktion mit dem Nutzer " +#~ "zu minimieren." + +# type: TP +#, fuzzy +#~ msgid "I<-N>" +#~ msgstr "I<»-N«>" + +# type: Plain text +#, fuzzy +#~ msgid "Joey Hess Ejoey@kitenet.netE" +#~ msgstr "Joey Hess Ejoey@kitenet.netE" + +# type: TH +#~ msgid "TZSETUP" +#~ msgstr "APT-SETUP" + +# type: SH +#~ msgid "DERIVATION" +#~ msgstr "BESCHREIBUNG" --- eglibc-2.13.orig/debian/local/manpages/id/addendum.id +++ eglibc-2.13/debian/local/manpages/id/addendum.id @@ -0,0 +1,3 @@ + +.SH PENERJEMAH +Parlin Imanuel Toh --- eglibc-2.13.orig/debian/local/manpages/pl/validlocale.pl.8 +++ eglibc-2.13/debian/local/manpages/pl/validlocale.pl.8 @@ -0,0 +1,52 @@ +.\" This file was generated with po4a. Translate the source file. +.\" +.TH validlocale 8 0.1 "Petter Reinholdtsen" "" +.SH NAZWA +.LP +validlocale \- Sprawdza, czy dostêpne jest dane locale +.SH SK£ADNIA +.LP +validlocale <\fIlocale\fP> +.SH OPIS +.LP +Sprawdza, czy locale podane jako argument jest poprawne. Je¶li nie jest, +wypisuje na stdout napis, jaki nale¿y dodaæ do /etc/locale.gen, aby +polecenie locale\-gen wygenerowa³o dane locale (o ile w ogóle ono istnieje). +.SH PLIKI +.LP +\fI/usr/sbin/validlocale\fP +.br +\fI/usr/share/i18n/SUPPORTED\fP +.SH "ZMIENNE ¦RODOWISKOWE" +.LP +.TP +\fBDEFAULTCHARSET\fP +Jakiego zestawu znaków u¿yæ, je¶li podanego locale nie ma w li¶cie +obs³ugiwanych. +.SH PRZYK£ADY +.LP +Je¶li jako parametr podano nazwê poprawnego locale, wypisuje na stderr +odpowiedni napis: +.LP +.IP +% validlocale C +.br +locale 'C' valid and available +.LP +Je¶li podano nazwê nieprawid³owego locale (niewygenerowanego lub po prostu +nieistniej±cego), wypisuje na stderr napis mówi±cy o tym, ¿e nie jest to +prawid³owe locale, oraz \- na stdout \- napis, który nale¿y dodaæ do +/etc/locale.gen, aby móc wygenerowaæ dane locale: +.LP +.IP +% validlocale de_AU@euro +.br +locale 'de_AT@euro' not available +.br +de_AT@euro ISO\-8859\-15 +.SH AUTOR +.LP +Petter Reinholdtsen +.SH "PATRZ TAK¯E" +.LP +locale\-gen(8), localedef(1), locale(1) --- eglibc-2.13.orig/debian/source/format +++ eglibc-2.13/debian/source/format @@ -0,0 +1 @@ +1.0 --- eglibc-2.13.orig/debian/source/lintian-overrides +++ eglibc-2.13/debian/source/lintian-overrides @@ -0,0 +1,7 @@ +eglibc source: debhelper-but-no-misc-depends libc0.1 +eglibc source: debhelper-but-no-misc-depends libc6 +eglibc source: debhelper-but-no-misc-depends libc6.1 +eglibc source: debhelper-but-no-misc-depends libc0.3 +eglibc source: outdated-autotools-helper-file scripts/config.sub 2006-02-27 +eglibc source: outdated-autotools-helper-file scripts/config.guess 2006-02-27 + --- eglibc-2.13.orig/debian/sysdeps/mipsel.mk +++ eglibc-2.13/debian/sysdeps/mipsel.mk @@ -0,0 +1,57 @@ +libc_add-ons = ports nptl $(add-ons) + +# build 32-bit (n32) alternative library +EGLIBC_PASSES += mipsn32 +DEB_ARCH_REGULAR_PACKAGES += libc6-mipsn32 libc6-dev-mipsn32 +mipsn32_add-ons = ports nptl $(add-ons) +mipsn32_configure_target = mips32el-linux-gnu +mipsn32_CC = $(CC) -mabi=n32 +mipsn32_CXX = $(CXX) -mabi=n32 +libc6-mipsn32_shlib_dep = libc6-mipsn32 (>= $(shlib_dep_ver)) +mipsn32_rtlddir = /lib32 +mipsn32_slibdir = /lib32 +mipsn32_libdir = /usr/lib32 +mipsn32_extra_config_options := $(extra_config_options) --disable-profile + +# build 64-bit alternative library +EGLIBC_PASSES += mips64 +DEB_ARCH_REGULAR_PACKAGES += libc6-mips64 libc6-dev-mips64 +mips64_add-ons = ports nptl $(add-ons) +mips64_configure_target = mips64el-linux-gnu +mips64_CC = $(CC) -mabi=64 +mips64_CXX = $(CXX) -mabi=64 +libc6-mips64_shlib_dep = libc6-mips64 (>= $(shlib_dep_ver)) +mips64_rtlddir = /lib64 +mips64_slibdir = /lib64 +mips64_libdir = /usr/lib64 +mips64_extra_config_options := $(extra_config_options) --disable-profile + +define libc6-dev-mips64_extra_pkg_install + +mkdir -p debian/libc6-dev-mips64/usr/include +ln -s mipsel-linux-gnu/bits debian/libc6-dev-mips64/usr/include/ +ln -s mipsel-linux-gnu/gnu debian/libc6-dev-mips64/usr/include/ +ln -s mipsel-linux-gnu/fpu_control.h debian/libc6-dev-mips64/usr/include/ + +mkdir -p debian/libc6-dev-mips64/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/mipsel-linux-gnu/sys` ; do \ + ln -s ../mipsel-linux-gnu/sys/$$i debian/libc6-dev-mips64/usr/include/sys/$$i ; \ +done + +endef + +# build a loongson-2f optimized library +EGLIBC_PASSES += loongson2f +DEB_ARCH_REGULAR_PACKAGES += libc6-loongson2f +loongson2f_add-ons = ports nptl $(add-ons) +loongson2f_configure_target = mips32el-linux-gnu +loongson2f_CC = $(CC) -mabi=32 +loongson2f_CXX = $(CXX) -mabi=32 +loongson2f_extra_cflags = -march=loongson2f -mtune=loongson2f -O2 +loongson2f_extra_config_options = $(extra_config_options) --disable-profile +loongson2f_slibdir = /lib/$(DEB_HOST_MULTIARCH)/loongson2f + +# Need to put a tri-arch aware version of ldd in the base package +define mipsn32_extra_install +cp debian/tmp-mipsn32/usr/bin/ldd debian/tmp-libc/usr/bin +endef --- eglibc-2.13.orig/debian/sysdeps/amd64.mk +++ eglibc-2.13/debian/sysdeps/amd64.mk @@ -0,0 +1,63 @@ +libc_add_ons = nptl $(add-ons) +libc_extra_cflags = -O3 +libc_rtlddir = /lib64 +libc_extra_config_options = $(extra_config_options) --enable-multi-arch + +define libc6_extra_pkg_install + +make -C debian/local/memcpy-wrapper +install -m 755 -o root -g root -d debian/libc6/$(libdir)/libc +install -m 755 -o root -g root \ + debian/local/memcpy-wrapper/memcpy-preload.so \ + debian/libc6/$(libdir)/libc +install -m 755 -o root -g root \ + debian/local/memcpy-wrapper/memcpy-syslog-preload.so \ + debian/libc6/$(libdir)/libc +endef + +# build 32-bit (i386) alternative library +EGLIBC_PASSES += i386 +DEB_ARCH_REGULAR_PACKAGES += libc6-i386 libc6-dev-i386 +libc6-i386_shlib_dep = libc6-i386 (>= $(shlib_dep_ver)) + +# This section is quite different in Ubuntu. +# +# This only looks like i386. It's really i686, fine for compatability +i386_add-ons = nptl $(add-ons) +i386_configure_target = i686-linux-gnu +i386_CC = $(BUILD_CC) -m32 +i386_CXX = $(BUILD_CXX) -m32 +i386_MAKEFLAGS = MAKEFLAGS="gconvdir=/usr/lib32/gconv" +i386_extra_cflags = -march=i686 -mtune=generic +i386_extra_config_options = $(extra_config_options) --disable-profile --enable-multi-arch +i386_slibdir = /lib32 +i386_libdir = /usr/lib32 + +define libc6-dev-i386_extra_pkg_install + +mkdir -p debian/libc6-dev-i386/usr/include +ln -s x86_64-linux-gnu/bits debian/libc6-dev-i386/usr/include/ +ln -s x86_64-linux-gnu/gnu debian/libc6-dev-i386/usr/include/ +ln -s x86_64-linux-gnu/fpu_control.h debian/libc6-dev-i386/usr/include/ + +mkdir -p debian/libc6-dev-i386/usr/include/x86_64-linux-gnu/gnu +cp -a debian/tmp-i386/usr/include/gnu/stubs-32.h \ + debian/libc6-dev-i386/usr/include/x86_64-linux-gnu/gnu + +mkdir -p debian/libc6-dev-i386/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/x86_64-linux-gnu/sys` ; do \ + ln -s ../x86_64-linux-gnu/sys/$$i debian/libc6-dev-i386/usr/include/sys/$$i ; \ +done + +cp -a debian/tmp-i386/usr/include/sys/elf.h \ + debian/libc6-dev-i386/usr/include/sys +cp -a debian/tmp-i386/usr/include/sys/vm86.h \ + debian/libc6-dev-i386/usr/include/sys + +endef + +define libc6-i386_extra_pkg_install +mkdir -p debian/libc6-i386/lib +ln -sf /lib32/ld-linux.so.2 debian/libc6-i386/lib +endef + --- eglibc-2.13.orig/debian/sysdeps/hppa.mk +++ eglibc-2.13/debian/sysdeps/hppa.mk @@ -0,0 +1,14 @@ +libc_add-ons = ports nptl $(add-ons) +libc_extra_config_options = $(extra_config_options) --disable-sanity-checks + +# hppa64 needs symlink /usr/hppa64-linux/include to /usr/include +# (See: Bug#239020) In future we may drop this file with supporting hppa64. + +define libc6-dev_extra_pkg_install +mkdir -p debian/$(curpass)/usr +mkdir -p debian/$(curpass)/usr/hppa64-linux +ln -sf ../include debian/$(curpass)/usr/hppa64-linux/include +mkdir -p debian/$(curpass)/usr/hppa64-linux-gnu +ln -sf ../include debian/$(curpass)/usr/hppa64-linux-gnu/include +endef + --- eglibc-2.13.orig/debian/sysdeps/linux.mk +++ eglibc-2.13/debian/sysdeps/linux.mk @@ -0,0 +1,53 @@ +EGLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*) +MIN_KERNEL_SUPPORTED := 2.6.15 +libc = libc6 + +# NPTL Config +threads = yes +libc_add-ons = nptl $(add-ons) +libc_extra_config_options = $(extra_config_options) + +ifndef LINUX_SOURCE + ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + LINUX_HEADERS := /usr/include + else + LINUX_HEADERS := /usr/$(DEB_HOST_GNU_TYPE)/include + endif + LINUX_ARCH_HEADERS := /usr/include/$(DEB_HOST_MULTIARCH) +else + LINUX_HEADERS := $(LINUX_SOURCE)/include +endif + +# Minimum Kernel supported +with_headers = --with-headers=$(shell pwd)/debian/include --enable-kernel=$(call xx,MIN_KERNEL_SUPPORTED) + +KERNEL_HEADER_DIR = $(stamp)mkincludedir +$(stamp)mkincludedir: + rm -rf debian/include + mkdir debian/include + if [ -d "$(LINUX_ARCH_HEADERS)/asm" ]; then \ + ln -s $(LINUX_ARCH_HEADERS)/asm debian/include; \ + else \ + ln -s $(LINUX_HEADERS)/asm debian/include; \ + fi + ln -s $(LINUX_HEADERS)/asm-generic debian/include + ln -s $(LINUX_HEADERS)/linux debian/include + + # To make configure happy if libc6-dev is not installed. + touch debian/include/assert.h + + touch $@ + +# Also to make configure happy. +export CPPFLAGS = -isystem $(shell pwd)/debian/include + +# This round of ugliness decomposes the Linux kernel version number +# into an integer so it can be easily compared and then does so. +CURRENT_KERNEL_VERSION=$(shell uname -r) +define kernel_check +(minimum=$$((`echo $(1) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)); \ +current=$$((`echo $(CURRENT_KERNEL_VERSION) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)); \ +if [ $$current -lt $$minimum ]; then \ + false; \ +fi) +endef --- eglibc-2.13.orig/debian/sysdeps/kfreebsd-amd64.mk +++ eglibc-2.13/debian/sysdeps/kfreebsd-amd64.mk @@ -0,0 +1,43 @@ +# Main library +extra_config_options = --disable-compatible-utmp --disable-multi-arch + +# build 32-bit (i386) alternative library +EGLIBC_PASSES += i386 +DEB_ARCH_REGULAR_PACKAGES += libc0.1-i386 libc0.1-dev-i386 +libc0.1-i386_shlib_dep = libc0.1-i386 (>= $(shlib_dep_ver)) + +i386_configure_target = i686-kfreebsd-gnu +i386_CC = $(CC) -m32 +i386_CXX = $(CXX) -m32 +i386_add-ons = ports linuxthreads $(add-ons) +i386_extra_cflags = -march=pentium4 -mtune=generic +i386_extra_config_options = $(extra_config_options) --disable-profile +i386_slibdir = /lib32 +i386_libdir = /usr/lib32 + +define libc0.1-dev-i386_extra_pkg_install + +mkdir -p debian/libc0.1-dev-i386/usr/include +ln -s x86_64-kfreebsd-gnu/bits debian/libc0.1-dev-i386/usr/include/ +ln -s x86_64-kfreebsd-gnu/gnu debian/libc0.1-dev-i386/usr/include/ +ln -s x86_64-kfreebsd-gnu/fpu_control.h debian/libc0.1-dev-i386/usr/include/ + +mkdir -p debian/libc0.1-dev-i386/usr/include/x86_64-kfreebsd-gnu/gnu +cp -a debian/tmp-i386/usr/include/gnu/stubs-32.h \ + debian/libc0.1-dev-i386/usr/include/x86_64-kfreebsd-gnu/gnu + +mkdir -p debian/libc0.1-dev-i386/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/x86_64-kfreebsd-gnu/sys` ; do \ + ln -s ../x86_64-kfreebsd-gnu/sys/$$i debian/libc0.1-dev-i386/usr/include/sys/$$i ; \ +done + +cp -a debian/tmp-i386/usr/include/sys/vm86.h \ + debian/libc0.1-dev-i386/usr/include/sys + +endef + +define libc0.1-i386_extra_pkg_install +mkdir -p debian/libc0.1-i386/lib +ln -sf /lib32/ld.so.1 debian/libc0.1-i386/lib +endef + --- eglibc-2.13.orig/debian/sysdeps/powerpcspe.mk +++ eglibc-2.13/debian/sysdeps/powerpcspe.mk @@ -0,0 +1 @@ +libc_add-ons = ports nptl $(add-ons) --- eglibc-2.13.orig/debian/sysdeps/alpha.mk +++ eglibc-2.13/debian/sysdeps/alpha.mk @@ -0,0 +1,12 @@ +libc_add-ons = ports nptl $(add-ons) + +libc = libc6.1 + +# build an ev67 optimized library +EGLIBC_PASSES += alphaev67 +DEB_ARCH_REGULAR_PACKAGES += libc6.1-alphaev67 +alphaev67_add-ons = ports nptl $(add-ons) +alphaev67_configure_target = alphaev67-linux-gnu +alphaev67_extra_cflags = -mcpu=ev67 -mtune=ev67 -O2 +alphaev67_extra_config_options = $(extra_config_options) --disable-profile +alphaev67_slibdir = /lib/$(DEB_HOST_MULTIARCH)/ev67 --- eglibc-2.13.orig/debian/sysdeps/kfreebsd-i386.mk +++ eglibc-2.13/debian/sysdeps/kfreebsd-i386.mk @@ -0,0 +1,14 @@ +# Main library +extra_config_options = --disable-compatible-utmp --disable-multi-arch + +# Build a 32-bit optimized library +EGLIBC_PASSES += i686 +DEB_ARCH_REGULAR_PACKAGES += libc0.1-i686 + +# We use -march=i686 and glibc's i686 routines use cmov, so require it. +# A Debian-local glibc patch adds cmov to the search path. +i686_add-ons = ports linuxthreads $(add-ons) +i686_configure_target=i686-kfreebsd-gnu +i686_extra_cflags = -march=i686 -mtune=generic +i686_slibdir = /lib/$(DEB_HOST_MULTIARCH)/i686/cmov +i686_extra_config_options = $(extra_config_options) --disable-profile --- eglibc-2.13.orig/debian/sysdeps/powerpc.mk +++ eglibc-2.13/debian/sysdeps/powerpc.mk @@ -0,0 +1,33 @@ +extra_config_options = --enable-multi-arch + +# build 64-bit (ppc64) alternative library +EGLIBC_PASSES += ppc64 +DEB_ARCH_REGULAR_PACKAGES += libc6-ppc64 libc6-dev-ppc64 +ppc64_add-ons = nptl $(add-ons) +ppc64_configure_target = powerpc64-linux-gnu +ppc64_CC = $(CC) -m64 -fno-stack-protector -U_FORTIFY_SOURCE +ppc64_CXX = $(CXX) -m64 -fno-stack-protector -U_FORTIFY_SOURCE +libc6-ppc64_shlib_dep = libc6-ppc64 (>= $(shlib_dep_ver)) +ppc64_extra_config_options := $(extra_config_options) --disable-profile +ppc64_rtlddir = /lib64 +ppc64_slibdir = /lib64 +ppc64_libdir = /usr/lib64 + +define libc6-dev-ppc64_extra_pkg_install + +mkdir -p debian/libc6-dev-ppc64/usr/include +ln -s powerpc-linux-gnu/bits debian/libc6-dev-ppc64/usr/include/ +ln -s powerpc-linux-gnu/gnu debian/libc6-dev-ppc64/usr/include/ +ln -s powerpc-linux-gnu/fpu_control.h debian/libc6-dev-ppc64/usr/include/ + +mkdir -p debian/libc6-dev-ppc64/usr/include/powerpc-linux-gnu/gnu +cp -a debian/tmp-ppc64/usr/include/gnu/stubs-64.h \ + debian/libc6-dev-ppc64/usr/include/powerpc-linux-gnu/gnu + +mkdir -p debian/libc6-dev-ppc64/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/powerpc-linux-gnu/sys` ; do \ + ln -s ../powerpc-linux-gnu/sys/$$i debian/libc6-dev-ppc64/usr/include/sys/$$i ; \ +done + +endef + --- eglibc-2.13.orig/debian/sysdeps/mips.mk +++ eglibc-2.13/debian/sysdeps/mips.mk @@ -0,0 +1,46 @@ +libc_add-ons = ports nptl $(add-ons) + +# build 32-bit (n32) alternative library +EGLIBC_PASSES += mipsn32 +DEB_ARCH_REGULAR_PACKAGES += libc6-mipsn32 libc6-dev-mipsn32 +mipsn32_add-ons = ports nptl $(add-ons) +mipsn32_configure_target = mips32-linux-gnu +mipsn32_CC = $(CC) -mabi=n32 +mipsn32_CXX = $(CXX) -mabi=n32 +libc6-mipsn32_shlib_dep = libc6-mipsn32 (>= $(shlib_dep_ver)) +mipsn32_rtlddir = /lib32 +mipsn32_slibdir = /lib32 +mipsn32_libdir = /usr/lib32 +mipsn32_extra_config_options := $(extra_config_options) --disable-profile + +# build 64-bit alternative library +EGLIBC_PASSES += mips64 +DEB_ARCH_REGULAR_PACKAGES += libc6-mips64 libc6-dev-mips64 +mips64_add-ons = ports nptl $(add-ons) +mips64_configure_target = mips64-linux-gnu +mips64_CC = $(CC) -mabi=64 +mips64_CXX = $(CXX) -mabi=64 +libc6-mips64_shlib_dep = libc6-mips64 (>= $(shlib_dep_ver)) +mips64_rtlddir = /lib64 +mips64_slibdir = /lib64 +mips64_libdir = /usr/lib64 +mips64_extra_config_options := $(extra_config_options) --disable-profile + +define libc6-dev-mips64_extra_pkg_install + +mkdir -p debian/libc6-dev-mips64/usr/include +ln -s mips-linux-gnu/bits debian/libc6-dev-mips64/usr/include/ +ln -s mips-linux-gnu/gnu debian/libc6-dev-mips64/usr/include/ +ln -s mips-linux-gnu/fpu_control.h debian/libc6-dev-mips64/usr/include/ + +mkdir -p debian/libc6-dev-mips64/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/mips-linux-gnu/sys` ; do \ + ln -s ../mips-linux-gnu/sys/$$i debian/libc6-dev-mips64/usr/include/sys/$$i ; \ +done + +endef + +# Need to put a tri-arch aware version of ldd in the base package +define mipsn32_extra_install +cp debian/tmp-mipsn32/usr/bin/ldd debian/tmp-libc/usr/bin +endef --- eglibc-2.13.orig/debian/sysdeps/i386.mk +++ eglibc-2.13/debian/sysdeps/i386.mk @@ -0,0 +1,63 @@ +# We use -mno-tls-direct-seg-refs to not wrap-around segments, as it +# greatly reduce the speed when running under the Xen hypervisor. +# libc_extra_config_options = $(extra_config_options) --without-__thread --disable-sanity-checks +libc_extra_cflags = -mno-tls-direct-seg-refs +libc_extra_config_options = $(extra_config_options) --enable-multi-arch + +# We use -mno-tls-direct-seg-refs to not wrap-around segments, as it +# greatly increase the speed when running under the 32bit Xen hypervisor. +EGLIBC_PASSES += xen +DEB_ARCH_REGULAR_PACKAGES += libc6-xen +xen_add-ons = nptl $(add-ons) +xen_configure_target=i686-linux-gnu +xen_extra_cflags = -march=i686 -mtune=generic -mno-tls-direct-seg-refs +xen_slibdir = /lib/$(DEB_HOST_MULTIARCH)/tls/i686/nosegneg +xen_extra_config_options = $(extra_config_options) --disable-profile --enable-multi-arch + +define libc6-xen_extra_pkg_install +mkdir -p debian/libc6-xen/etc/ld.so.conf.d +echo '# This directive teaches ldconfig to search in nosegneg subdirectories' > debian/libc6-xen/etc/ld.so.conf.d/xen.conf +echo '# and cache the DSOs there with extra bit 1 set in their hwcap match' >> debian/libc6-xen/etc/ld.so.conf.d/xen.conf +echo '# fields. In Xen guest kernels, the vDSO tells the dynamic linker to' >> debian/libc6-xen/etc/ld.so.conf.d/xen.conf +echo '# search in nosegneg subdirectories and to match this extra hwcap bit' >> debian/libc6-xen/etc/ld.so.conf.d/xen.conf +echo '# in the ld.so.cache file.' >> debian/libc6-xen/etc/ld.so.conf.d/xen.conf +echo 'hwcap 1 nosegneg' >> debian/libc6-xen/etc/ld.so.conf.d/xen.conf +endef + +# build 64-bit (amd64) alternative library +EGLIBC_PASSES += amd64 +DEB_ARCH_REGULAR_PACKAGES += libc6-amd64 libc6-dev-amd64 +libc6-amd64_shlib_dep = libc6-amd64 (>= $(shlib_dep_ver)) +amd64_add-ons = nptl $(add-ons) +amd64_configure_target = x86_64-linux-gnu +# __x86_64__ is defined here because Makeconfig uses -undef and the +# /usr/include/asm wrappers need that symbol. +amd64_CC = $(CC) -m64 -D__x86_64__ +amd64_CXX = $(CXX) -m64 -D__x86_64__ +amd64_extra_config_options = $(extra_config_options) --disable-profile --enable-multi-arch +amd64_rtlddir = /lib64 +amd64_slibdir = /lib64 +amd64_libdir = /usr/lib64 + +define amd64_extra_install +cp debian/tmp-amd64/usr/bin/ldd \ + debian/tmp-libc/usr/bin +endef + +define libc6-dev_extra_pkg_install +mkdir -p debian/libc6-dev/$(libdir)/xen +cp -af debian/tmp-xen/$(libdir)/*.a \ + debian/libc6-dev/$(libdir)/xen +endef + +define libc6-dev-amd64_extra_pkg_install +mkdir -p debian/libc6-dev-amd64/usr/include +cp -a debian/tmp-amd64/usr/include/bits \ + debian/libc6-dev-amd64/usr/include/ +cp -a debian/tmp-amd64/usr/include/gnu \ + debian/libc6-dev-amd64/usr/include/ +cp -a debian/tmp-amd64/usr/include/sys \ + debian/libc6-dev-amd64/usr/include/ +cp debian/tmp-amd64/usr/include/fpu_control.h \ + debian/libc6-dev-amd64/usr/include/ +endef --- eglibc-2.13.orig/debian/sysdeps/hurd.mk +++ eglibc-2.13/debian/sysdeps/hurd.mk @@ -0,0 +1,22 @@ +# This is for the GNU OS. Commonly known as the Hurd. + +EGLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*) + +threads = no +libc = libc0.3 + +# Glibc should really do this for us. +define libc_extra_install +mkdir -p debian/tmp-$(curpass)/lib +ln -s ld.so.1 debian/tmp-$(curpass)/lib/ld.so +endef + +# Do not care about kernel versions for now. +define kernel_check +true +endef + +libc_extra_config_options := $(extra_config_options) + +# Only use libidn as add-on. +standard-add-ons = libidn --- eglibc-2.13.orig/debian/sysdeps/kfreebsd.mk +++ eglibc-2.13/debian/sysdeps/kfreebsd.mk @@ -0,0 +1,60 @@ +EGLIBC_OVERLAYS ?= $(shell ls glibc-linuxthreads* glibc-ports* glibc-libidn*) +MIN_KERNEL_SUPPORTED := 8.0.0 +libc = libc0.1 + +# Linuxthreads Config +threads = yes +libc_add-ons = ports linuxthreads $(add-ons) +libc_extra_config_options = $(extra_config_options) + +ifndef KFREEBSD_SOURCE + ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + KFREEBSD_HEADERS := /usr/include + else + KFREEBSD_HEADERS := /usr/$(DEB_HOST_GNU_TYPE)/include + endif +else + KFREEBSD_HEADERS := $(KFREEBSD_SOURCE)/sys +endif + +# Minimum Kernel supported +with_headers = --with-headers=$(shell pwd)/debian/include --enable-kernel=$(call xx,MIN_KERNEL_SUPPORTED) + +KERNEL_HEADER_DIR = $(stamp)mkincludedir +$(stamp)mkincludedir: + rm -rf debian/include + mkdir debian/include + ln -s $(KFREEBSD_HEADERS)/bsm debian/include + ln -s $(KFREEBSD_HEADERS)/net debian/include + ln -s $(KFREEBSD_HEADERS)/netatalk debian/include + ln -s $(KFREEBSD_HEADERS)/netipx debian/include + ln -s $(KFREEBSD_HEADERS)/nfs debian/include + ln -s $(KFREEBSD_HEADERS)/osreldate.h debian/include + ln -s $(KFREEBSD_HEADERS)/sys debian/include + ln -s $(KFREEBSD_HEADERS)/vm debian/include + + # Link all machine directories. We can't just link machine + # because of explicit references to and + # . + find $(KFREEBSD_HEADERS) -maxdepth 1 -xtype d -name machine\* \ + -exec ln -s '{}' debian/include ';' + + # To make configure happy if libc0.1-dev is not installed. + touch debian/include/assert.h + + touch $@ + +# Also to make configure happy. +export CPPFLAGS = -isystem $(shell pwd)/debian/include + +# This round of ugliness decomposes the FreeBSD kernel version number +# into an integer so it can be easily compared and then does so. +CURRENT_KERNEL_VERSION=$(shell uname -r) +define kernel_check +(minimum=$$((`echo $(1) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\1 \* 10000 + \2 \* 100 + \3/'`)); \ +current=$$((`echo $(CURRENT_KERNEL_VERSION) | sed 's/\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100/'`)); \ +if [ $$current -lt $$minimum ]; then \ + false; \ +fi) +endef + --- eglibc-2.13.orig/debian/sysdeps/s390.mk +++ eglibc-2.13/debian/sysdeps/s390.mk @@ -0,0 +1,35 @@ +# build 64-bit (s390x) alternative library +EGLIBC_PASSES += s390x +DEB_ARCH_REGULAR_PACKAGES += libc6-s390x libc6-dev-s390x +s390x_add-ons = nptl $(add-ons) +s390x_configure_target = s390x-linux-gnu +s390x_CC = $(CC) -m64 +s390x_CXX = $(CXX) -m64 +libc6-s390x_shlib_dep = libc6-s390x (>= $(shlib_dep_ver)) +s390x_extra_config_options := $(extra_config_options) --disable-profile +s390x_rtlddir = /lib64 +s390x_slibdir = /lib64 +s390x_libdir = /usr/lib64 + +define libc6-dev-s390x_extra_pkg_install + +mkdir -p debian/libc6-dev-s390x/usr/include +ln -s s390-linux-gnu/bits debian/libc6-dev-s390x/usr/include/ +ln -s s390-linux-gnu/gnu debian/libc6-dev-s390x/usr/include/ +ln -s s390-linux-gnu/fpu_control.h debian/libc6-dev-s390x/usr/include/ + +mkdir -p debian/libc6-dev-s390x/usr/include/s390-linux-gnu/gnu +cp -a debian/tmp-s390x/usr/include/gnu/stubs-64.h \ + debian/libc6-dev-s390x/usr/include/s390-linux-gnu/gnu + +mkdir -p debian/libc6-dev-s390x/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/s390-linux-gnu/sys` ; do \ + ln -s ../s390-linux-gnu/sys/$$i debian/libc6-dev-s390x/usr/include/sys/$$i ; \ +done + +endef + +define libc6-s390x_extra_pkg_install +mkdir -p debian/$(curpass)/lib +ln -s /lib64/ld64.so.1 debian/$(curpass)/lib +endef --- eglibc-2.13.orig/debian/sysdeps/s390x.mk +++ eglibc-2.13/debian/sysdeps/s390x.mk @@ -0,0 +1,35 @@ +libc_rtlddir = /lib + +# build 32-bit (s390) alternative library +EGLIBC_PASSES += s390 +DEB_ARCH_REGULAR_PACKAGES += libc6-s390 libc6-dev-s390 +s390_add-ons = nptl $(add-ons) +s390_configure_target = s390-linux-gnu +s390_CC = $(CC) -m31 +s390_CXX = $(CXX) -m31 +s390_extra_config_options := $(extra_config_options) --disable-profile +s390_slibdir = /lib32 +s390_libdir = /usr/lib32 + +define libc6-dev-s390_extra_pkg_install + +mkdir -p debian/libc6-dev-s390/usr/include +ln -s s390x-linux-gnu/bits debian/libc6-dev-s390/usr/include/ +ln -s s390x-linux-gnu/gnu debian/libc6-dev-s390/usr/include/ +ln -s s390x-linux-gnu/fpu_control.h debian/libc6-dev-s390/usr/include/ + +mkdir -p debian/libc6-dev-s390/usr/include/s390x-linux-gnu/gnu +cp -a debian/tmp-s390/usr/include/gnu/stubs-32.h \ + debian/libc6-dev-s390/usr/include/s390x-linux-gnu/gnu + +mkdir -p debian/libc6-dev-s390/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/s390x-linux-gnu/sys` ; do \ + ln -s ../s390x-linux-gnu/sys/$$i debian/libc6-dev-s390/usr/include/sys/$$i ; \ +done + +endef + +define libc6-s390_extra_pkg_install +mkdir -p debian/$(curpass)/lib +ln -s /lib32/ld.so.1 debian/$(curpass)/lib +endef --- eglibc-2.13.orig/debian/sysdeps/armhf.mk +++ eglibc-2.13/debian/sysdeps/armhf.mk @@ -0,0 +1,31 @@ +libc_add-ons = ports nptl $(add-ons) + +# To be coinstallable with armel, we install ld.so to a multiarch directory +# from the beginning. +libc_rtlddir = /lib/$(DEB_HOST_MULTIARCH) + +EGLIBC_PASSES += armel +DEB_ARCH_REGULAR_PACKAGES += libc6-armel libc6-dev-armel +armel_add-ons = ports nptl $(add-ons) +armel_CC = $(BUILD_CC) -mfloat-abi=softfp +armel_CXX = $(BUILD_CXX) -mfloat-abi=softfp +armel_slibdir = /lib/arm-linux-gnueabi +armel_libdir = /usr/lib/arm-linux-gnueabi +armel_rtlddir = /lib + +define libc6-dev-armel_extra_pkg_install +mkdir -p debian/libc6-dev-armel/usr/include +cp -a debian/tmp-armel/usr/include/bits \ + debian/libc6-dev-armel/usr/include/ +cp -a debian/tmp-armel/usr/include/gnu \ + debian/libc6-dev-armel/usr/include/ +cp -a debian/tmp-armel/usr/include/sys \ + debian/libc6-dev-armel/usr/include/ +cp debian/tmp-armel/usr/include/fpu_control.h \ + debian/libc6-dev-armel/usr/include/ +endef + +define libc6-armel_extra_pkg_install +mkdir -p debian/libc6-armel/lib +ln -sf $(armel_slibdir)/ld-linux.so.3 debian/libc6-armel/lib +endef --- eglibc-2.13.orig/debian/sysdeps/sparc.mk +++ eglibc-2.13/debian/sysdeps/sparc.mk @@ -0,0 +1,86 @@ +# build 64-bit (sparc64) alternative library +EGLIBC_PASSES += sparc64 +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64 libc6-dev-sparc64 +sparc64_add-ons = nptl $(add-ons) +sparc64_configure_target=sparc64-linux-gnu +sparc64_CC = $(CC) -m64 +sparc64_CXX = $(CXX) -m64 +libc6-sparc64_shlib_dep = libc6-sparc64 (>= $(shlib_dep_ver)) +sparc64_extra_config_options = $(extra_config_options) --disable-profile +sparc64_rtlddir = /lib64 +sparc64_slibdir = /lib64 +sparc64_libdir = /usr/lib64 + +extra_config_options = --enable-multi-arch + +define libc6-dev-sparc64_extra_pkg_install + +mkdir -p debian/libc6-dev-sparc64/usr/include +ln -s sparc-linux-gnu/bits debian/libc6-dev-sparc64/usr/include/ +ln -s sparc-linux-gnu/gnu debian/libc6-dev-sparc64/usr/include/ +ln -s sparc-linux-gnu/fpu_control.h debian/libc6-dev-sparc64/usr/include/ + +mkdir -p debian/libc6-dev-sparc64/usr/include/sparc-linux-gnu/gnu +cp -a debian/tmp-sparc64/usr/include/gnu/stubs-64.h \ + debian/libc6-dev-sparc64/usr/include/sparc-linux-gnu/gnu + +mkdir -p debian/libc6-dev-sparc64/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/sparc-linux-gnu/sys` ; do \ + ln -s ../sparc-linux-gnu/sys/$$i debian/libc6-dev-sparc64/usr/include/sys/$$i ; \ +done + +endef + +EGLIBC_PASSES += sparc64b +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64b +sparc64b_add-ons = nptl $(add-ons) +sparc64b_configure_build=sparc64-linux-gnu +sparc64b_configure_target=sparc64b-linux-gnu +sparc64b_CC = $(CC) -m64 -mcpu=ultrasparc3 +sparc64b_CXX = $(CXX) -m64 -mcpu=ultrasparc3 +sparc64b_extra_cflags = -g2 -O3 +sparc64b_extra_config_options = $(extra_config_options) --disable-profile +libc6-sparc64b_shlib_dep = libc6-sparc64b (>= $(shlib_dep_ver)) +sparc64b_slibdir = /lib64/ultra3 + +EGLIBC_PASSES += sparc64v +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64v +sparc64v_add-ons = nptl $(add-ons) +sparc64v_configure_build=sparc64-linux-gnu +sparc64v_configure_target=sparc64v-linux-gnu +sparc64v_CC = $(CC) -m64 -mcpu=niagara +sparc64v_CXX = $(CXX) -m64 -mcpu=niagara +sparc64v_extra_cflags = -g2 -O3 +sparc64v_extra_config_options = $(extra_config_options) --disable-profile +libc6-sparc64v_shlib_dep = libc6-sparc64v (>= $(shlib_dep_ver)) +sparc64v_slibdir = /lib64/v9v + +EGLIBC_PASSES += sparc64v2 +DEB_ARCH_REGULAR_PACKAGES += libc6-sparc64v2 +sparc64v2_add-ons = nptl $(add-ons) +sparc64v2_configure_build=sparc64-linux-gnu +sparc64v2_configure_target=sparc64v2-linux-gnu +sparc64v2_CC = $(CC) -m64 -mcpu=niagara2 +sparc64v2_CXX = $(CXX) -m64 -mcpu=niagara2 +sparc64v2_extra_cflags = -g2 -O3 +sparc64v2_extra_config_options = $(extra_config_options) --disable-profile +libc6-sparc64v2_shlib_dep = libc6-sparc64v2 (>= $(shlib_dep_ver)) +sparc64v2_slibdir = /lib64/v9v2 + +EGLIBC_PASSES += sparcv9v +DEB_ARCH_REGULAR_PACKAGES += libc6-sparcv9v +sparcv9v_add-ons = nptl $(add-ons) +sparcv9v_configure_target=sparcv9v-linux-gnu +sparcv9v_extra_cflags = -O3 -mtune=niagara +sparcv9v_extra_config_options = $(extra_config_options) --disable-profile --with-tls --with-__thread +sparcv9v_rtlddir = /lib +sparcv9v_slibdir = /lib/v9v + +EGLIBC_PASSES += sparcv9v2 +DEB_ARCH_REGULAR_PACKAGES += libc6-sparcv9v2 +sparcv9v2_add-ons = nptl $(add-ons) +sparcv9v2_configure_target=sparcv9v2-linux-gnu +sparcv9v2_extra_cflags = -O3 -mtune=niagara2 +sparcv9v2_extra_config_options = $(extra_config_options) --disable-profile --with-tls --with-__thread +sparcv9v2_rtlddir = /lib +sparcv9v2_slibdir = /lib/v9v2 --- eglibc-2.13.orig/debian/sysdeps/m68k.mk +++ eglibc-2.13/debian/sysdeps/m68k.mk @@ -0,0 +1,2 @@ +libc_MIN_KERNEL_SUPPORTED = 2.6.32 +libc_add-ons = ports nptl $(add-ons) --- eglibc-2.13.orig/debian/sysdeps/sparc64.mk +++ eglibc-2.13/debian/sysdeps/sparc64.mk @@ -0,0 +1,3 @@ +extra_config_options = --enable-multi-arch +libc_rtlddir = /lib64 +libc_extra_cflags = -mcpu=ultrasparc --- eglibc-2.13.orig/debian/sysdeps/ppc64.mk +++ eglibc-2.13/debian/sysdeps/ppc64.mk @@ -0,0 +1,40 @@ +libc_rtlddir = /lib64 +extra_config_options = --enable-multi-arch +extra_cflags = -O3 -fno-tree-vectorize + +# build 32-bit (powerpc) alternative library +EGLIBC_PASSES += powerpc +DEB_ARCH_REGULAR_PACKAGES += libc6-powerpc libc6-dev-powerpc +libc6-powerpc_shlib_dep = libc6-powerpc (>= $(shlib_dep_ver)) +powerpc_add-ons = nptl $(add-ons) +powerpc_configure_target = powerpc-linux-gnu +powerpc_CC = $(CC) -m32 +powerpc_CXX = $(CXX) -m32 +powerpc_extra_cflags = -O3 -fno-tree-vectorize +powerpc_extra_config_options := $(extra_config_options) --disable-profile +powerpc_slibdir = /lib32 +powerpc_libdir = /usr/lib32 + +define libc6-dev-powerpc_extra_pkg_install + +mkdir -p debian/libc6-dev-powerpc/usr/include +ln -s powerpc64-linux-gnu/bits debian/libc6-dev-powerpc/usr/include/ +ln -s powerpc64-linux-gnu/gnu debian/libc6-dev-powerpc/usr/include/ +ln -s powerpc64-linux-gnu/fpu_control.h debian/libc6-dev-powerpc/usr/include/ + +mkdir -p debian/libc6-dev-powerpc/usr/include/powerpc64-linux-gnu/gnu +cp -a debian/tmp-powerpc/usr/include/gnu/stubs-32.h \ + debian/libc6-dev-powerpc/usr/include/powerpc64-linux-gnu/gnu + +mkdir -p debian/libc6-dev-powerpc/usr/include/sys +for i in `ls debian/tmp-libc/usr/include/powerpc64-linux-gnu/sys` ; do \ + ln -s ../powerpc64-linux-gnu/sys/$$i debian/libc6-dev-powerpc/usr/include/sys/$$i ; \ +done + +endef + +# create a symlink for the 32 bit dynamic linker in /lib +define libc6-powerpc_extra_pkg_install +mkdir -p debian/$(curpass)/lib +ln -s /lib32/ld.so.1 debian/$(curpass)/lib +endef --- eglibc-2.13.orig/debian/sysdeps/armel.mk +++ eglibc-2.13/debian/sysdeps/armel.mk @@ -0,0 +1,24 @@ +libc_add-ons = ports nptl $(add-ons) + +EGLIBC_PASSES += armhf +DEB_ARCH_REGULAR_PACKAGES += libc6-armhf libc6-dev-armhf +armhf_add-ons = ports nptl $(add-ons) +armhf_CC = $(BUILD_CC) -mfloat-abi=hard +armhf_CXX = $(BUILD_CXX) -mfloat-abi=hard +armhf_slibdir = /lib/arm-linux-gnueabihf +armhf_libdir = /usr/lib/arm-linux-gnueabihf +# To be coinstallable with armel, we install ld.so to a multiarch directory +# from the beginning. +armhf_rtlddir = /lib/$(DEB_HOST_MULTIARCH) + +define libc6-dev-armhf_extra_pkg_install +mkdir -p debian/libc6-dev-armhf/usr/include +cp -a debian/tmp-armhf/usr/include/bits \ + debian/libc6-dev-armhf/usr/include/ +cp -a debian/tmp-armhf/usr/include/gnu \ + debian/libc6-dev-armhf/usr/include/ +cp -a debian/tmp-armhf/usr/include/sys \ + debian/libc6-dev-armhf/usr/include/ +cp debian/tmp-armhf/usr/include/fpu_control.h \ + debian/libc6-dev-armhf/usr/include/ +endef --- eglibc-2.13.orig/debian/sysdeps/ia64.mk +++ eglibc-2.13/debian/sysdeps/ia64.mk @@ -0,0 +1 @@ +libc = libc6.1 --- eglibc-2.13.orig/debian/sysdeps/armeb.mk +++ eglibc-2.13/debian/sysdeps/armeb.mk @@ -0,0 +1 @@ +libc_add-ons = ports nptl $(add-ons) --- eglibc-2.13.orig/debian/sysdeps/m32r.mk +++ eglibc-2.13/debian/sysdeps/m32r.mk @@ -0,0 +1,2 @@ +libc_add-ons = ports linuxthreads $(add-ons) +libc_extra_config_options = $(extra_config_options) --disable-sanity-checks --- eglibc-2.13.orig/debian/sysdeps/arm.mk +++ eglibc-2.13/debian/sysdeps/arm.mk @@ -0,0 +1 @@ +libc_add-ons = ports nptl $(add-ons) --- eglibc-2.13.orig/debian/sysdeps/hurd-i386.mk +++ eglibc-2.13/debian/sysdeps/hurd-i386.mk @@ -0,0 +1,26 @@ +# We use -march=i686 and glibc's i686 routines use cmov, so require it. +# A Debian-local glibc patch adds cmov to the search path. +EGLIBC_PASSES += i686 +DEB_ARCH_REGULAR_PACKAGES += libc0.3-i686 +i686_add-ons = $(add-ons) +i686_configure_target=i686-gnu +i686_extra_cflags = -march=i686 -mtune=generic +i686_slibdir = /lib/$(DEB_HOST_MULTIARCH)/i686/cmov +i686_extra_config_options = $(extra_config_options) --disable-profile --disable-compatible-utmp + +# We use -mno-tls-direct-seg-refs to not wrap-around segments, as it +# greatly increase the speed when running under the 32bit Xen hypervisor. +EGLIBC_PASSES += xen +DEB_ARCH_REGULAR_PACKAGES += libc0.3-xen +xen_add-ons = $(add-ons) +xen_configure_target=i686-gnu +xen_extra_cflags = -march=i686 -mtune=generic -mno-tls-direct-seg-refs +xen_slibdir = /lib/$(DEB_HOST_MULTIARCH)/i686/nosegneg +xen_extra_config_options = $(extra_config_options) --disable-profile + +define libc0.3-dev_extra_pkg_install +mkdir -p debian/libc0.3-dev/$(libdir)/xen +cp -af debian/tmp-xen/$(libdir)/*.a \ + debian/libc0.3-dev/$(libdir)/xen +endef + --- eglibc-2.13.orig/debian/sysdeps/sh4.mk +++ eglibc-2.13/debian/sysdeps/sh4.mk @@ -0,0 +1,4 @@ +libc_add-ons = ports nptl $(add-ons) + +# Renesas SH enabled -ffinte-math-only. Some software need -mieee. +extra_cflags = -mieee --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-s390x-linux-gnu-s390 +++ eglibc-2.13/debian/testsuite-checking/expected-results-s390x-linux-gnu-s390 @@ -0,0 +1,13 @@ +# +# Allowed failures for s390x-linux-gnu-s390 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug22.out, Error 1 +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-robust8.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-sparc64-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-sparc64-linux-gnu-libc @@ -0,0 +1,17 @@ +# +# Allowed failures for sparc64-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cancelx21.out, Error 1 +tst-cancelx4.out, Error 1 +tst-cancelx5.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-s390x-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-s390x-linux-gnu-libc @@ -0,0 +1,14 @@ +# +# Allowed failures for s390x-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug22.out, Error 1 +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-robust8.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-linux-gnu-xen +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-linux-gnu-xen @@ -0,0 +1,10 @@ +# +# Allowed failures for i686-linux-gnu-xen and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-linux-gnu-i386 +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-linux-gnu-i386 @@ -0,0 +1,10 @@ +# +# Allowed failures for i686-linux-gnu-i386 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-powerpc64-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-powerpc64-linux-gnu-libc @@ -0,0 +1,36 @@ +# +# Allowed failures for powerpc64-linux-gnu-ppc64 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-execstack.out, Error 1 +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-cancelx4.out, Error 1 +tst-cancelx5.out, Error 1 +tst-timer.out, Error 139 + +# FIXME Ubuntu (fails on the buildd) +test-fenv.out, Error 1 + +# FIXME 2.11 +tst-cputimer1.out, Error 1 +check-execstack.out, Error 1 + +# FIXME 2.13 +bug-atexit3-lib.so, Error 1 +next.out, Error 1 +nodelete2.out, Error 1 +noload.out, Error 1 +order2.out, Error 1 +reldep5.out, Error 127 +reldep6.out, Error 1 +reldep8.out, Error 134 +tst-cancel24, Error 1 +tst-initorder.out, Error 1 +tst-mqueue5.out, Error 1 +tst-putenv.out, Error 1 +tst-tls13.out, Error 1 +tst-tls6.out, Error 1 +unload4.out, Error 127 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-mips64el-linux-gnu-mips64 +++ eglibc-2.13/debian/testsuite-checking/expected-results-mips64el-linux-gnu-mips64 @@ -0,0 +1,24 @@ +# +# Allowed failures for mips64el-linux-gnu-mips64 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug-nextafter.out, Error 8 +bug-nexttoward.out, Error 8 +check-execstack.out, Error 1 +check-localplt.out, Error 1 +test-double.out, Error 1 +test-idouble.out, Error 1 +test-misc.out, Error 1 +tst-audit1.out, Error 127 +tst-audit2.out, Error 127 +tst-backtrace1.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-tls2.out, Error 1 +tst-tls3.out, Error 1 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-x86_64-linux-gnu-amd64 +++ eglibc-2.13/debian/testsuite-checking/expected-results-x86_64-linux-gnu-amd64 @@ -0,0 +1,18 @@ +# +# Allowed failures for x86_64-linux-gnu-amd64 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 + +# FIXME Ubuntu +testgrp.out, Error 1 + +# FIXME 2.11.1 (running locally only?) +globtest.out, Error 1 +tst-gettext3.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-kfreebsd-gnu-i386 +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-kfreebsd-gnu-i386 @@ -0,0 +1,18 @@ +# +# Allowed failures for i686-kfreebsd-gnu-i386 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +test-ifaddrs.out, Error 1 +test_ifindex.out, Error 1 +tst-aio10.out, Error 1 +tst-aio4.out, Error 1 +tst-aio9.out, Error 1 +tst-cputimer2.out, Error 1 +tst-longjmp_chk.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-timer4.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/compare.sh +++ eglibc-2.13/debian/testsuite-checking/compare.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +if [ $# -ne '2' ]; then + echo -e "\nUsage: Compare a test-expected-* file and a test-results-* file." + echo -e "$0 : < Expected testsuite results > < Testsuite results >\n"; + exit 1 +fi; + +expected=$(tempfile) +results=$(tempfile) +grep -Ev '^ *$|^#' $1 | sort > $expected +grep -Ev '^ *$|^#' $2 | sort > $results + +REGRESSIONS=$(diff -wBI '^#.*' $expected $results | sed -e '/^>/!d;s/^> //g') +PROGRESSIONS=$(diff -wBI '^#.*' $expected $results | sed -e '/^, Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-execstack.out, Error 1 +check-localplt.out, Error 1 +check-textrel.out, Error 1 +tst-addr1.out, Error 1 +tst-audit2.out, Error 139 +tst-backtrace2.out, Error 1 +tst-cancelx20.out, Error 1 +tst-cancelx21.out, Error 1 +tst-cancelx4.out, Error 1 +tst-cancelx5.out, Error 1 +tst-cleanupx4.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-cputimer1.out, Error 1 +tst-cputimer2.out, Error 1 +tst-cputimer3.out, Error 1 +tst-getcpu.out, Error 1 +tst-longjmp_chk.out, Error 1 +tst-mqueue3.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer4.out, Error 1 +tst-timer5.out, Error 1 +tst-waitid.out, Error 1 + +# Should be removed when bug #582787 is fixed +tstdiomisc.out, Error 1 + +# Should be removed when bug #561203 is fixed +tst-fork1.out, Error 139 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-powerpc-linux-gnuspe-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-powerpc-linux-gnuspe-libc @@ -0,0 +1,17 @@ +# +# Allowed failures for powerpc-linux-gnuspe-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug-nextafter.out, Error 18 +bug-nexttoward.out, Error 18 +check-localplt.out, Error 1 +test-double.out, Error 1 +test-fenv.out, Error 1 +test-float.out, Error 1 +test-idouble.out, Error 1 +test-ifloat.out, Error 1 +test-misc.out, Error 1 +tst-cputimer1.out, Error 1 +tst-setcontext-fpscr.o, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-mipsel-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-mipsel-linux-gnu-libc @@ -0,0 +1,18 @@ +# +# Allowed failures for mipsel-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-execstack.out, Error 1 +check-localplt.out, Error 1 +tst-audit1.out, Error 127 +tst-audit2.out, Error 127 +tst-backtrace1.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-tls2.out, Error 1 +tst-tls3.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-s390-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-s390-linux-gnu-libc @@ -0,0 +1,13 @@ +# +# Allowed failures for s390-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug22.out, Error 1 +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-robust8.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-linux-gnu-i686 +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-linux-gnu-i686 @@ -0,0 +1,10 @@ +# +# Allowed failures for i686-linux-gnu-i686 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/README +++ eglibc-2.13/debian/testsuite-checking/README @@ -0,0 +1,17 @@ +Testsuite Regression Testing +============================ + +This directory contains a file for each arch/os, listing the allowed failures +during a testsuite run for a given arch/os pair. The files are listed as +"${arch-os}-test-results". Where "${arch-os}" is extracted by rules as +"$(call xx,configure_target)". + +A script, "convertlog.sh", can be used to process the normal log-test-* +file into a test-results-* file. + +Since we cannot run the testsuite without "-k", we run the enitre testsuite +ignoring errors. Then we compare the error set with the expected errors, +differences in signal numbers or errors fails the build. If the architecture +does not have a test-results-* file a warning is given and no comparison is +made. + --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-gnu-xen +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-gnu-xen @@ -0,0 +1,85 @@ +# +# Allowed failures for i486-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +# Need actual porting +tst-cpucount, Error 1 +tst-cpuset.o, Error 1 +tst-cputimer1.o, Error 1 +tst-cputimer2.o, Error 1 +tst-cputimer3.o, Error 1 +tst-mqueue5.o, Error 1 +tst-pselect.o, Error 1 +tst-timer2.o, Error 1 +tst-timer4.o, Error 1 +tst-timer5.o, Error 1 +# +# Need investigation +annexc.out, Error 1 (ignored) +bug-glob2.out, Error 1 +bug-regex31-mem, Error 1 +bug-ulimit1.out, Error 1 +check-execstack.out, Error 1 +check-local-headers.out, Error 1 +check-localplt.out, Error 1 +check-textrel.out, Error 1 +libnss_test1.so, Error 1 +mtrace-tst-loading, Error 1 +opendir-tst1.out, Error 1 +test-assert-perr.out, Error 1 +test-assert.out, Error 1 +test-fenv.out, Error 1 +test-idouble.out, Error 139 +test-ifaddrs.out, Error 1 +test-ifloat.out, Error 139 +test-lfs.out, Error 1 +test-memmem, Error 1 +test-strnlen, Error 1 +tst-aio10.out, Error 1 +tst-aio8.out, Error 1 +tst-aio9.out, Error 1 +tst-atime.out, Error 1 +tst-audit1.out, Error 137 +tst-audit2.out, Error 137 +tst-chk1.out, Error 1 +tst-chk2.out, Error 1 +tst-chk3.out, Error 1 +tst-chk4.out, Error 1 +tst-chk5.out, Error 1 +tst-chk6.out, Error 1 +tst-clock_nanosleep.out, Error 1 +tst-dlmopen1.out, Error 1 +tst-error1-mem, Error 1 +tst-fdopendir2.out, Error 1 +tst-fdopendir.out, Error 1 +tst-fnmatch-mem, Error 1 +tst-fopenloc.check, Error 1 +tst-futimesat.out, Error 1 +tst-getconf.out, Error 3 +tst-gettext.out, Error 1 +tst-grantpt.out, Error 1 +tst-lfschk1.out, Error 1 +tst-lfschk2.out, Error 1 +tst-lfschk3.out, Error 1 +tst-lfschk4.out, Error 1 +tst-lfschk5.out, Error 1 +tst-lfschk6.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-sprofil.out, Error 136 +tst-stackguard1-static.out, Error 1 +tst-stackguard1.out, Error 1 +tst-sysconf.out, Error 1 +tst-timer.out, Error 1 +tst-tls18.out, Error 1 +tst-tls9-static.out, Error 1 +tst-unique1.out, Error 1 +tst-unique2.out, Error 127 +tst-vfork3-mem, Error 1 +tst-waitid.out, Error 1 +tststatic.out, Error 139 +tststatic2.out, Error 139 +# happens seldomly +tst-nanosleep.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-gnu-i686 +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-gnu-i686 @@ -0,0 +1,85 @@ +# +# Allowed failures for i486-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +# Need actual porting +tst-cpucount, Error 1 +tst-cpuset.o, Error 1 +tst-cputimer1.o, Error 1 +tst-cputimer2.o, Error 1 +tst-cputimer3.o, Error 1 +tst-mqueue5.o, Error 1 +tst-pselect.o, Error 1 +tst-timer2.o, Error 1 +tst-timer4.o, Error 1 +tst-timer5.o, Error 1 +# +# Need investigation +annexc.out, Error 1 (ignored) +bug-glob2.out, Error 1 +bug-regex31-mem, Error 1 +bug-ulimit1.out, Error 1 +check-execstack.out, Error 1 +check-local-headers.out, Error 1 +check-localplt.out, Error 1 +check-textrel.out, Error 1 +libnss_test1.so, Error 1 +mtrace-tst-loading, Error 1 +opendir-tst1.out, Error 1 +test-assert-perr.out, Error 1 +test-assert.out, Error 1 +test-fenv.out, Error 1 +test-idouble.out, Error 139 +test-ifaddrs.out, Error 1 +test-ifloat.out, Error 139 +test-lfs.out, Error 1 +test-memmem, Error 1 +test-strnlen, Error 1 +tst-aio10.out, Error 1 +tst-aio8.out, Error 1 +tst-aio9.out, Error 1 +tst-atime.out, Error 1 +tst-audit1.out, Error 137 +tst-audit2.out, Error 137 +tst-chk1.out, Error 1 +tst-chk2.out, Error 1 +tst-chk3.out, Error 1 +tst-chk4.out, Error 1 +tst-chk5.out, Error 1 +tst-chk6.out, Error 1 +tst-clock_nanosleep.out, Error 1 +tst-dlmopen1.out, Error 1 +tst-error1-mem, Error 1 +tst-fdopendir2.out, Error 1 +tst-fdopendir.out, Error 1 +tst-fnmatch-mem, Error 1 +tst-fopenloc.check, Error 1 +tst-futimesat.out, Error 1 +tst-getconf.out, Error 3 +tst-gettext.out, Error 1 +tst-grantpt.out, Error 1 +tst-lfschk1.out, Error 1 +tst-lfschk2.out, Error 1 +tst-lfschk3.out, Error 1 +tst-lfschk4.out, Error 1 +tst-lfschk5.out, Error 1 +tst-lfschk6.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-sprofil.out, Error 136 +tst-stackguard1-static.out, Error 1 +tst-stackguard1.out, Error 1 +tst-sysconf.out, Error 1 +tst-timer.out, Error 1 +tst-tls18.out, Error 1 +tst-tls9-static.out, Error 1 +tst-unique1.out, Error 1 +tst-unique2.out, Error 127 +tst-vfork3-mem, Error 1 +tst-waitid.out, Error 1 +tststatic.out, Error 139 +tststatic2.out, Error 139 +# happens seldomly +tst-nanosleep.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-x86_64-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-x86_64-linux-gnu-libc @@ -0,0 +1,11 @@ +# +# Allowed failures for x86_64-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-sparc-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-sparc-linux-gnu-libc @@ -0,0 +1,14 @@ +# +# Allowed failures for sparc-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-eintr1.out, Error 1 +tst-timer.out, Error 139 +tst-longjmp_chk2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-sparc64-linux-gnu-sparc64 +++ eglibc-2.13/debian/testsuite-checking/expected-results-sparc64-linux-gnu-sparc64 @@ -0,0 +1,28 @@ +# +# Allowed failures for sparc64-linux-gnu-sparc64 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cancelx21.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-writev.out, Error 1 + +# FIXME Ubuntu +tst-cancel20.out, Error 1 +tst-cancelx20.out, Error 1 +tst-eintr1.out, Error 1 + +# FIXME 2.11 +tst-backtrace2.out, Error 1 +tst-longjmp_chk2.out, Error 1 + +# FIXME 2.12 +testgrp.out, Error 1 +tst-cancelx4.out, Error 1 +tst-cancelx5.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-mips32el-linux-gnu-mipsn32 +++ eglibc-2.13/debian/testsuite-checking/expected-results-mips32el-linux-gnu-mipsn32 @@ -0,0 +1,23 @@ +# +# Allowed failures for mips32el-linux-gnu-mipsn32 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug-nextafter.out, Error 8 +bug-nexttoward.out, Error 8 +check-execstack.out, Error 1 +check-localplt.out, Error 1 +test-double.out, Error 1 +test-idouble.out, Error 1 +test-misc.out, Error 1 +tst-audit1.out, Error 127 +tst-audit2.out, Error 127 +tst-backtrace1.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-tls2.out, Error 1 +tst-tls3.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-powerpc-linux-gnu-powerpc +++ eglibc-2.13/debian/testsuite-checking/expected-results-powerpc-linux-gnu-powerpc @@ -0,0 +1,40 @@ +# +# Allowed failures for powerpc-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-cancelx4.out, Error 1 +tst-cancelx5.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-timer.out, Error 139 + +# FIXME Ubuntu (fails on the buildd) +test-fenv.out, Error 1 + +# FIXME 2.11 +tst-cputimer1.out, Error 1 + +# FIXME 2.13 +bug-atexit3-lib.so, Error 1 +next.out, Error 1 +nodelete2.out, Error 1 +noload.out, Error 1 +order2.out, Error 1 +reldep5.out, Error 127 +reldep6.out, Error 1 +reldep8.out, Error 134 +tst-cancel24, Error 1 +tst-execstack-needed.out, Error 127 +tst-execstack-prog.out, Error 127 +tst-execstack.out, Error 1 +tst-execstack.out, Error 1 +tst-initorder.out, Error 1 +tst-makecontext3.out, Error 1 +tst-putenv.out, Error 1 +tst-setcontext-fpscr.out, Error 5 +tst-setcontext.out, Error 1 +tst-tls13.out, Error 1 +tst-tls6.out, Error 1 +unload4.out, Error 127 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-powerpc-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-powerpc-linux-gnu-libc @@ -0,0 +1,17 @@ +# +# Allowed failures for powerpc-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 + +# FIXME Ubuntu (fails on the buildd) +test-fenv.out, Error 1 + +# FIXME 2.11 +tst-cputimer1.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-mips-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-mips-linux-gnu-libc @@ -0,0 +1,18 @@ +# +# Allowed failures for mips-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-execstack.out, Error 1 +check-localplt.out, Error 1 +tst-audit1.out, Error 127 +tst-audit2.out, Error 127 +tst-backtrace1.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-tls2.out, Error 1 +tst-tls3.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i486-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-i486-linux-gnu-libc @@ -0,0 +1,10 @@ +# +# Allowed failures for i486-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-gnu-i386 +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-gnu-i386 @@ -0,0 +1,85 @@ +# +# Allowed failures for i486-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +# Need actual porting +tst-cpucount, Error 1 +tst-cpuset.o, Error 1 +tst-cputimer1.o, Error 1 +tst-cputimer2.o, Error 1 +tst-cputimer3.o, Error 1 +tst-mqueue5.o, Error 1 +tst-pselect.o, Error 1 +tst-timer2.o, Error 1 +tst-timer4.o, Error 1 +tst-timer5.o, Error 1 +# +# Need investigation +annexc.out, Error 1 (ignored) +bug-glob2.out, Error 1 +bug-regex31-mem, Error 1 +bug-ulimit1.out, Error 1 +check-execstack.out, Error 1 +check-local-headers.out, Error 1 +check-localplt.out, Error 1 +check-textrel.out, Error 1 +libnss_test1.so, Error 1 +mtrace-tst-loading, Error 1 +opendir-tst1.out, Error 1 +test-assert-perr.out, Error 1 +test-assert.out, Error 1 +test-fenv.out, Error 1 +test-idouble.out, Error 139 +test-ifaddrs.out, Error 1 +test-ifloat.out, Error 139 +test-lfs.out, Error 1 +test-memmem, Error 1 +test-strnlen, Error 1 +tst-aio10.out, Error 1 +tst-aio8.out, Error 1 +tst-aio9.out, Error 1 +tst-atime.out, Error 1 +tst-audit1.out, Error 137 +tst-audit2.out, Error 137 +tst-chk1.out, Error 1 +tst-chk2.out, Error 1 +tst-chk3.out, Error 1 +tst-chk4.out, Error 1 +tst-chk5.out, Error 1 +tst-chk6.out, Error 1 +tst-clock_nanosleep.out, Error 1 +tst-dlmopen1.out, Error 1 +tst-error1-mem, Error 1 +tst-fdopendir2.out, Error 1 +tst-fdopendir.out, Error 1 +tst-fnmatch-mem, Error 1 +tst-fopenloc.check, Error 1 +tst-futimesat.out, Error 1 +tst-getconf.out, Error 3 +tst-gettext.out, Error 1 +tst-grantpt.out, Error 1 +tst-lfschk1.out, Error 1 +tst-lfschk2.out, Error 1 +tst-lfschk3.out, Error 1 +tst-lfschk4.out, Error 1 +tst-lfschk5.out, Error 1 +tst-lfschk6.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-sprofil.out, Error 136 +tst-stackguard1-static.out, Error 1 +tst-stackguard1.out, Error 1 +tst-sysconf.out, Error 1 +tst-timer.out, Error 1 +tst-tls18.out, Error 1 +tst-tls9-static.out, Error 1 +tst-unique1.out, Error 1 +tst-unique2.out, Error 127 +tst-vfork3-mem, Error 1 +tst-waitid.out, Error 1 +tststatic.out, Error 139 +tststatic2.out, Error 139 +# happens seldomly +tst-nanosleep.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-powerpc64-linux-gnu-ppc64 +++ eglibc-2.13/debian/testsuite-checking/expected-results-powerpc64-linux-gnu-ppc64 @@ -0,0 +1,20 @@ +# +# Allowed failures for powerpc64-linux-gnu-ppc64 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-execstack.out, Error 1 +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 + +# FIXME Ubuntu (fails on the buildd) +test-fenv.out, Error 1 + +# FIXME 2.11 +tst-cputimer1.out, Error 1 +check-execstack.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-ia64-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-ia64-linux-gnu-libc @@ -0,0 +1,14 @@ +# +# Allowed failures for ia64-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-getcpu.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-makecontext3.out, Error 1 +tst-mqueue5.out, Error 1 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i686-kfreebsd-gnu-i686 +++ eglibc-2.13/debian/testsuite-checking/expected-results-i686-kfreebsd-gnu-i686 @@ -0,0 +1,16 @@ +# +# Allowed failures for i686-kfreebsd-gnu-i686 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-aio10.out, Error 1 +tst-aio4.out, Error 1 +tst-aio9.out, Error 1 +tst-cputimer2.out, Error 1 +tst-longjmp_chk.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-timer4.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-x86_64-kfreebsd-gnu-libc @@ -0,0 +1,17 @@ +# +# Allowed failures for x86_64-kfreebsd-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-aio10.out, Error 1 +tst-aio4.out, Error 1 +tst-aio9.out, Error 1 +tst-cputimer2.out, Error 1 +tst-longjmp_chk.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-timer4.out, Error 1 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i486-kfreebsd-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-i486-kfreebsd-gnu-libc @@ -0,0 +1,16 @@ +# +# Allowed failures for i486-kfreebsd-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-aio10.out, Error 1 +tst-aio4.out, Error 1 +tst-aio9.out, Error 1 +tst-cputimer2.out, Error 1 +tst-longjmp_chk.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-timer4.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-alphaev67-linux-gnu-alphaev67 +++ eglibc-2.13/debian/testsuite-checking/expected-results-alphaev67-linux-gnu-alphaev67 @@ -0,0 +1,22 @@ +# +# Allowed failures for alphaev67-linux-gnu-alphaev67 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +noinl-tester.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-eintr1.out, Error 1 +tst-mqueue5.out, Error 1 +tst-signal3.out, Error 1 +tst-timer.out, Error 132 +tst-timer.out, Error 139 +tst-timer4.out, Error 1 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 + +# Broken due to binutils bug +# http://sourceware.org/bugzilla/show_bug.cgi?id=12608 +tst-tls10.out, Error 139 +tst-tls11.out, Error 139 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-i486-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-i486-gnu-libc @@ -0,0 +1,85 @@ +# +# Allowed failures for i486-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +# Need actual porting +tst-cpucount, Error 1 +tst-cpuset.o, Error 1 +tst-cputimer1.o, Error 1 +tst-cputimer2.o, Error 1 +tst-cputimer3.o, Error 1 +tst-mqueue5.o, Error 1 +tst-pselect.o, Error 1 +tst-timer2.o, Error 1 +tst-timer4.o, Error 1 +tst-timer5.o, Error 1 +# +# Need investigation +annexc.out, Error 1 (ignored) +bug-glob2.out, Error 1 +bug-regex31-mem, Error 1 +bug-ulimit1.out, Error 1 +check-execstack.out, Error 1 +check-local-headers.out, Error 1 +check-localplt.out, Error 1 +check-textrel.out, Error 1 +libnss_test1.so, Error 1 +mtrace-tst-loading, Error 1 +opendir-tst1.out, Error 1 +test-assert-perr.out, Error 1 +test-assert.out, Error 1 +test-fenv.out, Error 1 +test-idouble.out, Error 139 +test-ifaddrs.out, Error 1 +test-ifloat.out, Error 139 +test-lfs.out, Error 1 +test-memmem, Error 1 +test-strnlen, Error 1 +tst-aio10.out, Error 1 +tst-aio8.out, Error 1 +tst-aio9.out, Error 1 +tst-atime.out, Error 1 +tst-audit1.out, Error 137 +tst-audit2.out, Error 137 +tst-chk1.out, Error 1 +tst-chk2.out, Error 1 +tst-chk3.out, Error 1 +tst-chk4.out, Error 1 +tst-chk5.out, Error 1 +tst-chk6.out, Error 1 +tst-clock_nanosleep.out, Error 1 +tst-dlmopen1.out, Error 1 +tst-error1-mem, Error 1 +tst-fdopendir2.out, Error 1 +tst-fdopendir.out, Error 1 +tst-fnmatch-mem, Error 1 +tst-fopenloc.check, Error 1 +tst-futimesat.out, Error 1 +tst-getconf.out, Error 3 +tst-gettext.out, Error 1 +tst-grantpt.out, Error 1 +tst-lfschk1.out, Error 1 +tst-lfschk2.out, Error 1 +tst-lfschk3.out, Error 1 +tst-lfschk4.out, Error 1 +tst-lfschk5.out, Error 1 +tst-lfschk6.out, Error 1 +tst-longjmp_chk2.out, Error 1 +tst-mknodat.out, Error 1 +tst-renameat.out, Error 1 +tst-sprofil.out, Error 136 +tst-stackguard1-static.out, Error 1 +tst-stackguard1.out, Error 1 +tst-sysconf.out, Error 1 +tst-timer.out, Error 1 +tst-tls18.out, Error 1 +tst-tls9-static.out, Error 1 +tst-unique1.out, Error 1 +tst-unique2.out, Error 127 +tst-vfork3-mem, Error 1 +tst-waitid.out, Error 1 +tststatic.out, Error 139 +tststatic2.out, Error 139 +# happens seldomly +tst-nanosleep.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-s390x-linux-gnu-s390x +++ eglibc-2.13/debian/testsuite-checking/expected-results-s390x-linux-gnu-s390x @@ -0,0 +1,14 @@ +# +# Allowed failures for s390x-linux-gnu-s390x and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug22.out, Error 1 +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-robust8.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-arm-linux-gnueabi-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-arm-linux-gnueabi-libc @@ -0,0 +1,13 @@ +# +# Allowed failures for arm-linux-gnueabi-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +tst-cpuclock2.out, Error 1 +test-idouble.out, Error 1 +test-ifloat.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/convertlog.sh +++ eglibc-2.13/debian/testsuite-checking/convertlog.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ $# -ne '1' ]; then + echo -e "\nUsage: Converts a log-test-* file into a test-results-* file." + echo -e "$0 : < Input testsuite log file >\n"; + exit 1 +fi; + +echo '#' +echo '# Testsuite failures, someone should be working towards' +echo '# fixing these! They are listed here for the purpose of' +echo '# regression testing during builds.' +echo '# Format: , Error [(ignored)]' +echo '#' +grep 'make\[.*\]:.* \[/.*' $1 | sed -e's,^.*/,,g' -e 's/\]/,/g' | sort --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-alpha-linux-gnu-libc +++ eglibc-2.13/debian/testsuite-checking/expected-results-alpha-linux-gnu-libc @@ -0,0 +1,17 @@ +# +# Allowed failures for alpha-linux-gnu-libc and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +check-localplt.out, Error 1 +noinl-tester.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-eintr1.out, Error 1 +tst-mqueue5.out, Error 1 +tst-signal3.out, Error 1 +tst-timer.out, Error 132 +tst-timer.out, Error 139 +tst-timer4.out, Error 1 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-mips64-linux-gnu-mips64 +++ eglibc-2.13/debian/testsuite-checking/expected-results-mips64-linux-gnu-mips64 @@ -0,0 +1,24 @@ +# +# Allowed failures for mips64-linux-gnu-mips64 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug-nextafter.out, Error 8 +bug-nexttoward.out, Error 8 +check-execstack.out, Error 1 +check-localplt.out, Error 1 +test-double.out, Error 1 +test-idouble.out, Error 1 +test-misc.out, Error 1 +tst-audit1.out, Error 127 +tst-audit2.out, Error 127 +tst-backtrace1.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-tls2.out, Error 1 +tst-tls3.out, Error 1 +tst-waitid.out, Error 1 +tst-writev.out, Error 1 --- eglibc-2.13.orig/debian/testsuite-checking/expected-results-mips32-linux-gnu-mipsn32 +++ eglibc-2.13/debian/testsuite-checking/expected-results-mips32-linux-gnu-mipsn32 @@ -0,0 +1,23 @@ +# +# Allowed failures for mips32-linux-gnu-mipsn32 and the returned make +# failure number, indicating the signal the process died with. +# Format: , Error [(ignored)] +# +annexc.out, Error 1 (ignored) +bug-nextafter.out, Error 8 +bug-nexttoward.out, Error 8 +check-execstack.out, Error 1 +check-localplt.out, Error 1 +test-double.out, Error 1 +test-idouble.out, Error 1 +test-misc.out, Error 1 +tst-audit1.out, Error 127 +tst-audit2.out, Error 127 +tst-backtrace1.out, Error 1 +tst-backtrace2.out, Error 1 +tst-cpuclock2.out, Error 1 +tst-mqueue5.out, Error 1 +tst-timer.out, Error 139 +tst-tls2.out, Error 1 +tst-tls3.out, Error 1 +tst-waitid.out, Error 1 --- eglibc-2.13.orig/debian/script.in/nohwcap.sh +++ eglibc-2.13/debian/script.in/nohwcap.sh @@ -0,0 +1,45 @@ + # Handle upgrades when libc-opt package has been installed. + # When a /etc/ld.so.nohwcap file exists, ld.so only use libraries + # from /lib, and ignore all optimised libraries. This file is + # inconditionaly created in the preinst script of libc. + + # Get the list of optimized packages for a given architecture + # Before removing a package from this list, make sure it appears + # in the Conflicts: line of libc. + case $(dpkg --print-architecture) in + alpha) + hwcappkgs="libc6-alphaev67" + ;; + i386) + hwcappkgs="libc6-i686 libc6-xen" + ;; + kfreebsd-i386) + hwcappkgs="libc0.1-i686" + ;; + mipsel) + hwcappkgs="libc6-loongson2f" + ;; + sparc) + hwcappkgs="libc6-sparcv9 libc6-sparcv9b libc6-sparcv9v libc6-sparcv9v2 libc6-sparc64b libc6-sparc64v libc6-sparc64v2" + ;; + esac + + # We check the version between the current installed libc and + # all optimized packages (on architectures where such packages + # exists). + all_upgraded=yes + if [ -n "$hwcappkgs" ]; then + for pkg in $hwcappkgs ; do + ver=$(dpkg-query -l $pkg 2>/dev/null | sed -e '/^[a-z][a-z]\s/!d;/^.[nc]/d;' -e "s/^..\s\+$pkg\s\+//;s/\s.*//g") + if [ -n "$ver" ] && [ "$ver" != "CURRENT_VER" ]; then + all_upgraded=no + fi + done + fi + + # If the versions of all optimized packages are the same as the libc + # one, we could remove /etc/ld.so.nohwcap. Otherwise, it will be removed + # when all optimized packages are upgraded or removed. + if [ "$all_upgraded" = yes ] ; then + rm -f /etc/ld.so.nohwcap + fi --- eglibc-2.13.orig/debian/script.in/nsscheck.sh +++ eglibc-2.13/debian/script.in/nsscheck.sh @@ -0,0 +1,36 @@ + echo -n "Checking for services that may need to be restarted..." + # Only get the ones that are installed, and configured + check=$(dpkg -s $check 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}') + # some init scripts don't match the package names + check=$(echo $check | \ + sed -e's/\bapache2.2-common\b/apache2/g' \ + -e's/\bat\b/atd/g' \ + -e's/\bdovecot-common\b/dovecot/g' \ + -e's/\bexim4-base\b/exim4/g' \ + -e's/\blpr\b/lpd/g' \ + -e's/\blpr-ppd\b/lpd-ppd/g' \ + -e's/\bmysql-server\b/mysql/g' \ + -e's/\bsasl2-bin\b/saslauthd/g' \ + ) + echo + echo "Checking init scripts..." + rl=$(runlevel | sed 's/.*\ //') + for service in $check; do + if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + invoke-rc.d ${service} status >/dev/null 2>/dev/null && status=0 || status=$? + if [ "$status" = "0" ] || [ "$status" = "2" ] ; then + services="$service $services" + elif [ "$status" = "100" ] ; then + echo "WARNING: init script for $service not found." + fi + else + if [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then + idl=$(filerc $rl $service) + else + idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1) + fi + if [ -n "$idl" ] && [ -x $idl ]; then + services="$service $services" + fi + fi + done --- eglibc-2.13.orig/debian/rules.d/control.mk +++ eglibc-2.13/debian/rules.d/control.mk @@ -0,0 +1,47 @@ +control_deps := $(addprefix debian/control.in/, libc6 libc6.1 libc0.1 libc0.3 sparc64 s390 s390x powerpc ppc64 opt amd64 mipsn32 mips64) + +debian/control.in/libc6: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc6%g' \ + -e 's%@archs@%amd64 arm armeb armel armhf i386 m32r m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x hppa sh3 sh4 sh3eb sh4eb%g' < $< > $@ + +debian/control.in/libc6.1: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc6.1%g;s%@archs@%alpha ia64%g' < $< > $@ + +debian/control.in/libc0.3: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc0.3%g;s%@archs@%hurd-i386%g;s/nscd, //' < $< > $@ + +debian/control.in/libc0.1: debian/control.in/libc debian/rules.d/control.mk + sed -e 's%@libc@%libc0.1%g;s%@archs@%kfreebsd-i386 kfreebsd-amd64%g' < $< > $@ + +debian/control: $(stamp)control +$(stamp)control: debian/control.in/main $(control_deps) \ + debian/rules.d/control.mk + + # Check that all files end with a new line + set -e ; for i in debian/control.in/* ; do \ + tail -n1 $$i | grep -q "^$$" ; \ + done + + cat debian/control.in/main > $@T + cat debian/control.in/libc6 >> $@T + cat debian/control.in/libc6.1 >> $@T + cat debian/control.in/libc0.3 >> $@T + cat debian/control.in/libc0.1 >> $@T + cat debian/control.in/i386 >> $@T + cat debian/control.in/sparc64 >> $@T + cat debian/control.in/s390 >> $@T + cat debian/control.in/s390x >> $@T + cat debian/control.in/amd64 >> $@T + cat debian/control.in/powerpc >> $@T + cat debian/control.in/ppc64 >> $@T + cat debian/control.in/mipsn32 >> $@T + cat debian/control.in/mips64 >> $@T + cat debian/control.in/armhf >> $@T + cat debian/control.in/armel >> $@T + cat debian/control.in/kfreebsd-i386 >> $@T + cat debian/control.in/opt >> $@T + cat debian/control.in/libnss-dns-udeb >> $@T + cat debian/control.in/libnss-files-udeb >> $@T + sed -e 's%@libc@%$(libc)%g' < $@T > debian/control + rm $@T + touch $@ --- eglibc-2.13.orig/debian/rules.d/quilt.mk +++ eglibc-2.13/debian/rules.d/quilt.mk @@ -0,0 +1,53 @@ +# Implements the patch and unpatch targets, called when building packages. + +# -*- Makefile -*-, you silly Emacs! +# vim: set ft=make: + +DEBQUILTRC = debian/quiltrc +QUILTOPT = --quiltrc $(DEBQUILTRC) +QUILT = quilt $(QUILTOPT) + +patch: $(stamp)patch +$(stamp)patch: +ifneq ($(PATCHED_SOURCES),yes) + @if $(QUILT) next >/dev/null 2>&1; then \ + echo "Applying patches... "; \ + $(QUILT) push -a -v ; \ + fi + @if test -r debian/patches/series.$(DEB_HOST_ARCH); then \ + pc=".pc.$(DEB_HOST_ARCH)"; \ + mkdir -p "$$pc"; \ + ln -sf ../debian/patches/series.$(DEB_HOST_ARCH) $$pc/series; \ + QUILT_PC="$$pc" $(QUILT) upgrade || true; \ + if QUILT_PC="$$pc" $(QUILT) next >/dev/null 2>&1; then \ + echo "Applying architecture specific patches... "; \ + QUILT_PC="$$pc" $(QUILT) push -a -v ; \ + fi ; \ + fi +endif + touch $@ + +unpatch: + @if test -r debian/patches/series.$(DEB_HOST_ARCH); then \ + pc=".pc.$(DEB_HOST_ARCH)"; \ + QUILT_PC="$$pc" $(QUILT) upgrade || true; \ + if QUILT_PC="$$pc" $(QUILT) previous >/dev/null 2>&1; then \ + echo "Unapplying architecture specific patches..."; \ + QUILT_PC="$$pc" $(QUILT) pop -a -v ; \ + fi ; \ + rm -rf $$pc ; \ + fi + @if $(QUILT) previous >/dev/null 2>&1; then \ + echo "Unapplying patches..." ; \ + $(QUILT) pop -a -v ; \ + fi ; \ + rm -rf .pc + rm -f $(stamp)patch + +refresh: unpatch + @while $(QUILT) next ; do \ + $(QUILT) push ; \ + $(QUILT) refresh ; \ + done ; \ + $(QUILT) pop -a + --- eglibc-2.13.orig/debian/rules.d/build.mk +++ eglibc-2.13/debian/rules.d/build.mk @@ -0,0 +1,274 @@ +# Because variables can be masked at anypoint by declaring +# PASS_VAR, we need to call all variables as $(call xx,VAR) +# This little bit of magic makes it possible: +xx=$(if $($(curpass)_$(1)),$($(curpass)_$(1)),$($(1))) + +# We want to log output to a logfile but we also need to preserve the +# return code of the command being run. +# This little bit of magic makes it possible: +# $(call logme, [-a] , ) +define logme +(exec 3>&1; exit `( ( ( $(2) ) 2>&1 3>&-; echo $$? >&4) | tee $(1) >&3) 4>&1`) +endef + +ifeq ($(DEB_STAGE),stage1) + libc_extra_config_options = $(extra_config_options) --disable-sanity-checks \ + --enable-hacker-mode +endif +ifdef WITH_SYSROOT + libc_extra_config_options += --with-headers=$(WITH_SYSROOT)/$(includedir) +endif + +$(patsubst %,mkbuilddir_%,$(EGLIBC_PASSES)) :: mkbuilddir_% : $(stamp)mkbuilddir_% +$(stamp)mkbuilddir_%: $(stamp)patch $(KERNEL_HEADER_DIR) + @echo Making builddir for $(curpass) + test -d $(DEB_BUILDDIR) || mkdir -p $(DEB_BUILDDIR) + touch $@ + +$(patsubst %,configure_%,$(EGLIBC_PASSES)) :: configure_% : $(stamp)configure_% +$(stamp)configure_%: $(stamp)mkbuilddir_% + @echo Configuring $(curpass) + rm -f $(DEB_BUILDDIR)/configparms + echo "CC = $(call xx,CC)" >> $(DEB_BUILDDIR)/configparms + echo "CXX = $(call xx,CXX)" >> $(DEB_BUILDDIR)/configparms + echo "BUILD_CC = $(BUILD_CC)" >> $(DEB_BUILDDIR)/configparms + echo "BUILD_CXX = $(BUILD_CXX)" >> $(DEB_BUILDDIR)/configparms + echo "CFLAGS = $(HOST_CFLAGS)" >> $(DEB_BUILDDIR)/configparms + echo "ASFLAGS = $(HOST_CFLAGS)" >> $(DEB_BUILDDIR)/configparms + echo "BUILD_CFLAGS = $(BUILD_CFLAGS)" >> $(DEB_BUILDDIR)/configparms + echo "LDFLAGS = " >> $(DEB_BUILDDIR)/configparms + echo "BASH := /bin/bash" >> $(DEB_BUILDDIR)/configparms + echo "KSH := /bin/bash" >> $(DEB_BUILDDIR)/configparms + echo "SHELL := /bin/bash" >> $(DEB_BUILDDIR)/configparms + echo "LIBGD = no" >> $(DEB_BUILDDIR)/configparms + echo "have-fpie = $(fpie)" >> $(DEB_BUILDDIR)/configparms + echo "bindir = $(bindir)" >> $(DEB_BUILDDIR)/configparms + echo "datadir = $(datadir)" >> $(DEB_BUILDDIR)/configparms + echo "localedir = $(localedir)" >> $(DEB_BUILDDIR)/configparms + echo "sysconfdir = $(sysconfdir)" >> $(DEB_BUILDDIR)/configparms + echo "libexecdir = $(libexecdir)" >> $(DEB_BUILDDIR)/configparms + echo "rootsbindir = $(rootsbindir)" >> $(DEB_BUILDDIR)/configparms + echo "includedir = $(call xx,includedir)" >> $(DEB_BUILDDIR)/configparms + echo "docdir = $(docdir)" >> $(DEB_BUILDDIR)/configparms + echo "mandir = $(mandir)" >> $(DEB_BUILDDIR)/configparms + echo "sbindir = $(sbindir)" >> $(DEB_BUILDDIR)/configparms + echo "libdir = $(call xx,libdir)" >> $(DEB_BUILDDIR)/configparms + echo "slibdir = $(call xx,slibdir)" >> $(DEB_BUILDDIR)/configparms + echo "rtlddir = $(call xx,rtlddir)" >> $(DEB_BUILDDIR)/configparms + + # Prevent autoconf from running unexpectedly by setting it to false. + # Also explicitly pass CC down - this is needed to get -m64 on + # Sparc, et cetera. + + configure_build=$(call xx,configure_build); \ + if [ $(call xx,configure_target) = $$configure_build ]; then \ + echo "Checking that we're running at least kernel version: $(call xx,MIN_KERNEL_SUPPORTED)"; \ + if ! $(call kernel_check,$(call xx,MIN_KERNEL_SUPPORTED)); then \ + configure_build=`echo $$configure_build | sed 's/^\([^-]*\)-\([^-]*\)$$/\1-dummy-\2/'`; \ + echo "No. Forcing cross-compile by setting build to $$configure_build."; \ + fi; \ + fi; \ + $(call logme, -a $(log_build), echo -n "Build started: " ; date --rfc-2822 ; echo "---------------") ; \ + $(call logme, -a $(log_build), \ + cd $(DEB_BUILDDIR) && \ + CC="$(call xx,CC)" \ + CXX="$(call xx,CXX)" \ + AUTOCONF=false \ + $(CURDIR)/configure \ + --host=$(call xx,configure_target) \ + --build=$$configure_build --prefix=/usr --without-cvs \ + --enable-add-ons=$(standard-add-ons)"$(call xx,add-ons)" \ + --enable-profile \ + --without-selinux \ + --enable-stackguard-randomization \ + --with-pkgversion="Ubuntu EGLIBC $(DEB_VERSION)" \ + --with-bugurl="http://www.debian.org/Bugs/" \ + $(call xx,with_headers) $(call xx,extra_config_options)) + touch $@ + +$(patsubst %,build_%,$(EGLIBC_PASSES)) :: build_% : $(stamp)build_% +$(stamp)build_%: $(stamp)configure_% + @echo Building $(curpass) + +ifeq ($(DEB_STAGE),stage1) + $(MAKE) cross-compiling=yes -C $(DEB_BUILDDIR) $(NJOBS) csu/subdir_lib +else + $(call logme, -a $(log_build), $(MAKE) -C $(DEB_BUILDDIR) $(NJOBS)) + $(call logme, -a $(log_build), echo "---------------" ; echo -n "Build ended: " ; date --rfc-2822) + if [ $(curpass) = libc ]; then \ + I18NPATH=$(CURDIR)/localedata GCONV_PATH=$(DEB_BUILDDIR)/iconvdata localedef --quiet -c -f UTF-8 -i C $(CURDIR)/build-tree/C.UTF-8 ; \ + fi + if [ $(curpass) = libc ]; then \ + $(MAKE) -C $(DEB_BUILDDIR) $(NJOBS) \ + objdir=$(DEB_BUILDDIR) install_root=$(CURDIR)/build-tree/locales-all \ + localedata/install-locales; \ + sync; \ + cd $(CURDIR)/build-tree/locales-all/usr/lib/locale ; \ + fdupes -1 -H -q -R . | while read line ; do \ + set -- $${line} ; \ + tgt="$${1##./}" ; \ + shift ; \ + while [ "$$#" != 0 ] ; do \ + link="$${1##./}" ; \ + reltgt="$$(echo $$link | sed -e 's,[^/]\+$$,,g' -e 's,[^/]\+,..,g')$${tgt}" ; \ + ln -sf $${reltgt} $${link} ; \ + shift ; \ + done ; \ + done ; \ + fi +endif + touch $@ + +$(patsubst %,check_%,$(EGLIBC_PASSES)) :: check_% : $(stamp)check_% +$(stamp)check_%: $(stamp)build_% + @set -e ; \ + if [ -n "$(findstring nocheck,$(DEB_BUILD_OPTIONS))" ]; then \ + echo "Tests have been disabled via DEB_BUILD_OPTIONS." | tee $(log_results) ; \ + elif [ $(call xx,configure_build) != $(call xx,configure_target) ] && \ + ! $(DEB_BUILDDIR)/elf/ld.so $(DEB_BUILDDIR)/libc.so >/dev/null 2>&1 ; then \ + echo "Flavour cross-compiled, tests have been skipped." | tee $(log_results) ; \ + elif ! $(call kernel_check,$(call xx,MIN_KERNEL_SUPPORTED)); then \ + echo "Kernel too old, tests have been skipped." | tee $(log_results) ; \ + elif [ $(call xx,RUN_TESTSUITE) != "yes" ]; then \ + echo "Testsuite disabled for $(curpass), skipping tests."; \ + echo "Tests have been disabled." > $(log_results) ; \ + else \ + echo Testing $(curpass) / $(log_results); \ + find $(DEB_BUILDDIR) -name '*.out' -exec rm {} ';' ; \ + LANG="" TIMEOUTFACTOR="50" $(MAKE) -C $(DEB_BUILDDIR) -k check 2>&1 | tee $(log_test); \ + chmod +x debian/testsuite-checking/convertlog.sh ; \ + debian/testsuite-checking/convertlog.sh $(log_test) | tee $(log_results) ; \ + if test -f $(log_expected) ; then \ + echo "***************" ; \ + chmod +x debian/testsuite-checking/compare.sh ; \ + debian/testsuite-checking/compare.sh $(log_expected) $(log_results) ; \ + echo "***************" ; \ + else \ + echo "*** WARNING ***" ; \ + echo "Please generate expected testsuite results for this arch ($(log_expected))!" ; \ + echo "*** WARNING ***" ; \ + fi ; \ + fi + @n=$$(grep '^make.* Error' $(log_test) | wc -l || true); \ + echo "TEST SUMMARY $(log_test) ($$n matching lines)"; \ + grep '^make.* Error' $(log_test) || true; \ + echo "END TEST SUMMARY $(log_test)" + touch $@ + +$(patsubst %,install_%,$(EGLIBC_PASSES)) :: install_% : $(stamp)install_% +$(stamp)install_%: $(stamp)check_% + @echo Installing $(curpass) + rm -rf $(CURDIR)/debian/tmp-$(curpass) + +ifeq ($(DEB_STAGE),stage1) + $(call logme, -a $(log_build), $(MAKE) -C $(DEB_BUILDDIR) $(NJOBS) \ + cross-compiling=yes install_root=$(CURDIR)/debian/tmp-$(curpass) \ + install-bootstrap-headers=yes install-headers ) + + install -d $(CURDIR)/debian/tmp-$(curpass)/lib + install -m 644 $(DEB_BUILDDIR)/csu/crt[1in].o $(CURDIR)/debian/tmp-$(curpass)/lib + ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \ + -o $(CURDIR)/debian/tmp-$(curpass)/lib/libc.so +else + $(MAKE) -C $(DEB_BUILDDIR) \ + install_root=$(CURDIR)/debian/tmp-$(curpass) install + + # Generate gconv-modules.cache + case $(curpass)-$(call xx,slibdir) in libc-* | *-/lib32 | *-/lib64) \ + /usr/sbin/iconvconfig --nostdlib --prefix=$(CURDIR)/debian/tmp-$(curpass) \ + -o $(CURDIR)/debian/tmp-$(curpass)/$(call xx,libdir)/gconv/gconv-modules.cache \ + $(call xx,libdir)/gconv \ + ;; \ + esac + + # Generate the list of SUPPORTED locales + if [ $(curpass) = libc ]; then \ + $(MAKE) -f debian/generate-supported.mk IN=localedata/SUPPORTED \ + OUT=debian/tmp-$(curpass)/usr/share/i18n/SUPPORTED; \ + (cd $(DEB_SRCDIR)/manual && texi2html -split_chapter libc.texinfo); \ + fi + + # Create the multiarch directories, and the configuration file in /etc/ld.so.conf.d + if [ $(curpass) = libc ]; then \ + mkdir -p debian/tmp-$(curpass)/etc/ld.so.conf.d; \ + conffile="debian/tmp-$(curpass)/etc/ld.so.conf.d/$(DEB_HOST_GNU_TYPE).conf"; \ + echo "# Multiarch support" > $$conffile; \ + echo "$(call xx,slibdir)" >> $$conffile; \ + echo "$(call xx,libdir)" >> $$conffile; \ + if [ "$(DEB_HOST_GNU_TYPE)" != "$(DEB_HOST_MULTIARCH)" ]; then \ + echo "/lib/$(DEB_HOST_GNU_TYPE)" >> $$conffile; \ + echo "/usr/lib/$(DEB_HOST_GNU_TYPE)" >> $$conffile; \ + fi; \ + mkdir -p debian/tmp-$(curpass)/usr/include/$(DEB_HOST_MULTIARCH); \ + mv debian/tmp-$(curpass)/usr/include/bits debian/tmp-$(curpass)/usr/include/$(DEB_HOST_MULTIARCH); \ + mv debian/tmp-$(curpass)/usr/include/gnu debian/tmp-$(curpass)/usr/include/$(DEB_HOST_MULTIARCH); \ + mv debian/tmp-$(curpass)/usr/include/sys debian/tmp-$(curpass)/usr/include/$(DEB_HOST_MULTIARCH); \ + mv debian/tmp-$(curpass)/usr/include/fpu_control.h debian/tmp-$(curpass)/usr/include/$(DEB_HOST_MULTIARCH); \ + fi + + # For our biarch libc, add an ld.so.conf.d configuration; this + # is needed because multiarch libc Replaces: libc6-i386 for ld.so, and + # the multiarch ld.so doesn't look at the (non-standard) /lib32, so we + # need path compatibility when biarch and multiarch packages are both + # installed. + case $(call xx,slibdir) in /lib32 | /lib64) \ + mkdir -p debian/tmp-$(curpass)/etc/ld.so.conf.d; \ + conffile="debian/tmp-$(curpass)/etc/ld.so.conf.d/biarch-compat.conf"; \ + echo "# Legacy biarch compatibility support" > $$conffile; \ + echo "$(call xx,slibdir)" >> $$conffile; \ + echo "$(call xx,libdir)" >> $$conffile; \ + ;; \ + esac + # just for the debhelper script, not yet functional + case $(call xx,slibdir) in /lib/arm-linux-gnueabi*) \ + mkdir -p debian/tmp-$(curpass)/etc/ld.so.conf.d; \ + esac + + # handle the non-default multilib for arm targets + case $(curpass) in arm*) \ + mkdir -p debian/tmp-$(curpass)/etc/ld.so.conf.d; \ + conffile="debian/tmp-$(curpass)/etc/ld.so.conf.d/$$(basename $(call xx,slibdir)).conf"; \ + echo "# Multiarch support" > $$conffile; \ + echo "$(call xx,slibdir)" >> $$conffile; \ + echo "$(call xx,libdir)" >> $$conffile; \ + esac + + # ARM: add dynamic linker name for the non-default multilib in ldd + if [ $(curpass) = libc ]; then \ + case $(DEB_HOST_ARCH) in \ + armel) \ + sed -i '/RTLDLIST=/s,=\(.*\),="\1 /lib/arm-linux-gnueabihf/ld-linux.so.3",' debian/tmp-$(curpass)/usr/bin/ldd;; \ + armhf) \ + sed -i '/RTLDLIST=/s,=\(.*\),="\1 /lib/ld-linux.so.3",' debian/tmp-$(curpass)/usr/bin/ldd;; \ + esac; \ + fi + + # Create the ld.so symlink to the multiarch directory + if [ $(curpass) = libc ]; then \ + rtld_so="$$(LANG=C LC_ALL=C readelf -l debian/tmp-$(curpass)/usr/bin/iconv | grep 'interpreter' | sed -e 's/.*interpreter: \(.*\)]/\1/g')" ; \ + rtld_so="$$(basename $$rtld_so)" ; \ + link_name="debian/tmp-$(curpass)/lib/$$rtld_so" ; \ + target="$(call xx,slibdir)/$$(readlink debian/tmp-$(curpass)/$(call xx,slibdir)/$$rtld_so)" ; \ + ln -s $$target $$link_name ; \ + fi + + $(call xx,extra_install) +endif + touch $@ + +$(stamp)doc: $(stamp)patch + make -C $(CURDIR)/linuxthreads/man + touch $@ + +$(stamp)source: $(stamp)patch + mkdir -p $(build-tree) + tar -c -J -C .. \ + -f $(build-tree)/eglibc-$(EGLIBC_VERSION).tar.xz \ + $(EGLIBC_SOURCES) + mkdir -p debian/eglibc-source/usr/src/glibc + tar cf - --files-from debian/eglibc-source.filelist \ + | tar -x -C debian/eglibc-source/usr/src/glibc -f - + + touch $@ + +.NOTPARALLEL: $(patsubst %,check_%,$(EGLIBC_PASSES)) --- eglibc-2.13.orig/debian/rules.d/tarball.mk +++ eglibc-2.13/debian/rules.d/tarball.mk @@ -0,0 +1,29 @@ +EGLIBC_SVN = svn://svn.eglibc.org +EGLIBC_BRANCH = branches/eglibc-$(shell echo $(EGLIBC_VERSION) | sed -e 's/\([0-9]\+\)\.\([0-9]\+\).*/\1_\2/') +EGLIBC_BRANCH = branches/eglibc-2_13 +EGLIBC_REVISION = 12879 +EGLIBC_CHECKOUT = eglibc-checkout +EGLIBC_DIR = eglibc-$(EGLIBC_VERSION) +DEB_ORIG = ../eglibc_$(EGLIBC_VERSION).orig.tar.gz +DEB_ORIG_REVISION = $(shell cat .svn-revision 2> /dev/null) +SVN_UPDATES_DIFF = debian/patches/svn-updates.diff + +get-orig-source: $(DEB_ORIG) +$(DEB_ORIG): + dh_testdir + svn co $(EGLIBC_SVN)/$(EGLIBC_BRANCH)@$(EGLIBC_REVISION) $(EGLIBC_CHECKOUT) + svn export $(EGLIBC_CHECKOUT)/libc $(EGLIBC_DIR) + svn export $(EGLIBC_CHECKOUT)/linuxthreads/linuxthreads $(EGLIBC_DIR)/linuxthreads + svn export $(EGLIBC_CHECKOUT)/linuxthreads/linuxthreads_db $(EGLIBC_DIR)/linuxthreads_db + svn export $(EGLIBC_CHECKOUT)/ports $(EGLIBC_DIR)/ports + svn status -v $(EGLIBC_CHECKOUT)/libc/ChangeLog | sed '1,1s/^ \+\([0-9]\+\).*/\1/g' > $(EGLIBC_DIR)/.svn-revision + tar -zcf $(DEB_ORIG) $(EGLIBC_DIR) + rm -rf $(EGLIBC_DIR) $(EGLIBC_CHECKOUT) + +update-from-upstream-svn: + dh_testdir + test -n "$(DEB_ORIG_REVISION)" + echo "SVN update of $(EGLIBC_SVN)/$(EGLIBC_BRANCH) from revision $(DEB_ORIG_REVISION)" > $(SVN_UPDATES_DIFF) + echo "" >> $(SVN_UPDATES_DIFF) + svn diff -r$(DEB_ORIG_REVISION) $(EGLIBC_SVN)/$(EGLIBC_BRANCH)/libc | filterdiff --addoldprefix=a/ --addnewprefix=b/ >> $(SVN_UPDATES_DIFF) + svn diff -r$(DEB_ORIG_REVISION) $(EGLIBC_SVN)/$(EGLIBC_BRANCH)/ports | filterdiff --addoldprefix=a/ports/ --addnewprefix=b/ports/ >> $(SVN_UPDATES_DIFF) --- eglibc-2.13.orig/debian/rules.d/debhelper.mk +++ eglibc-2.13/debian/rules.d/debhelper.mk @@ -0,0 +1,295 @@ +# This is so horribly wrong. libc-pic does a whole pile of gratuitous +# renames. There's very little we can do for now. Maybe after +# Sarge releases we can consider breaking packages, but certainly not now. + +$(stamp)binaryinst_$(libc)-pic:: debhelper + @echo Running special kludge for $(libc)-pic + dh_testroot + dh_installdirs -p$(curpass) + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libc_pic.a debian/$(libc)-pic/$(libdir)/. + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libc.map debian/$(libc)-pic/$(libdir)/libc_pic.map + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/elf/soinit.os debian/$(libc)-pic/$(libdir)/libc_pic/soinit.o + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/elf/sofini.os debian/$(libc)-pic/$(libdir)/libc_pic/sofini.o + + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/math/libm_pic.a debian/$(libc)-pic/$(libdir)/. + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libm.map debian/$(libc)-pic/$(libdir)/libm_pic.map + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/resolv/libresolv_pic.a debian/$(libc)-pic/$(libdir)/. + install --mode=0644 build-tree/$(DEB_HOST_ARCH)-libc/libresolv.map debian/$(libc)-pic/$(libdir)/libresolv_pic.map + +# Some per-package extra files to install. +define libc-bin_extra_debhelper_pkg_install + # dh_installmanpages thinks that .so is a language. + install --mode=0644 debian/local/manpages/ld.so.8 debian/libc-bin/usr/share/man/man8/ld.so.8 +endef + +# Should each of these have per-package options? + +$(patsubst %,binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES) $(DEB_INDEP_REGULAR_PACKAGES)) :: binaryinst_% : $(stamp)binaryinst_% + +# Make sure the debug packages are built last, since other packages may add +# files to them. +debug-packages = $(filter %-dbg,$(DEB_ARCH_REGULAR_PACKAGES)) +non-debug-packages = $(filter-out %-dbg,$(DEB_ARCH_REGULAR_PACKAGES)) +$(patsubst %,$(stamp)binaryinst_%,$(debug-packages)):: $(patsubst %,$(stamp)binaryinst_%,$(non-debug-packages)) + +$(patsubst %,$(stamp)binaryinst_%,$(DEB_ARCH_REGULAR_PACKAGES) $(DEB_INDEP_REGULAR_PACKAGES)):: $(patsubst %,$(stamp)install_%,$(EGLIBC_PASSES)) debhelper + @echo Running debhelper for $(curpass) + dh_testroot + dh_installdirs -p$(curpass) + dh_install -p$(curpass) $(if $(filter $(curpass),libc6-i386 libc6-powerpc),debian/tmp-$(patsubst libc6-%,%,$(curpass))/etc/ld.so.conf.d /etc) + dh_installman -p$(curpass) + dh_installinfo -p$(curpass) + dh_installdebconf -p$(curpass) + if [ $(curpass) = glibc-doc ] ; then \ + dh_installchangelogs -p$(curpass) ; \ + else \ + dh_installchangelogs -p$(curpass) debian/changelog.upstream ; \ + fi + dh_installinit -p$(curpass) + dh_installdocs -p$(curpass) + dh_lintian -p $(curpass) + dh_link -p$(curpass) + dh_bugfiles -p$(curpass) + + set -ex; case $(curpass) in libc-bin) \ + mv debian/$(curpass)/sbin/ldconfig \ + debian/$(curpass)/sbin/ldconfig.real; \ + install -m755 -o0 -g0 debian/local/ldconfig_wrap \ + debian/$(curpass)/sbin/ldconfig; \ + ;; esac + + # extra_debhelper_pkg_install is used for debhelper.mk only. + # when you want to install extra packages, use extra_pkg_install. + $(call xx,extra_debhelper_pkg_install) + $(call xx,extra_pkg_install) + +ifeq ($(filter nostrip,$(DEB_BUILD_OPTIONS)),) + # libpthread must be stripped specially; GDB needs the + # non-dynamic symbol table in order to load the thread + # debugging library. We keep a full copy of the symbol + # table in libc6-dbg but basic thread debugging should + # work even without that package installed. + + # strip *.o files as dh_strip does not (yet?) do it. + + if test "$(NOSTRIP_$(curpass))" != 1; then \ + dh_strip -p$(curpass) -Xlibpthread --dbg-package=$(libc)-dbg; \ + \ + (cd debian/$(curpass); \ + find . -name libpthread-\*.so -exec objcopy \ + --only-keep-debug '{}' ../$(libc)-dbg/usr/lib/debug/'{}' \ + ';' || true; \ + find . -name libpthread-\*.so -exec objcopy \ + --add-gnu-debuglink=../$(libc)-dbg/usr/lib/debug/'{}' \ + '{}' ';' || true); \ + find debian/$(curpass) -name libpthread-\*.so -exec \ + strip --strip-debug --remove-section=.comment \ + --remove-section=.note '{}' ';' || true; \ + \ + (cd debian/$(curpass); \ + find . -name \*crt\*.o -exec objcopy \ + --only-keep-debug '{}' ../$(libc)-dbg/usr/lib/debug/'{}' \ + ';' || true; \ + find . -name \*crt\*.o -exec objcopy \ + --add-gnu-debuglink=../$(libc)-dbg/usr/lib/debug/'{}' \ + '{}' ';' || true); \ + find debian/$(curpass) -name \*crt\*.o -exec \ + strip --strip-debug --remove-section=.comment \ + --remove-section=.note '{}' ';' || true; \ + fi +endif + + dh_compress -p$(curpass) + dh_fixperms -p$(curpass) -Xpt_chown + # Use this instead of -X to dh_fixperms so that we can use + # an unescaped regular expression. ld.so must be executable; + # libc.so and NPTL's libpthread.so print useful version + # information when executed. + find debian/$(curpass) -type f \( -regex '.*/ld.*so' \ + -o -regex '.*/libpthread-.*so' \ + -o -regex '.*/libc-.*so' \) \ + -exec chmod a+x '{}' ';' + dh_makeshlibs -X/usr/lib/debug -p$(curpass) -V "$(call xx,shlib_dep)" + # Add relevant udeb: lines in shlibs files + chmod a+x debian/shlibs-add-udebs + ./debian/shlibs-add-udebs $(curpass) + + if [ -f debian/$(curpass).triggers ] ; then \ + install -m 644 -o root -g root debian/$(curpass).triggers \ + debian/$(curpass)/DEBIAN/triggers ; \ + fi + + dh_installdeb -p$(curpass) + dh_shlibdeps -p$(curpass) + dh_gencontrol -p$(curpass) + + if [ $(curpass) = nscd ] ; then \ + sed -i -e "s/\(Depends:.*libc[0-9.]\+\)-[a-z0-9]\+/\1/" debian/nscd/DEBIAN/control ; \ + fi + dh_md5sums -p$(curpass) + + # We adjust the compression format depending on the package: + # - libc*-dbg and locales-all contains highly compressible data + # - other packages use the default gzip format + case $(curpass) in \ + libc*-dbg | locales-all) \ + dh_builddeb -p$(curpass) -- -Zxz -z7 ;; \ + *) \ + dh_builddeb -p$(curpass) ;; \ + esac + + touch $@ + +$(patsubst %,binaryinst_%,$(DEB_UDEB_PACKAGES)) :: binaryinst_% : $(stamp)binaryinst_% +$(patsubst %,$(stamp)binaryinst_%,$(DEB_UDEB_PACKAGES)): debhelper $(patsubst %,$(stamp)install_%,$(EGLIBC_PASSES)) + @echo Running debhelper for $(curpass) + dh_testroot + dh_installdirs -p$(curpass) + dh_install -p$(curpass) + dh_strip -p$(curpass) + + # when you want to install extra packages, use extra_pkg_install. + $(call xx,extra_pkg_install) + + dh_compress -p$(curpass) + dh_fixperms -p$(curpass) + find debian/$(curpass) -type f \( -regex '.*lib[0-9]*/ld.*so.*' \ + -o -regex '.*lib[0-9]*/.*libpthread.*so.*' \ + -o -regex '.*lib[0-9]*/libc[.-].*so.*' \) \ + -exec chmod a+x '{}' ';' + dh_installdeb -p$(curpass) + # dh_shlibdeps -p$(curpass) + dh_gencontrol -p$(curpass) + dh_builddeb -p$(curpass) + + touch $@ + +debhelper: $(stamp)debhelper-common $(patsubst %,$(stamp)debhelper_%,$(EGLIBC_PASSES)) +$(stamp)debhelper-common: + for x in `find debian/debhelper.in -maxdepth 1 -type f`; do \ + y=debian/`basename $$x`; \ + cp $$x $$y; \ + sed -e "s#BUILD-TREE#$(build-tree)#" -i $$y; \ + sed -e "s#LIBC#$(libc)#" -i $$y; \ + sed -e "s#EXIT_CHECK##" -i $$y; \ + sed -e "s#DEB_HOST_ARCH#$(DEB_HOST_ARCH)#" -i $$y; \ + sed -e "/NSS_CHECK/r debian/script.in/nsscheck.sh" -i $$y; \ + sed -e "/NOHWCAP/r debian/script.in/nohwcap.sh" -i $$y; \ + sed -e "s#DEB_SRCDIR#.#" -i $$y; \ + sed -e "s#CURRENT_VER#$(DEB_VERSION)#" -i $$y; \ + case $$y in \ + *.install) \ + sed -e "s/^#.*//" -i $$y ; \ + ;; \ + esac; \ + done + + # Substitute __PROVIDED_LOCALES__. + perl -i -pe 'BEGIN {undef $$/; open(IN, "debian/tmp-libc/usr/share/i18n/SUPPORTED"); $$j=;} s/__PROVIDED_LOCALES__/$$j/g;' debian/locales.config debian/locales.postinst + + # Generate common substvars files. + echo "locale:Depends=$(shell perl debian/debver2localesdep.pl $(LOCALES_DEP_VER))" > tmp.substvars + echo "locale-compat:Depends=$(shell perl debian/debver2localesdep.pl $(LOCALES_COMPAT_VER))" >> tmp.substvars + + for pkg in $(DEB_ARCH_REGULAR_PACKAGES) $(DEB_INDEP_REGULAR_PACKAGES) $(DEB_UDEB_PACKAGES); do \ + cp tmp.substvars debian/$$pkg.substvars; \ + done + rm -f tmp.substvars + + touch $@ + +ifeq ($(DEB_STAGE),stage1) + +$(patsubst %,debhelper_%,$(EGLIBC_PASSES)) :: debhelper_% : $(stamp)debhelper_% +$(stamp)debhelper_%: $(stamp)debhelper-common $(stamp)install_% + libdir=$(call xx,libdir) ; \ + slibdir=$(call xx,slibdir) ; \ + rtlddir=$(call xx,rtlddir) ; \ + curpass=$(curpass) ; \ + templates="libc-dev" ;\ + pass="" ; \ + suffix="" ;\ + for t in $$templates ; do \ + for s in debian/$$t$$pass.* ; do \ + t=`echo $$s | sed -e "s#libc\(.*\)$$pass#$(libc)\1$$suffix#"` ; \ + if [ "$$s" != "$$t" ] ; then \ + cp $$s $$t ; \ + fi ; \ + sed -e "s#TMPDIR#debian/tmp-$$curpass#g" -i $$t; \ + sed -e "s#RTLDDIR#$$rtlddir#g" -i $$t; \ + sed -e "s#SLIBDIR#$$slibdir#g" -i $$t; \ + done ; \ + done + + egrep -v "LIBDIR.*.a " debian/libc6-dev.install >debian/libc6-dev.install- + mv debian/libc6-dev.install- debian/libc6-dev.install + sed -e "s#LIBDIR#lib#g" -i debian/libc6-dev.install +else +$(patsubst %,debhelper_%,$(EGLIBC_PASSES)) :: debhelper_% : $(stamp)debhelper_% +$(stamp)debhelper_%: $(stamp)debhelper-common $(stamp)install_% + libdir=$(call xx,libdir) ; \ + slibdir=$(call xx,slibdir) ; \ + rtlddir=$(call xx,rtlddir) ; \ + curpass=$(curpass) ; \ + rtld_so=`LANG=C LC_ALL=C readelf -l debian/tmp-$$curpass/usr/bin/iconv | grep "interpreter" | sed -e 's/.*interpreter: \(.*\)]/\1/g'`; \ + case "$$curpass:$$slibdir" in \ + libc:*) \ + templates="libc libc-dev libc-pic libc-prof libc-udeb libnss-dns-udeb libnss-files-udeb" \ + pass="" \ + suffix="" \ + ;; \ + *:/lib32 | *:/lib64 | *:/lib/arm-linux-gnueabi*) \ + templates="libc libc-dev" \ + pass="-alt" \ + suffix="-$(curpass)" \ + ;; \ + *:*) \ + templates="libc" \ + pass="-otherbuild" \ + suffix="-$(curpass)" \ + ;; \ + esac ; \ + for t in $$templates ; do \ + for s in debian/$$t$$pass.* ; do \ + t=`echo $$s | sed -e "s#libc\(.*\)$$pass#$(libc)\1$$suffix#"` ; \ + if [ "$$s" != "$$t" ] ; then \ + cp $$s $$t ; \ + fi ; \ + sed -e "s#TMPDIR#debian/tmp-$$curpass#g" -i $$t; \ + sed -e "s#RTLDDIR#$$rtlddir#g" -i $$t; \ + sed -e "s#SLIBDIR#$$slibdir#g" -i $$t; \ + sed -e "s#LIBDIR#$$libdir#g" -i $$t; \ + sed -e "s#FLAVOR#$$curpass#g" -i $$t; \ + sed -e "s#RTLD_SO#$$rtld_so#" -i $$t ; \ + done ; \ + done +endif + + touch $@ + +clean:: + dh_clean + + rm -f debian/*.install* + rm -f debian/*.install.* + rm -f debian/*.manpages + rm -f debian/*.links + rm -f debian/*.postinst + rm -f debian/*.preinst + rm -f debian/*.postinst + rm -f debian/*.prerm + rm -f debian/*.postrm + rm -f debian/*.info + rm -f debian/*.init + rm -f debian/*.config + rm -f debian/*.templates + rm -f debian/*.dirs + rm -f debian/*.docs + rm -f debian/*.doc-base + rm -f debian/*.generated + rm -f debian/*.lintian-overrides + rm -f debian/*.NEWS + rm -f debian/*.README.Debian + rm -f debian/*.triggers + + rm -f $(stamp)binaryinst* --- eglibc-2.13.orig/debian/rules.d/info.mk +++ eglibc-2.13/debian/rules.d/info.mk @@ -0,0 +1,16 @@ +# +# Add here instructions to dump useful debug information +# + +$(stamp)info: + @echo '------------------------------------------------------' + + uname -a + @echo + + if [ -f /proc/cpuinfo ] ; then cat /proc/cpuinfo ; fi + @echo + + @echo '------------------------------------------------------' + + touch $@